tcpdump でパケットキャプチャを取得する際に、パケットキャプチャファイルのサイズを10分毎など定期的に切り替えたい場合があります。
その際のオプションとポイントを記載しています。
1.パケットキャプチャ条件
下記のような条件でパケットキャプチャを取得する事とします。
- OSはCentOS
- sudo で tcpdumpを実行する。
- ユーザーは「admin」というアカウント名とします。
- パケットキャプチャを取る対象ネットワークは、192.168.0.0/24 とします。
- パケットキャプチャファイルは10分毎に切り替える事とします。
- パケットキャプチャファイル名は日時情報を含ませる事とします。
パケットキャプチャ時は、ファイルサイズが大きくなる傾向がある為、条件を明確に絞れる際には絞ったほうが何かと便利です。
2.tcpdumpコマンド
sudo を使う場合のtcpdumpコマンド例は下記になります。
$ sudo tcpdump -i eth0 net 192.168.0.0 mask 255.255.255.0 -Z admin -G 600 -w /home/admin/tcpdump/logs/tcpdump_%Y%m%d_%H%M%S.cap
これで、指定の場所のパケットキャプチャが出力され、10分毎に切り替わっていきます。
バックグラウンドで起動したい場合は、コマンドの最後に「&」を指定してください。コマンド終了時は、Ctrl+Cか、killコマンドでtcpdumpコマンドを落とします。
3.オプション指定のポイント
ここで「-Z」オプションで実行ユーザーを指定しないと、10分後(-G 600)に、tcpdumpコマンドが「Permission denied」で終了してしまいます。
理由は、tcpdumpをrpmでインストール時に作成される「tcpdump」アカウント(shell権限を持たないアカウント)でtcpdumpコマンドを実行しようとして、ファイル作成の権限がない為に「Permission denied」となる為です。
その対策として、「-Z」オプションで実行ユーザーを指定します。指定するアカウントは「root」でも良いのですが、せっかくsudoで実行しているので、sudo実行ユーザー(この場合はadmin)を指定しています。