根据http头内容进行tcpdump过滤

根据http头内容进行tcpdump过滤

我想使用 tcpdump 将从 squid 缓存服务器返回的响应过滤为仅从缓存返回的响应。这意味着我需要根据 X-CACHE 标头值进行过滤,如果它的值是 HIT,我应该显示它,否则响应不是来自缓存。知道我的 tcpdump 过滤器应该是什么吗?

答案1

您是否考虑过使用ngrep而不是 tcpdump?

答案2

我不相信这是可能的。您可以捕获正确端口/IP 组合上的所有流量,然后使用 wireshark 或类似工具对其进行过滤。

你也可以使用 ngrep(想想你的网络的 grep)

不过,对于这种类型的问题,我通常会使用 libpcap 和 ruby​​ 来编写一个快速脚本。然后,您可以只记录所需的数据包,或者实际上只记录所需的数据包中的信息。

使用 ruby​​ 非常轻松,我相信 python 或类似的语言也很简单。

答案3

tcpdump 似乎只能匹配数据包内容中的特定字节,而不能随意搜索数据包中的字符串。看看这个高级过滤列表寻求一些指导。

一种解决方法:如果您将-s0 -A -w -(显示整个数据包、ASCII、写入标准输出)添加到 tcpdump 参数中,那么您可以使用带有某些上下文的 grep 来仅显示显示 X-Cache:HIT 的数据包。

相关内容