![为什么在当前命名空间而不是目标命名空间中创建 veth 对等接口?](https://linux22.com/image/780824/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E5%BD%93%E5%89%8D%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E8%80%8C%E4%B8%8D%E6%98%AF%E7%9B%AE%E6%A0%87%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E4%B8%AD%E5%88%9B%E5%BB%BA%20veth%20%E5%AF%B9%E7%AD%89%E6%8E%A5%E5%8F%A3%EF%BC%9F.png)
我输入下面的命令尝试创建一对网络命名空间和一个 veth 设备对来连接命名空间。
$ sudo ip netns add netns_br0
$ sudo ip netns add netns_veth0
$ sudo ip link add veth0a netns netns_veth0 type veth peer veth0b netns netns_br0
我尝试启动其中一个设备,但出现错误。
$ sudo ip netns exec netns_veth0 ip link set veth0a up
Cannot find device "veth0a"
我可以看到这些设备不在预期的命名空间内。
$ sudo ip netns exec netns_br0 ip link list
62: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
link/loopback 00:00:00:00:00:00
$ sudo ip netns exec netns_veth0 ip link list
63: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
link/loopback 00:00:00:00:00:00
我可以在我当前的命名空间中看到它们。
$ ip link list
...
64: veth0a: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
link/ether 02:50:f2:0f:35:9a
65: veth0b: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
link/ether 02:50:f2:0f:35:9b
我可以将它们移动到预期的命名空间中。
$ sudo ip link set veth0a netns netns_veth0
$ sudo ip link set veth0b netns netns_br0
现在它们位于其预期的命名空间中。
$ sudo ip netns exec netns_br0 ip link list
62: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
link/loopback 00:00:00:00:00:00
65: veth0b: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
link/ether 02:50:f2:0f:35:9b
$ sudo ip netns exec netns_veth0 ip link list
63: lo: <LOOPBACK,UP> mtu 1500 group default qlen 1
link/loopback 00:00:00:00:00:00
64: veth0a: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
link/ether 02:50:f2:0f:35:9a
为什么第一个命令没有在预期的命名空间中创建它们?
我在 Windows 10 Enterprise 2H12 上使用 Ubuntu 20.04。