-A
パケットの内容を ASCII で表示する。HTTP とか SMTP とかのキャプチャに便利。
tcpdump -A port 80
-X
パケットの内容を 16進とASCIIで表示する。あまり使わない。
tcpdump -X port 80
-i interface
インタフェースを指定する。2枚刺しやブリッジとかしている場合は必須。
tcpdump -i eth1 port 80
未指定ならループバックを除いた一番最初のインタフェースのみ。any を指定するとすべてのインタフェース。
tcpdump -i any port 80
-nn
ホスト名やポート番号をそのまま表示する。80 を http とか表示されても逆に判りにくいし。
tcpdump -nn port 80
53 ポートをキャプチャする場合はこれ(または -n
)を指定しておかないと tcpdump による PTR レコードの検索まで tcpdump で拾ってしまいかなりうざいです。
-p
プロミスキャスモードにしない。
tcpdump -p port 80
messages とかに kernel: device eth0 entered promiscuous mode
のようなログが残らなくなります。その代わりそのホスト宛てのパケットしかキャプチャされません。
カーネルログが監視されててもこっそりキャプチャ出来ます。
-w file
キャプチャ結果をファイルに出力する。出力されたファイルは Wireshark で開けます。
tcpdump -w a.cap port 80
-r file
-w
で出力したキャプチャ結果を読み込んで表示する。
とりあえずキャプっといて後で詳細な条件を指定して抽出とかできる。
tcpdump -r a.cap host 192.0.2.123
-s size
キャプチャのバッファサイズを指定する。
tcpdump -w a.cap -s 65535 port 80
デフォルトだと 96 バイトのため -A
や -X
や -w
でも先頭の 96 バイトしかキャプチャされません(CentOS 5 では)。適当に大きなサイズにしておくと良いです。CentOS 6 だとデフォルトで 65535 のようです。
大きくしすぎるとパケットを取りこぼす可能性が高まるようです。