QEMU虚拟机的802.1q VLAN网络有两种模式,即Access模式与Trunk模式(这是通俗说法,实际是主机网口流量untagged与tagged的区别,与交换机的Access、Trunk定义有略微差异)。使用Access模式需要在主机中将指定的tagged VLAN接口(比如eth0.123)加入对应网桥,虚拟机的数据包将在流入/流出网桥时被添加/剥离标签;Trunk模式下的物理接口(比如eth0)将直接加入至网桥,虚拟机在其网口上主动添加/剥离VLAN标签才能与外部通信。某些发行版内核可能不支持QEMU虚拟机的Trunk模式,一般需要借助ebtables工具将二层帧进入broute时将其进行路由处理(routing)而不是桥接处理(bridging)(命令形如“ebtables-t broute-A BROUTING-i enp3s0-p 802_1Q-j DROP”)。
接下来笔者用libvirt/QEMU进行示例,主机的物理网口enp3s0与交换机上的Hybrid接口相连,它属于untagged VLAN 1以及tagged VLAN 10、11。
1.Access模式
Access模式在交换机中表示为只允许untagged流量通过的网口模式,在libvirt中它表示为与虚拟机网口相连的网桥是Access模式。此时我们需要在主机中创建三个网桥br1、br10、br11,同时物理网口enp3s0及其VLAN子网口enp3s0.10、enp3s0.11分别加入到这三个网桥中,虚线部分的右侧网桥是untagged流量,然后流向左侧主机时被添加标签成为tagged流量,反之亦然,如图6-10所示。
图6-10 Access模式虚拟机流量路径
创建三个网桥并将对应的VLAN子接口分别加入其中。
然后在libvirt中定义3个网络。
最后对虚拟机添加如下网络接口定义以访问指定网络,启动后在虚拟机系统内设置对应VLAN地址段的网络信息(不需要添加VLAN标签)即可接入网络。
(www.xing528.com)
2.Trunk模式
Trunk模式在交换机中表示为只允许tagged流量进入的网口,在libvirt中它表示为与虚拟机网口相连的网桥是Trunk模式。此时我们只需要在主机中创建一个网桥br0,将物理网口enp3s0加入网桥,但需要同时设置br0的VLAN子接口。虚拟机的三个网口与网桥br0相连,虚线部分的左侧网桥中是tagged流量,然后流向右侧虚拟机时标签被剥离成为untagged流量,反之亦然,如图6-10所示。
图6-11 Trunk模式虚拟机流量路径
创建一个网桥br0,并将物理网口enp3s0加入其中。
创建br0的两个VLAN子接口,由于VLAN子接口是定义到网桥上,所以当数据包到达网桥时VLAN标签会被保持,如下所示。
然后在libvirt中定义此网络并启动。
最后在虚拟机设备段中添加如下定义,启动后在虚拟机系统内设置网口eth0以及要加入的VLAN子标签(比如eth0.10、eth0.11)的网络信息即可接入网络:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。