web-dev-qa-db-ja.com

tcpdumpで着信トラフィックをキャプチャする

Tcpdumpで、マシン宛てのすべての着信IPトラフィックをキャプチャするにはどうすればよいですか?私は地元の交通を気にしません。

私はちょうど言う必要があります:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes

...または何かが足りませんか?

24
Ricky Robinson

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

いくつかのメモ:

  1. $myIpAddress/$myNetworkBytes$MyNetworkAddress/$myNetworkBytesに変更しました。これは、ルールの明白な意図がローカルネットワークからのトラフィックを除外することであり、ネットワークアドレスを指定する 正しい方法 がネットワークの最小IPアドレス(ネットワークアドレスと呼ばれる)を指定することであるためです/ネットマスク。ネットマスクが$ myNetworkBytesのネットワークの範囲内の最下位アドレス以外のアドレスを指定すると、エラーメッセージが表示されます。

    tcpdump: non-network bits set in "10.0.0.3/24"
    
  2. 最初の例では、 'tcp'はlibpcap式言語(man pcap-filter)のkeywordですが、2番目の例では 'tcp'はip protovalueとして使用されます。 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"
    
  3. 警告や驚きを避けるために、インターフェース指定子-i eth0または任意のインターフェースを使用することをお勧めします。すべてのインターフェイスに必ずしもIPアドレスが割り当てられているわけではなく、具体的に指定しなければ、意図しないトラフィックが表示される場合があります。これは、ネットワークマネージャーを実行しているシステムで特に当てはまります。ネットワークマネージャーは、追加するインターフェイスとタイミングについて独自の考えを持っているようです。

23
Eli Rosencruft

上記のいずれも、複数の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
14
krad

-Q direction --direction = directionパケットをキャプチャする送信/受信方向を選択します。可能な値はin',out 'および `inout'。すべてのプラットフォームで利用できるわけではありません。

4
LolMafia