状況はこんな感じです。サーバーのどこかにpingを送信するスクリプトがありますが、どこにいるのかわかりません。私はこのpingがどのコンピュータで行われたのか、そしてなぜ返されたのか知りたいのですFAILED
。
私がしたことは、2番目の端末でpingのスクリプトを開く間に1つの端末でtcpdumpを開くことでしたが、実際のpingがキャプチャされたかどうかはわかりません。
これが私が使用するコマンドです
tcpdump -w - | tee ping.pcap | tcpdump -r -
これは正しい方法ですか、それとも別の方法がありますか?
編集する:
問題は、tcpdumpを起動するとトラフィックが多いため、このpingからどのトラフィックが出てくるのかを識別できないことです。
答え1
努力する:
tcpdump -i eth0 icmp
ping
これにより、インターフェイスのトラフィックが一覧表示されますeth0
。
答え2
tcpdump -n icmp
これを使用して、ping要求と応答をフィルタリングできます。名前の検索を防ぐためにスイッチを追加しました-n
。ホストに複数のインターフェイスがある可能性があるため、-i ethX
正しいインターフェイスを指定するにはスイッチを追加する必要があります。
フィルタ(この場合はicmp)はコマンドの最後の部分でなければなりません。
答え3
unix/linux コマンドを使用する前に、必ずそのコマンドのマニュアルページをお読みください。 tcpdump コマンドにはさまざまなオプションがあります。それらすべてを探検することは非常に興味深いです。
tcpdump コマンドを使用してダンプを取得するには、root アクセスが必要です。
例:
tcpdump -i any -s 0 -v -w ping.pcap
上記のコマンドは、無制限のスナップショットの長さと詳細情報を使用して、利用可能なすべてのイーサネットインターフェイスのすべてのパケットをキャプチャし、キャプチャ結果をping.pcapファイルに書き込みます。
同様に、インラインフィルタを使用して特定のホストのパケットをフィルタリングできます。
例:
tcpdump -i any -s 0 -v -w ping.pcap 135.250.80.55
上記のコマンドは、135.250.80.55から135.250.80.55までのすべてのパケットをキャプチャします。