tcpdumpでよく使うオプション

cpdumpコマンドを打つ際によく使うオプションです。

tcpdump

tcpdump -i eth0 -p -nn -X tcp and port 10051 and host 192.168.40.11
よく使うオプション
-i インターフェース指定
-p プロミスキャスモード(無差別モード)をOFF。自分宛のパケットのみ
-nn ポート番号をプロトコル名に変換(80 を http など)しない
-X ヘッダだけでなくパケットの中身も表示(16進数とASCII)
たまに使うオプション
-n アドレスやポート番号を名前に変換しない。DNS lookup の時間短縮
-s キャプチャするサイズを指定。0 だと全て
-w 生データをそのままファイルに書き込む。WireSharkEtherealで開くこともできる
-r -w で保存したファイルを開く
-c 指定した個数のパケットを受信したら終了。ディスク圧迫しないように使う
-A ヘッダだけでなくパケットの中身も表示(ASCII)
-G ファイル書き込みを指定時間間隔で rotate する。-w のファイル名に時間フォーマットを指定
-W -G での rotate の回数を制御する。-W の回数に達すると終了
-U -wで出力する際に、バッファリングせずに出力

例) ファイル吐き出しをする際

tcpdump -i eth0 -p -nn -A -U -w /tmp/tcpdump.txt tcp and port 80


例) ファイル吐き出しをする場合に、ファイルが巨大に1つになってしまうと追いづらいので、15秒間隔で rotate させたい場合。

tcpdump -s0 -A port 80 -G 15 -w /tmp/tcpdump_%Y%m%d_%H%M.cap

例) crontab に仕込んで毎日 12:00 – 13:00 だけパケットキャプチャしたい場合
オプション -G 60 で毎分 rotate させ、-W 60 で 60回 rotate したら、つまり1時間たったら、tcpdump 終了。
ただし、一切書き込みがない場合、ファイル rotate が発生せず、tcpdump が終了しない挙動となるため、念のために kill もしている。

0 12 * * * sudo /usr/sbin/tcpdump -i bond0 -s 512 -A -n -nn -p "tcp port 80" -G 60 -W 60 -w /tmp/tcpdump_%Y%m%d_%H%M.cap >/dev/null 2>&1 & echo $! > /tmp/tcpdump.pid
0 13 * * * sudo kill $(cat /tmp/tcpdump.pid)