相同vpc同主机互访
一、完整图:
plyxxxx:这个本质是网桥,核心功能是基于 MAC 地址过滤非本机流量 。
关键过滤规则
- 规则 1:仅允许目标 MAC 为本机接口 MAC 的单播帧通过。
- 规则 2:允许广播帧(MAC 地址为
FF:FF:FF:FF:FF:FF
)和组播帧通过。 - 规则 3:允许预配置的信任 MAC 地址通过(如网关、监控设备)。
以下实验vm虚拟机使用veth结合namespace代替,ply设备仅作为过滤器,过滤非本机流量,实验中未体现。
二、实验:
这里采用两台openEuler 24版的虚拟机做测试:
1.环境:
主机名 |
操作系统 |
管理网卡ens32 |
业务网卡ens33 |
|
com01 |
openEuler24 |
192.168.174.4 |
这里后面与br-ethx做桥接,不配ip |
|
com02 |
openEuler24 |
192.168.174.4 |
这里后面与br-ethx做桥接,不配ip |
2.创建vm1,vm2的名称空间
[root@com01 ~]# ip netns add vm1
[root@com01 ~]# ip netns add vm2
# 验证命名空间是否创建成功
[root@com01 ~]# ip netns list
vm1
vm2
2.创建 veth 对并分配接口
vm1:
# 创建veth对(veth-a和veth-b)
ip link add veth-vm1-a type veth peer name veth-vm1-b
# 将veth-vm1-b放入vm1命名空间
ip link set veth-vm1-b netns vm1
# 先up,再查看veth对状态
ip link set veth-vm1-a up
ip link show veth-vm1-a
ip netns exec vm1 ip link set veth-vm1-b up
ip netns exec vm1 ip link show veth-vm1-b
vm2的也同理:
# 创建veth对(veth-a和veth-b)
ip link add veth-vm2-a type veth peer name veth-vm2-b
# 将veth-vm2-b放入vm2命名空间
ip link set veth-vm2-b netns vm2
# 查看veth对状态
ip link set veth-vm2-a up
ip link show veth-vm2-a
ip netns exec vm2 ip link set veth-vm2-b up
ip netns exec vm2 ip link show veth-vm2-b
3.两个名称空间里的veth接口配置ip
ip netns exec vm1 ip addr add 192.168.1.2/24 dev veth-vm1-b
ip netns exec vm2 ip addr add 192.168.1.3/24 dev veth-vm2-b
4.创建qbr网桥
# 创建qbr网桥
brctl addbr qbr-vm1
brctl addbr qbr-vm2
# 启用网桥
sudo ip link set qbr-vm1 up
sudo ip link set qbr-vm2 up
# 查看网桥状态
sudo brctl show
按照实验拓扑图规划,把veth口的A端都加入网桥中:
brctl addif qbr-vm1 veth-vm1-a
brctl addif qbr-vm2 veth-vm2-a
5.创建br-int
启动ovs服务:
systemctl enable --now openvswitch
##博主在安装操作系统的时候,勾选了安装OVS服务,没有勾选的可以使用yum安装:yum install -y openvswitch
创建br-int虚拟交换机:
ovs-vsctl add-br br-int
创建两对veth,用于连接qbr与br-int:
ip link add veth-qbr-vm1-a type veth peer name veth-qbr-vm1-b
ip link add veth-qbr-vm2-a type veth peer name veth-qbr-vm2-b
ip link set veth-qbr-vm1-a up
ip link set veth-qbr-vm1-b up
ip link set veth-qbr-vm2-a up
ip link set veth-qbr-vm2-b up
将a端加入对应qbr:
brctl addif qbr-vm1 veth-qbr-vm1-a
brctl addif qbr-vm2 veth-qbr-vm2-a
查看qbr:
b端加入br-int中:
ovs-vsctl add-port br-int veth-qbr-vm1-b
ovs-vsctl add-port br-int veth-qbr-vm2-b
查看br-int:
6.ping测试:
7.查看br-int流表:
可见br-int现在只有一条规则,这条规则意味着:所有未被更高优先级规则匹配的流量,将按照传统交换机的方式(基于 MAC 地址学习)进行转发。在这种情况下,流量仍然会经过 OVS,但转发逻辑由 NORMAL 动作处理,而非显式的流表规则。
现在就相当于一个二层交换机。然后我们再查看mac地址表(port1对应veth-qbr-vm1-b,port2对应veth-qbr-vm2-b,两个mac地址就是vm1的地址和vm2的地址):
vm1:
vm2:
本实验模拟了同vpc同主机下虚拟机互访的流量走向,下一节实验同vpc不同主机下的流量如何走。