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 | 生データをそのままファイルに書き込む。WireSharkやEtherealで開くこともできる |
-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)