不同主机同 vlan 的容器通信

全部都是二层交换即可。

# 四个命名空间
ip netns add ns0
ip netns add ns1
ip netns add ns2
ip netns add ns3

# 三个虚拟交换机
ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl add-br vswitch

# 定义好所有的 veth pair
ip link add name veth10 type veth peer name veth11
ip link add name veth20 type veth peer name veth21
ip link add name veth30 type veth peer name veth31
ip link add name veth40 type veth peer name veth41
ip link add name veth-l10 type veth peer name veth-l11
ip link add name veth-l20 type veth peer name veth-l21

# 将 veth 的一端移到命名空间内
ip link set veth11 netns ns0
ip link set veth21 netns ns1
ip link set veth31 netns ns2
ip link set veth41 netns ns3

# link up
ip link set veth10 up
ip link set veth20 up
ip link set veth30 up
ip link set veth40 up

# 设置地址和默认路由
ip netns exec ns0 ip link set veth11 up
ip netns exec ns0 ip addr add 192.168.100.100/24 dev veth11
ip netns exec ns0 ip route add default via 192.168.100.1 dev veth11

ip netns exec ns1 ip link set veth21 up
ip netns exec ns1 ip addr add 192.168.100.101/24 dev veth21
ip netns exec ns1 ip route add default via 192.168.100.1 dev veth21

ip netns exec ns2 ip link set veth31 up
ip netns exec ns2 ip addr add 192.168.100.102/24 dev veth31
ip netns exec ns2 ip route add default via 192.168.100.1 dev veth31

ip netns exec ns3 ip link set veth41 up
ip netns exec ns3 ip addr add 192.168.100.103/24 dev veth41
ip netns exec ns3 ip route add default via 192.168.100.1 dev veth41

# 连接 vlan
ovs-vsctl add-port br0 veth10 tag=100
ovs-vsctl add-port br0 veth20 tag=100
ovs-vsctl add-port br1 veth30 tag=100
ovs-vsctl add-port br1 veth40 tag=100


# 启用网桥
ip link set br0 up
ip link set br1 up

# link up
ip link set veth-l10 up
ip link set veth-l11 up
ip link set veth-l20 up
ip link set veth-l21 up

# 连接 trunk 端口
ovs-vsctl add-port br0 veth-l10
ovs-vsctl add-port br1 veth-l20

# 连到交换机
ovs-vsctl add-port vswitch veth-l11
ovs-vsctl add-port vswitch veth-l21

# 启用交换机
ip link set vswitch up

# 检查不同主机同一 vlan 下的 arp,也就是二层是否互通
ip netns exec ns0 arping -I veth11 -s 192.168.100.100 192.168.100.103

# 检查三层是否互通
ip netns exec ns0 ping 192.168.100.103

Last updated