# 步骤 1:创建三个网络命名空间
sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
# 验证创建结果
ip netns list
# 步骤 2:创建三对 Veth 设备
# ns1 和 ns2 之间的 Veth 对
sudo ip link add veth1-1 type veth peer name veth1-2
# ns2 和 ns3 之间的 Veth 对
sudo ip link add veth2-2 type veth peer name veth2-3
# ns3 和 ns1 之间的 Veth 对
sudo ip link add veth3-3 type veth peer name veth3-1
# 验证创建结果
ip link show type veth
# 步骤 3:将 Veth 设备分配到相应的网络命名空间
# ns1 的设备
sudo ip link set veth1-1 netns ns1
sudo ip link set veth3-1 netns ns1
# ns2 的设备
sudo ip link set veth1-2 netns ns2
sudo ip link set veth2-2 netns ns2
# ns3 的设备
sudo ip link set veth2-3 netns ns3
sudo ip link set veth3-3 netns ns3
# 验证分配结果
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns2 ip link show
sudo ip netns exec ns3 ip link show
# 步骤 4:配置 IP 地址
# ns1 的设备
sudo ip netns exec ns1 ip addr add 10.0.1.1/24 dev veth1-1
sudo ip netns exec ns1 ip addr add 10.0.3.1/24 dev veth3-1
sudo ip netns exec ns1 ip link set veth1-1 up
sudo ip netns exec ns1 ip link set veth3-1 up
sudo ip netns exec ns1 ip link set lo up
# ns2 的设备
sudo ip netns exec ns2 ip addr add 10.0.1.2/24 dev veth1-2
sudo ip netns exec ns2 ip addr add 10.0.2.2/24 dev veth2-2
sudo ip netns exec ns2 ip link set veth1-2 up
sudo ip netns exec ns2 ip link set veth2-2 up
sudo ip netns exec ns2 ip link set lo up
# ns3 的设备
sudo ip netns exec ns3 ip addr add 10.0.2.3/24 dev veth2-3
sudo ip netns exec ns3 ip addr add 10.0.3.3/24 dev veth3-3
sudo ip netns exec ns3 ip link set veth2-3 up
sudo ip netns exec ns3 ip link set veth3-3 up
sudo ip netns exec ns3 ip link set lo up
# 验证配置
sudo ip netns exec ns1 ip addr
sudo ip netns exec ns2 ip addr
sudo ip netns exec ns3 ip addr
# 步骤 5:配置路由
# ns1 的路由
sudo ip netns exec ns1 ip route add 10.0.2.0/24 via 10.0.1.2
# ns2 的路由
sudo ip netns exec ns2 ip route add 10.0.3.0/24 via 10.0.2.3
# ns3 的路由
sudo ip netns exec ns3 ip route add 10.0.1.0/24 via 10.0.3.1
# 验证路由配置
sudo ip netns exec ns1 ip route
sudo ip netns exec ns2 ip route
sudo ip netns exec ns3 ip route
# 步骤 1:创建四个网络命名空间
sudo ip netns add ns1 # 中心命名空间
sudo ip netns add ns2 # 边缘命名空间
sudo ip netns add ns3 # 边缘命名空间
sudo ip netns add ns4 # 边缘命名空间
# 验证创建结果
ip netns list
# 步骤 2:创建三对 Veth 设备
# ns1 和 ns2 之间的 Veth 对
sudo ip link add veth1-1 type veth peer name veth1-2
# ns1 和 ns3 之间的 Veth 对
sudo ip link add veth2-1 type veth peer name veth2-3
# ns1 和 ns4 之间的 Veth 对
sudo ip link add veth3-1 type veth peer name veth3-4
# 验证创建结果
ip link show type veth
# 步骤 3:将 Veth 设备分配到相应的网络命名空间
# ns1 的设备(中心命名空间)
sudo ip link set veth1-1 netns ns1
sudo ip link set veth2-1 netns ns1
sudo ip link set veth3-1 netns ns1
# ns2 的设备
sudo ip link set veth1-2 netns ns2
# ns3 的设备
sudo ip link set veth2-3 netns ns3
# ns4 的设备
sudo ip link set veth3-4 netns ns4
# 验证分配结果
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns2 ip link show
sudo ip netns exec ns3 ip link show
sudo ip netns exec ns4 ip link show
# 步骤 4:配置 IP 地址
# ns1 的设备(中心命名空间)
sudo ip netns exec ns1 ip addr add 10.0.1.1/24 dev veth1-1
sudo ip netns exec ns1 ip addr add 10.0.2.1/24 dev veth2-1
sudo ip netns exec ns1 ip addr add 10.0.3.1/24 dev veth3-1
sudo ip netns exec ns1 ip link set veth1-1 up
sudo ip netns exec ns1 ip link set veth2-1 up
sudo ip netns exec ns1 ip link set veth3-1 up
sudo ip netns exec ns1 ip link set lo up
# ns2 的设备
sudo ip netns exec ns2 ip addr add 10.0.1.2/24 dev veth1-2
sudo ip netns exec ns2 ip link set veth1-2 up
sudo ip netns exec ns2 ip link set lo up
# ns3 的设备
sudo ip netns exec ns3 ip addr add 10.0.2.3/24 dev veth2-3
sudo ip netns exec ns3 ip link set veth2-3 up
sudo ip netns exec ns3 ip link set lo up
# ns4 的设备
sudo ip netns exec ns4 ip addr add 10.0.3.4/24 dev veth3-4
sudo ip netns exec ns4 ip link set veth3-4 up
sudo ip netns exec ns4 ip link set lo up
# 验证配置
sudo ip netns exec ns1 ip addr
sudo ip netns exec ns2 ip addr
sudo ip netns exec ns3 ip addr
sudo ip netns exec ns4 ip addr
# 步骤 5:在中心命名空间启用 IP 转发
sudo ip netns exec ns1 sysctl -w net.ipv4.ip_forward=1
# 验证 IP 转发是否启用
sudo ip netns exec ns1 sysctl net.ipv4.ip_forward
# 步骤 6:配置路由
# ns2 的路由(通过中心命名空间到达其他边缘命名空间)
sudo ip netns exec ns2 ip route add 10.0.2.0/24 via 10.0.1.1
sudo ip netns exec ns2 ip route add 10.0.3.0/24 via 10.0.1.1
# ns3 的路由
sudo ip netns exec ns3 ip route add 10.0.1.0/24 via 10.0.2.1
sudo ip netns exec ns3 ip route add 10.0.3.0/24 via 10.0.2.1
# ns4 的路由
sudo ip netns exec ns4 ip route add 10.0.1.0/24 via 10.0.3.1
sudo ip netns exec ns4 ip route add 10.0.2.0/24 via 10.0.3.1
# 验证路由配置
sudo ip netns exec ns2 ip route
sudo ip netns exec ns3 ip route
sudo ip netns exec ns4 ip route
# 步骤 1:创建三个网络命名空间
sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
# 验证创建结果
ip netns list
# 步骤 2:创建网桥
sudo ip link add br0 type bridge
sudo ip link set br0 up
# 为网桥分配 IP 地址(可选,用作命名空间的网关)
sudo ip addr add 192.168.100.1/24 dev br0
# 验证网桥创建
ip link show br0
ip addr show br0
# 步骤 3:创建三对 Veth 设备
# ns1 的 Veth 对
sudo ip link add veth0-br type veth peer name veth0-ns
# ns2 的 Veth 对
sudo ip link add veth1-br type veth peer name veth1-ns
# ns3 的 Veth 对
sudo ip link add veth2-br type veth peer name veth2-ns
# 验证创建结果
ip link show type veth
# 步骤 4:将 Veth 设备分配到相应的网络命名空间
# ns1 的设备
sudo ip link set veth0-ns netns ns1
# ns2 的设备
sudo ip link set veth1-ns netns ns2
# ns3 的设备
sudo ip link set veth2-ns netns ns3
# 验证分配结果
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns2 ip link show
sudo ip netns exec ns3 ip link show
# 步骤 5:将 Veth 设备连接到网桥
sudo ip link set veth0-br master br0
sudo ip link set veth1-br master br0
sudo ip link set veth2-br master br0
# 启用网桥端的 Veth 设备
sudo ip link set veth0-br up
sudo ip link set veth1-br up
sudo ip link set veth2-br up
# 验证网桥连接
bridge link show
# 步骤 6:配置命名空间中的 Veth 设备
# ns1 的设备
sudo ip netns exec ns1 ip addr add 192.168.100.11/24 dev veth0-ns
sudo ip netns exec ns1 ip link set veth0-ns up
sudo ip netns exec ns1 ip link set lo up
sudo ip netns exec ns1 ip route add default via 192.168.100.1
# ns2 的设备
sudo ip netns exec ns2 ip addr add 192.168.100.12/24 dev veth1-ns
sudo ip netns exec ns2 ip link set veth1-ns up
sudo ip netns exec ns2 ip link set lo up
sudo ip netns exec ns2 ip route add default via 192.168.100.1
# ns3 的设备
sudo ip netns exec ns3 ip addr add 192.168.100.13/24 dev veth2-ns
sudo ip netns exec ns3 ip link set veth2-ns up
sudo ip netns exec ns3 ip link set lo up
sudo ip netns exec ns3 ip route add default via 192.168.100.1
# 验证配置
sudo ip netns exec ns1 ip addr
sudo ip netns exec ns2 ip addr
sudo ip netns exec ns3 ip addr
# 步骤 7:启用 IP 转发(如果需要与外部网络通信)
sudo sysctl -w net.ipv4.ip_forward=1
# 验证 IP 转发是否启用
sysctl net.ipv4.ip_forward
# 步骤 9:清理实验环境
sudo ip link delete br0 # 删除网桥会自动删除连接到它的设备
sudo ip netns delete ns1
sudo ip netns delete ns2
sudo ip netns delete ns3
# 验证清理结果
ip netns list
bridge link show