我有 3 个 Linux 虚拟机像这样连接:
/ server1 \
| ens19 2001:1::2 |
\ /
|
/ \
| ens19 2001:1::1 |
| server2 |
| ens20 2001:2::1 |
\ /
|
/ \
| ens19 2001:2::2 |
\ server3 /
我在 server1 上运行这些命令:
ip link set dev ens19 up
ip -6 address add 2001:1::2/96 dev ens19
ip -6 route add default via 2001:1::1
然后这些在server3上:
ip link set dev ens19 up
ip -6 address add 2001:2::2/96 dev ens19
ip -6 route add default via 2001:2::1
然后这些在server2上:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
ip link set dev ens19 up
ip link set dev ens20 up
ip -6 address add 2001:1::1/96 dev ens19
ip -6 address add 2001:2::1/96 dev ens20
如果我尝试从 server1 ping server3,它可以工作:
root@server1:~# ping6 2001:2::2
但是如果我将 server2 上的接口移动到网络命名空间内:
ip netns add net1
ip link set dev ens19 netns net1
ip link set dev ens20 netns net1
ip netns exec net1 ip link set dev ens19 up
ip netns exec net1 ip link set dev ens20 up
ip netns exec net1 ip -6 address add 2001:1::1/96 dev ens19
ip netns exec net1 ip -6 address add 2001:2::1/96 dev ens20
从 server1 到 server3 的 ping 不再有效。不再转发数据包。
为什么?(注意:IPv4 的工作流程相同)