在本地网络上 ping 不存在的主机时,接口上的 tcpdump

在本地网络上 ping 不存在的主机时,接口上的 tcpdump

我已经静态配置了服务器上接口的 IP 地址:

ip addr add 10.40.0.6/16 broadcast 10.40.255.255 dev eth1

如果我尝试 ping 网络上的一台机器(例如,10.40.0.1),它会失败并显示“目标主机不可达”。

当 ping 运行时,如果我执行以下操作,则根本看不到任何活动

tcpdump -i eth1 icmp

但是,如果我改为在环回接口上监听:

tcpdump -i lo icmp

然后我看到类似的东西:

16:02:57.369632 IP 10.40.0.6 > 10.40.0.6: ICMP host 10.40.0.1 unreachable, length 92

我的问题是:为什么 ICMP 数据包没有显示通过 eth1 接口发出?

编辑:

# ip r ls
10.40.0.0/16 dev eth1 proto kernel scope link src 10.40.0.6

答案1

如果您正在 ping 一个不存在的主机,那么 ARP 广播就会失败。Tcpdump 永远不会看到 icmp,因为 eth1 不会发送没有第 2 层目的地的单播 IP 数据包。

尝试这个:

tcpdump -i eth1 arp

您应该会看到 ARP 解析失败。

相关内容