我已经静态配置了服务器上接口的 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 解析失败。