因此,我在 KVM 主机中设置了一个 VLAN,其中我将防火墙 WAN 端口桥接到物理 eth 接口,然后将 LAN 端口桥接到内部网桥,该内部网桥具有 vlan 子接口,这些子接口本身是虚拟机所在网桥的从属接口连接的。防火墙 LAN 端口已标记 VLAN。我希望虚拟机能够连接到正确的 VLAN,而不必在虚拟机内标记其接口,因此需要下面的中间桥。
安装程序的工作原理如下:
+---------+ +--------+
| Bridge | | |
+----------+ +---------+ +--------+-+------------+ | br10 +---+ VM1 |
| | | | | | | VLAN 10 +------+ | | |
+----------+ | | | | | +-+------------+ +---------+ +--------+
|ethernet +-----+ Bridge +----+FIREWALL +----+ Bridge |
+----------+ | | | | | Int +-+------------+ +---------+ +--------+
| | | | | | | VLAN 20 +------+ Bridge | | |
+----------+ +---------+ +--------+-+------------+ | br20 +---+ VM2 |
| | | |
+---------+ +--------+
到目前为止一切顺利,直到我重新启动防火墙为止。连接到 VLAN 网桥的 vnet tun 接口只是从网桥断开连接(例如,如果 VM2 具有 vnet3 并连接到 br20,则一旦我重新启动防火墙,vnet3 就会从网桥 br20 中消失)。
当然,我可以通过用类似的东西来识别它们来重新连接它们
for vm in $(virsh list --name); do echo "$vm: $(virsh dumpxml $vm | grep vnet)"; done
然后将它们连接起来
ip link set vnet3 master br20
但我很想知道为什么我的虚拟机接口与网桥断开连接,也许找到一种方法让它们在防火墙重新启动后“保持”状态。
任何人都知道如何实现这一目标?