在docker Namespace ,网络空间隔离独立的隔离模块,手工创建的veth pair,与程序不是匹配的。
如何让两个网络空间连接
手动创建网络空间与宿主机连接
添加网络空间
ip netns add NameSpace_A # 增加一个网络A空间
ip netns #查看增加的网络空间
ip netns exec NameSpace_A ip a # 查看增加的网络空间的详细信息
ip netns add NameSpace_B # 增加一个网络A空间
ip netns #查看增加的网络空间
ip netns exec NameSpace_B ip a # 查看增加的网络空间的详细信息
打开创建的网络空间
ip netns exec NameSpace_A ip link set dev lo up # 启动网络空间
跟物理机连接起来
建立一对 veth pair
ip link add veth0 type veth peer name veth1 # 创建一对 veth pair
ip link set veth1 netns NameSpace_A #将创建好的veth pair 连接NameSpace_A
配置IP地址
ip netns exec NameSpace_A ifconfig veth1 11.11.11.1/24 up # 给NameSpace_A空间的veth1配置IP
ifconfig veth0 11.11.11.2/24 up # 给物理机网卡veth0配置IP
可以看到 正常访问
另一个空间同样操作
结果如下
查看两个网络空间的信息
两个空间之间通讯
方法一: 桥接
我们同样在新建两条veth pair,使用不同的网段
ip link add veth8 type veth peer name veth5
ip link add veth9 type veth peer name veth6
ip link set veth5 netns NameSpace_A
ip link set veth6 netns NameSpace_B
ip netns exec NameSpace_A ifconfig veth5 33.33.33.1/24 up
ip netns exec NameSpace_B ifconfig veth6 33.33.33.2/24 up
ifconfig veth8 33.33.33.3/24 up
ifconfig veth9 33.33.33.4/24 up
方法二:直连
新建两条veth pair,直接给AB,并赋予IP
ip l a veth10 type veth peer name veth11
ip link set veth10 netns NameSpace_A
ip link set veth11 netns NameSpace_B
ip netns exec NameSpace_A ifconfig veth10 66.66.66.2/24 up
ip netns exec NameSpace_B ifconfig veth11 66.66.66.3/24 up
测试:
ip netns exec NameSpace_A ping 66.66.66.3
ip netns exec NameSpace_B ping 66.66.66.2