tcpdump で指定した時間だけ、パケットキャプチャする

tcpdump で指定時間のみ、パケットをキャプチャしたい場合は以下のように実行します。 以下の例では 60 秒間パケットをキャプチャし、指定時間が経過したら自動的に終了します。

1
tcpdump -i ens2 -w capture.pcap -W1 -G60

オプションの意味は以下の通りです。

ショートオプション ロングオプション 意味
-i interface --interface interface パケットキャプチャするインターフェイスを指定する
-w file - キャプチャしたファイルを書き込むファイルを指定する
-W filecount' - キャプチャファイルのローテーション (切り替え) 回数を指定する
-G seconds - キャプチャする秒数を指定する

余談ですが、-W オプションを指定しなくてもキャプチャ自体は開始出来ました。 しかし、指定時間が経過してファイル書き込みを行う際に Permission denied エラーになってしまいます。 ファイル自体は保存されているようですが、エラーが気持ち悪いので個人的には毎回、-W-G オプションを併用しています。

1
2
3
# tcpdump -i ens3 -w sample.pcap -G 60
tcpdump: listening on ens3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
tcpdump: sample.pcap: Permission denied