我正在尝试排除一些问题,需要捕获除 echo/echo reply 之外的所有 ICMP 消息。然而,我苦苦寻找解决方法的问题是,我只想要涉及特定主机的消息。
我一直在尝试的过滤器是 tcpdump icmp and 'icmp[0] != 8 and icmp[0] != 0' and host xxxx 但是这只给出了 xxxx 或 yyyy 主机。我得到的示例但只想得到 zzzz 部分
18:06:07.823692 IP xxxx > yyyy: ICMP 主机 zzzz 不可达,长度 48
有人知道如何实现这一点吗?
答案1
如果我理解正确的话,您希望在 ICMP 响应中过滤z.z.z.z
。假设无法访问的主机的 IP 是z1.z2.z3.z4
,那么您应该host x.x.x.x
在过滤器中用以下过滤器替换icmp[24] == z1 and icmp[25] == z2 and icmp[26] == z3 and icmp[27] == z4
。
如果您只想要 ICMP 目标不可达消息,请考虑使用icmp[icmptype] == icmp-unreach
而不是icmp[0] != 8 and icmp[0] != 0
。