创建网络命名空间
使用ip netns
命令创建两个网络命名空间ns1
和ns2
:
ip netns add ns1
ip netns add ns2
创建veth对
创建一对虚拟以太网设备veth1-veth2
和veth3-veth4
:
ip link add veth1 type veth peer name veth2
ip link add veth3 type veth peer name veth4
将veth设备分配到命名空间
将veth2
移到ns1
,veth4
移到ns2
:
ip link set veth2 netns ns1
ip link set veth4 netns ns2
配置设备IP和状态
在默认命名空间中为veth1
和veth3
分配IP并启用:
ip addr add 10.1.1.1/24 dev veth1
ip link set veth1 up
ip addr add 10.1.2.1/24 dev veth3
ip link set veth3 up
在ns1
中配置veth2
的IP并启用:
ip netns exec ns1 ip addr add 10.1.1.2/24 dev veth2
ip netns exec ns1 ip link set veth2 up
ip netns exec ns1 ip link set lo up
在ns2
中配置veth4
的IP并启用:
ip netns exec ns2 ip addr add 10.1.2.2/24 dev veth4
ip netns exec ns2 ip link set veth4 up
ip netns exec ns2 ip link set lo up
创建并配置网桥
创建网桥br0
并绑定veth1
和veth3
:
ip link add name br0 type bridge
ip link set dev veth1 master br0
ip link set dev veth3 master br0
ip link set br0 up
设置默认路由
在ns1
和ns2
中设置默认路由指向网桥IP:
ip netns exec ns1 ip route add default via 10.1.1.1
ip netns exec ns2 ip route add default via 10.1.2.1
验证连通性
从ns1
中pingns2
的IP:
ip netns exec ns1 ping 10.1.2.2
开启IP转发
确保主机的IP转发功能已启用:
echo 1 > /proc/sys/net/ipv4/ip_forward
结果说明
- 网桥
br0
充当交换机,连接veth1
和veth3
。 ns1
(10.1.1.2)和ns2
(10.1.2.2)通过网桥实现二层互通。- 若需跨子网通信,需额外配置路由或NAT规则。
注意:实验结束后可通过以下命令清理:
ip netns delete ns1
ip netns delete ns2
ip link delete br0