创建网络命名空间

使用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
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐