我将命名空间添加到我的主机中,并通过以下方法使其可用:
ip netns add h1
ip link add veth01 type veth peer name veth1
ip link set dev veth1 netns h1
ifconfig veth01 10.0.0.1/24 up
ip net e h1 ifconfig veth1 10.0.0.2/24 up
route add -net 10.0.0.0/24 gw 10.0.0.1 dev veth01
ip net e h1 ip r a default via 10.0.0.1现在我可以从我的主机和向后切换10.0.0.2 ( ip net e h1 ping 10.0.0.1 )。
然后,我对第二个命名空间做了同样的操作:
ip netns add h2
ip link add veth02 type veth peer name veth2
ip link set dev veth2 netns h2
ifconfig veth02 20.0.0.1/24 up
ip net e h2 ifconfig veth2 20.0.0.2/24 up
route add -net 20.0.0.0/24 gw 20.0.0.1 dev veth02
ip net e h2 ip r a default via 20.0.0.1现在,我可以从h1 (10.0.0.2)切换10.0.0.1 (和20.0.0.1);可以从主机切换20.0.0.2,但我不能从h1切换20.0.0.2。我做错了什么?
提前感谢
发布于 2014-11-11 13:28:29
答案是网络名称空间是完全独立的。您需要链接这两个名称空间,以便转发来自外部的通信量。有几种方法可以做到这一点。最简单的方法是在两个veth设备之间创建一个桥。
目前,您看到的是,在host-machine中,您可以平两个本地地址(10.0.0.1和20.0.0.2),但只有10.0.0.2知道10.0.0.1的存在。要获得20.0.0.1响应,需要确保您的pings来自同一个网络(20.0.0.0/24,尽管这不是最终的解决方案),或者在名称空间和默认路由表之间存在某种连接。
https://serverfault.com/questions/643491
复制相似问题