iptablesルールが機能しない

iptablesルールが機能しない

このツールを初めて使用するため、いくつかのテストを実行するためにローカルアドレス(192.168.1.1および)を使用して192.168.1.2Ubuntuを実行する2つのVMがあります。iptables

.2私はマシンがそのインターフェースから入ってくるすべてのパケットをドロップしたいと思います。

上記では、次の規則を作成しました.2iptables -I INPUT 1 -i eth0 -j DROP

iptables -S私に与える

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -j DROP

そしてiptables -L

Chain INPUT(policy ACCEPT)
target  prot  opt   source     destination
DROP    all   --    anywhere   anywhere

ルールが機能していることを確認するために、最初にシステムにpingを送信し、.2すべてのパケットが失われ、これは通常のように見えました。その後、システムで.1次のことを行いました。.1

echo -n "Hello world" > /dev/udp/192.168.1.2/3636

そして.2機械でtcpdump -u -i eth0 port 3636

パケットがキャプチャされた理由を理解できません。私は何を見逃していますか?

iptablesルールによってブロックされたすべてのパケットをキャプチャする方法はありますか?

ベストアンサー1

ネットワークスタックにはいくつかの部分があります。パケットが到着すると、連続したネットワーク層に沿ってこれらの部分を段階的に通過します。TCPダンプこのパスに沿って着信パケットを最初に見ている人の 1 つ、発信パケットを見ている最後の人の 1 つです。

あなたはこれを見ることができます一般ネットワークのNetfilterとパケットフロー回路図を見てみましょう(拡大するにはクリック)。

一般ネットワークのNetfilterとパケットフロー

TCPダンプデフォルトのキャプチャはAF_PACKETで発生し、DROPルールはfilter / INPUTにあります。

これもTCPダンプパケットキャプチャ、iptablesその後も削除されますが、プロセスがそれを受ける機会がある前に削除されます。

次の手順を実行しiptables-save -c、表示されるすべてのパケットを調べてそれを確認できます。TCPダンプ[1:39]ルールを削除する前に、カウンタに増分(追加されたとおり)を取得します。

これで、失われたパケットをキャプチャします。iptables使用できるニューラルネットワークログロギングルールは、まったく同じフィルタを使用するDROPルールの直前にあります(重複を避けるためにユーザー接続を使用できますが、これは単なる例です)。 DROPルールの前にこのルールを挿入できます。

iptables -I INPUT -i eth0 -j NFLOG --nflog-group 10

そしてそれが得るものを捉える:

tcpdump -n -e -i nflog:10

そしてログ:10これは疑似インタフェースです。TCPダンプこれらのログを検索します(選択したグループ10で、可能なすべてのインターフェイスはを使用して見つけることができますtcpdump -D)。-eMACアドレスなどのイーサネット情報はありませんが、イーサネットではなくIPv4であるためです。あなたは他のものを選ぶことができます--nflog-グループ複数のキャプチャを簡単に分離したい場合(ただし、次のものを使用することもできます)TCPダンプ独自のフィルタ)。

おすすめ記事