CentOS,KVM,VLAN和桥接

我需要使用KVM为虚拟客人devisenetworking。 我的机器正在运行CentOS 7,并有2个网卡。 我想实现以下

  • 一个物理接口(em1)只能用于主机访问。 主机将具有非标记stream量和静态IP地址的非常正常的configuration。
  • 另一个物理接口(em2)接收不同VLAN的标记stream量。
  • 虚拟机只能看到特定VLAN的stream量。 客人间通信不需要在KVM中完成。
  • 我希望虚拟网卡上的stream量不被标记,以确保来宾不会更改其内部NICconfiguration来欺骗其他networking。

链接到概念graphics

我是libvirt的新手,也不习惯networkingpipe理员。 我search了文档,但发现有冲突的信息,从是否可以通过networkingpipe理器configuration桥接的问题开始。 我也读了关于让KVM做切换的可能性。

我将不胜感激直接的configuration帮助,或者指向一个不使用(在CentOS 7上)的最新文档的指针,这些工具或者解决问题的解决方法同时被删除。

提前致谢。

你想要什么,虽然有用,但不是很直白。 基本上,你有三种可能性:

  1. 使用Open vSwitch堆栈来虚拟化网桥/交换机
  2. 为每个vlan使用专用的软件桥接器
  3. 在最近的内核中,可以使用“桥接VLANfilter”function来拥有一个单一的“智能”桥来统一它们

解决schemen.1 (可能)是最完整的,但最难以设置。

解决schemen.2是我为我的实验室testing所采用的。 例如,对于VLAN 10和20,您可以创build类似的设置:

 eth0(物理接口) - > eth0.10(VLAN标记) - > br10(桥接eth0.10和相对虚拟qemu / kvm接口)
 eth0(物理接口) - > eth0.20(VLAN标记) - > br20(与eth0.20和相对虚拟qemu / kvm接口桥接)

请注意,如果您还需要在带标签的网桥上使用未标记的stream量,则必须发出以下ebtables规则: ebtables -t broute -A BROUTING -i eth0 -p 802.1Q -j DROP由于Linuxnetworking栈pipe理传入的数据包。 欲了解更多信息,请参阅这里 , 这里和这里

解决schemen.3应该是聪明的,但是你需要内核支持(还有libvirt)。 CentOS7应该有足够的最新内核,但是我不知道所有其他软件是否准备好了。

解决schemen.4 (奖金一):如果你不需要客人/主人沟通,看看macvtap驱动程序。 虽然我不使用它,你应该能够设置一个类似的解决scheme:

 eth0(物理接口) - > eth0.10(VLAN标记) - > eth0.10上的MAC vtap
 eth0(物理接口) - > eth0.20(VLAN标记) - > eth0.20上的MAC vtap

对我来说,从客人/主人沟通的不可能性太大,但是您的要求可能会有所不同。

最后,看看这里 ,值得一读。