我在 Ubuntu 16.04 中创建了一个 veth 设备对,如下所示:
$ sudo ip link add veth1 type veth peer name veth2
$ sudo ip link set dev veth1 up
$ sudo ip link set dev veth2 up
$ sudo ip address add 10.0.10.50/24 dev veth1
$ sudo ip address add 10.0.10.51/24 dev veth2
veth 设备对在同一个命名空间中。我正在尝试测试从一个 veth 设备到另一个设备的 ping。所以我尝试ping如下:
$ ping -I veth1 10.0.10.51
PING 10.0.10.51 (10.0.10.51) from 10.0.10.50 veth1: 56(84) bytes of data.
From 10.0.10.50 icmp_seq=1 Destination Host Unreachable
From 10.0.10.50 icmp_seq=2 Destination Host Unreachable
From 10.0.10.50 icmp_seq=3 Destination Host Unreachable
当我检查 veth2 的 Wireshark 跟踪时,ARP 请求没有得到任何响应(对于 veth1 也观察到类似的跟踪):
Broadcast ARP 42 Who has 10.0.10.51? Tell 10.0.10.50
我想问为什么 veth2 与 veth1 在同一个命名空间时不能响应 ICMP 请求?
更新:如果我按如下方式尝试 ping,那么我会收到 ICMP 响应,但 wireshark 没有显示 veth1 和 veth2 设备的踪迹。
$ ping -I 10.0.10.50 10.0.10.51
PING 10.0.10.51 (10.0.10.51) from 10.0.10.50 : 56(84) bytes of data.
64 bytes from 10.0.10.51: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 10.0.10.51: icmp_seq=2 ttl=64 time=0.022 ms
有人可以解释两个 ping 测试的结果差异吗?