web-dev-qa-db-ja.com

httpヘッダーの内容に応じたtcpdumpフィルター

tcpdumpを使用して、squidキャッシュサーバーから返される応答を、キャッシュから返される応答のみにフィルター処理したいと思います。つまり、X-CACHEヘッダー値に従ってフィルタリングする必要があります。値がHITの場合は表示する必要があります。そうでない場合、応答はキャッシュからのものではありません。私のtcpdumpフィルターはどうあるべきか考えていますか?

3
Oded

Tcpdumpの代わりに ngrep を使用することを検討しましたか?

2

それが可能だとは思いません。正しいポート/ IPの組み合わせですべてのトラフィックをキャプチャし、wiresharkなどを使用してフィルタリングできます。

Ngrepを使用することもできます(ネットワークにgrepを考えてください)

このタイプの問題については、私は通常libpcapとRubyを使用して簡単なスクリプトを作成します。その後、必要なパケットのみ、または実際に必要なパケットからの情報のみを記録できます。

Rubyは非常に苦痛がないので、pythonまたは同様のものも簡単です。

1

Tcpdumpは特定のバイトのパケットコンテンツにのみ一致し、パケットで文字列を任意に検索することはできないようです。いくつかのガイダンスについては、これを見てください 高度なフィルターリスト

回避策:tcpdumpパラメーターに-s0 -A -w -(パケット全体、ASCII、標準出力への書き込み)を追加すると、コンテキストを指定してgrepを使用し、X-Cache:HITの場所を示すパケットのみを表示できます。

1
crb