Lor*_*ein 4 networking linux arp ping icmp
我在服务器上静态配置了一个接口的 IP 地址:
ip addr add 10.40.0.6/16 broadcast 10.40.255.255 dev eth1
Run Code Online (Sandbox Code Playgroud)
如果我尝试 ping 网络上的机器(例如 10.40.0.1),它会失败并显示“目标主机无法访问”。
当 ping 运行时,如果我执行以下操作,我根本看不到任何活动
tcpdump -i eth1 icmp
Run Code Online (Sandbox Code Playgroud)
但是,如果我改为监听回送接口:
tcpdump -i lo icmp
Run Code Online (Sandbox Code Playgroud)
然后我看到类似的东西:
16:02:57.369632 IP 10.40.0.6 > 10.40.0.6: ICMP host 10.40.0.1 unreachable, length 92
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么 ICMP 数据包没有通过 eth1 接口显示出来?
编辑:
# ip r ls
10.40.0.0/16 dev eth1 proto kernel scope link src 10.40.0.6
Run Code Online (Sandbox Code Playgroud)
如果您正在 ping 一个不存在的主机,那么 ARP 广播就会失败。Tcpdump 永远不会看到 icmp,因为 eth1 不会发送没有第 2 层目的地的单播 IP 数据包。
尝试这个:
tcpdump -i eth1 arp
Run Code Online (Sandbox Code Playgroud)
您应该会看到 ARP 解析失败。