web-dev-qa-db-ja.com

ec2のTcpdumpがすべてのパケットを表示しない

Amazon EC2インスタンスでtcpdumpを実行して、Nginxに向かうHTTPトラフィックを監視しています(これは単なるテストボックスであり、唯一のリソースはサンプルのテストページです)。

コマンドを使用してtcpdumpを実行する

# tcpdump -vn -i any port 80

はブラウザのリクエストからサイトへのパケットを表示しますが、Pythonスクリプト(リクエストライブラリを使用)または手動で作成されたパケット(リクエストライブラリを使用)を使用してページにアクセスすると、nothingを表示しますScapy)。

  • ローカルファイアウォールが実行されておらず、セキュリティグループが適切に設定されています。
  • スクリプトは正しく機能します。ローカルエンドのtcpdumpでトランザクションを簡単にキャプチャでき、ステータス200OKのページが返されます。
  • パケットをファイルに直接保存すること(-w)も違いはなく、バッファリングの問題は除外されます(私は信じますか?)
  • VLAN が問題の原因であるかどうかも確認しようとしましたが、うまくいきませんでした。 「80」をgrepしても、結果は得られません。

質問:

  1. Tcpdumpがこれらの非常に特定のパケットを見逃している原因は何でしょうか間違いなくファイアウォールを通過してNginxに到達し、再び戻ってきますか?
  2. スクリプトから送信されたパケットがすり抜けるのに、Firefoxからのパケットが表示されるのはなぜですか?

ありがとうございました

5
Jordan

「any」の代わりに特定のインターフェースを使用してみてください。その「デバイス」は、無差別モードでは使用できません。 tcpdumpのマンページを参照してください。 http://www.tcpdump.org/manpages/tcpdump.1.html

1
inno

この質問が行われた後にリリースされたテクノロジーは VPC Flow Logs です。これにより、VPC内のネットワークトラフィックを自由にフィルタリングして確認できます。

VPCフローログには、完全なパケットコンテンツは表示されません。送信元、宛先、ポート、プロトコル、サイズ、時間、受け入れや拒否などのアクションなどの基本的なものだけが表示されます。また、EC2インスタンス内で開始および終了するトラフィックも表示されません。

これは問題を解決しないので、これは質問に対する直接の回答ではありません。ただし、同様の問題を解決するための情報を収集する別の方法を提供する場合があります。

1
Tim

おそらくsnaplength

  • -s snaplen
  • --snapshot-length = snaplen

デフォルトの262144バイトではなく、各パケットからのデータのスナップレンバイトをSnarfします。スナップショットが制限されているために切り捨てられたパケットは、出力に `` [| proto] ''で示されます。ここで、protoは、切り捨てが発生したプロトコルレベルの名前です。 スナップショットを大きくすると、パケットの処理にかかる時間が長くなり、事実上、パケットのバッファリングの量が減ります。これにより、パケットが失われる可能性があります。 snaplenを最小数に制限する必要があります。これにより、関心のあるプロトコル情報がキャプチャされます。snaplenを0に設定すると、最近の古いバージョンのtcpdumpとの下位互換性のために、デフォルトの262144に設定されます。

私は通常65535を使用します。

0
Halfgaar