同主机同vlan的容器通信

同主机同vlan的容器通信

本次实验的示意图

# 创建并设置网桥
ovs-vsctl add-br br0
ip link set br0 promisc on

# 设置 ns0 和 veth pair (10,11), 处于 vlan100
ip link add name veth10 type veth peer name veth11
ip netns add ns0
ip link set veth11 netns ns0
ip netns exec ns0 ip link set veth11 up
ip netns exec ns0 ip addr add 192.168.100.100/24 dev veth11
ip link set veth10 up
ovs-vsctl add-port br0 veth10 tag=100

# 设置 ns1 和 veth pair (20,21), 处于 vlan100
ip netns add ns1
ip link add name veth20 type veth peer name veth21
ip link set veth21 netns ns1
ip netns exec ns1 ip link set veth21 up
ip netns exec ns1 ip addr add 192.168.100.101/24 dev veth21
ip link set veth20 up
ovs-vsctl add-port br0 veth20 tag=100

# 设置 ns2 和 veth pair (30,31), 处于 vlan100
ip netns add ns2
ip link add name veth30 type veth peer name veth31
ip link set veth31 netns ns2
ip netns exec ns2 ip link set veth31 up
ip netns exec ns2 ip addr add 192.168.100.102/24 dev veth31
ovs-vsctl add-port br0 veth30 tag=101
ip link set veth30 up

# 使用 arp 来测试 vlan 

# ns0 中使用 tcpdump 抓 arp 包
ip netns exec ns0 tcpdump -i veth11 -p arp

# ns2 中使用 tcpdump 抓 arp 包
ip netns exec ns2 tcpdump -i veth31 -p arp

# ----------------------------------------------
# ns1 发送 arp
ip netns exec ns1 arping -I veth21 -s 192.168.100.101 192.168.100.100

# 结果: ns1 收到 arp 响应,ns0 中可以抓到包,ns2 中抓不到

# ----------------------------------------------
# ns2 发送 arp
ip netns exec ns2 arping -I veth31 -s 192.168.101.100 192.168.100.100

# 结果: ns2 没有响应。ns0 中抓不到包,ns2 中抓到了请求包

Last updated