我想使用 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 的数据包。