tcpdumpを使用して、squidキャッシュサーバーから返される応答を、キャッシュから返される応答のみにフィルター処理したいと思います。つまり、X-CACHEヘッダー値に従ってフィルタリングする必要があります。値がHITの場合は表示する必要があります。そうでない場合、応答はキャッシュからのものではありません。私のtcpdumpフィルターはどうあるべきか考えていますか?
Tcpdumpの代わりに ngrep を使用することを検討しましたか?
それが可能だとは思いません。正しいポート/ IPの組み合わせですべてのトラフィックをキャプチャし、wiresharkなどを使用してフィルタリングできます。
Ngrepを使用することもできます(ネットワークにgrepを考えてください)
このタイプの問題については、私は通常libpcapとRubyを使用して簡単なスクリプトを作成します。その後、必要なパケットのみ、または実際に必要なパケットからの情報のみを記録できます。
Rubyは非常に苦痛がないので、pythonまたは同様のものも簡単です。
Tcpdumpは特定のバイトのパケットコンテンツにのみ一致し、パケットで文字列を任意に検索することはできないようです。いくつかのガイダンスについては、これを見てください 高度なフィルターリスト 。
回避策:tcpdumpパラメーターに-s0 -A -w -
(パケット全体、ASCII、標準出力への書き込み)を追加すると、コンテキストを指定してgrepを使用し、X-Cache:HITの場所を示すパケットのみを表示できます。