このツールを初めて使用するため、いくつかのテストを実行するためにローカルアドレス(192.168.1.1
および)を使用して192.168.1.2
Ubuntuを実行する2つのVMがあります。iptables
.2
私はマシンがそのインターフェースから入ってくるすべてのパケットをドロップしたいと思います。
上記では、次の規則を作成しました.2
。iptables -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とパケットフロー回路図を見てみましょう(拡大するにはクリック)。
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
)。-e
MACアドレスなどのイーサネット情報はありませんが、イーサネットではなくIPv4であるためです。あなたは他のものを選ぶことができます--nflog-グループ複数のキャプチャを簡単に分離したい場合(ただし、次のものを使用することもできます)TCPダンプ独自のフィルタ)。