最後のパケットをキャプチャするための「tcpdump」

最後のパケットをキャプチャするための「tcpdump」

私は特定のポートを監視しています。私のアプリケーションはそのポートを使用しているため、接続がランダムに切断されるようです。接続が切断される前に通過した最後のパケットを確認したいのです。次の行を使用しました。

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

しかし、それを機能させるには別のターミナルを起動して発行する必要があります

sudo killall tcpdump

もっと良い方法はありますか? 編集1: ディスク領域をすぐにいっぱいにするほどのトラフィックがあるため、ファイルが膨らまないように、最後のパケットのみをキャプチャすることが重要です。

答え1

わかった、見つけた解決:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

これにより、出力ファイルは10秒ごとに新しいファイルに切り替わります。tcpamir-<unixtimestamp>.txt

保留中のファイルのサイズが心配な場合は、出力ファイルを変更して、毎日上書きするようにすることもできます。詳細については、 を参照してくださいman 3 strftime

私は次のようなことを考えます

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

%R時刻は 24 時間表記で示されます (例: 12:40) 。

関連する出力ファイルを読む

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

2番目の解決策:

それを複数のコマンドに分割し、スクリプト/関数として保存します。

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

答え2

キャプチャしたすべてのトラフィックを書き込みたい場合は、行に-wを追加して削除するだけです。'| 末尾 >> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Wiresharkでキャプチャを解析する場合、拡張子は.capでなければなりません。キャプチャが完了したことを確認したら、これを次のように強制終了できます。Ctrl + C キー

注: -w [filename.cap] はキャプチャをファイルに書き込む

関連情報