Tcpdumpで、マシン宛てのすべての着信IPトラフィックをキャプチャするにはどうすればよいですか?私は地元の交通を気にしません。
私はちょうど言う必要があります:
tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes
...または何かが足りませんか?
Bash Shellでこれを試してください:
tcpdump -i eth0 tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
またはこの同等の公式:
tcpdump -i eth0 ip proto \\tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
私のシステムでは、これは次のようなものに解決されます。
tcpdump -i eth0 tcp and dst Host 10.0.0.35 and not src net 10.0.0.0/24
TCPプロトコルトラフィックだけでなく、宛先ホストへのすべてのトラフィックを表示する場合:
tcpdump -i eth0 dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes
いくつかのメモ:
$myIpAddress/$myNetworkBytes
を$MyNetworkAddress/$myNetworkBytes
に変更しました。これは、ルールの明白な意図がローカルネットワークからのトラフィックを除外することであり、ネットワークアドレスを指定する 正しい方法 がネットワークの最小IPアドレス(ネットワークアドレスと呼ばれる)を指定することであるためです/ネットマスク。ネットマスクが$ myNetworkBytesのネットワークの範囲内の最下位アドレス以外のアドレスを指定すると、エラーメッセージが表示されます。
tcpdump: non-network bits set in "10.0.0.3/24"
最初の例では、 'tcp'はlibpcap式言語(man pcap-filter)のkeywordですが、2番目の例では 'tcp'はip proto
のvalueとして使用されます。 2番目のインスタンスの「tcp」が別の「tcp」キーワードではなく値であることを示すには、「tcp」を二重のバックスラッシュでエスケープする必要があります。 Bashインタープリターがlibpcapインタープリターに単一のバックスラッシュを渡すように、バックスラッシュを二重にする必要があります(Bashは最初のバックスラッシュを食べ、libpcapは2番目を取得します)。二重エスケープの混乱を減らすには、コマンドの式部分全体を二重引用符で囲む習慣:
tcpdump -i eth0 "ip proto \tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"
警告や驚きを避けるために、インターフェース指定子-i eth0
または任意のインターフェースを使用することをお勧めします。すべてのインターフェイスに必ずしもIPアドレスが割り当てられているわけではなく、具体的に指定しなければ、意図しないトラフィックが表示される場合があります。これは、ネットワークマネージャーを実行しているシステムで特に当てはまります。ネットワークマネージャーは、追加するインターフェイスとタイミングについて独自の考えを持っているようです。
上記のいずれも、複数のIPを持つボックスではうまく機能しません。
これは、多くのIPがバインドされているDNSサーバーで非常にうまく機能しました。
tcpdump -l -n -i pub dst port 53 and inbound
ただし、tcpdump
のすべてのバージョンで動作するとは限りません。
# tcpdump -V
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0
-Q direction --direction = directionパケットをキャプチャする送信/受信方向を選択します。可能な値はin',
out 'および `inout'。すべてのプラットフォームで利用できるわけではありません。