为什么在当前命名空间而不是目标命名空间中创建 veth 对等接口?

为什么在当前命名空间而不是目标命名空间中创建 veth 对等接口?

我输入下面的命令尝试创建一对网络命名空间和一个 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。

相关内容