我在 KVM/QEMU (RHEL 6.0) 上使用桥接网络创建了 3 个 VM。为 eth1 创建了一个桥接器,所有 VM 都使用该桥接器进行网络连接。所有这些 VM 都具有相同的子网地址。所有这些机器都能够相互 ping 通,因为桥接器负责这些机器之间的路由。我试图实现的场景是,我不希望桥接器在这些机器之间进行路由。我希望桥接器将这些机器的所有流量发送到外部边缘交换机并让他进行路由。所以我对如何做到这一点有以下想法,但不确定这些想法是否可行:
在 NIC(eth1)上创建多个桥接器,并将每台机器连接到同一 NIC 上的不同桥接器。这样我希望它将流量发送到外部交换机,但不确定如何处理反向流量。据我所知,我们无法在单个 NIC 卡上创建多个桥接器。但如果有人知道方法,请分享。
在网桥中配置规则,所有来自虚拟机端口的流量都应定向到 NIC 到外部交换机,传入流量可以像通常的网桥方式一样路由。我也不确定这是否可行。如果可行,有什么想法可以做到这一点吗?
不确定是否有其他网络方式可用于实现此场景。请分享您的想法,如果您需要我提供更多信息,请告知我。
答案1
您尝试执行的操作存在问题:交换机不会将数据包转发到原始端口以避免循环。
您正在寻找的是 VEPA,又名虚拟以太网端口聚合器,又名 802.1Qbg。它位于较新的 Linux 内核 (2.6.34+) 中。您可以在 RHEL6/Centos 6 中找到它,因为 RedHat 已将其移植回来。但您还需要一个支持 VEPA 的交换机(我目前甚至不确定它是否存在)。
您可以使用 libvirt 创建 VEPA 网络:
<network>
<name>network1</name>
<forward mode="vepa">
<interface dev="eth1"/>
</forward>
</network>