我有一个CentOS 6 Box(内核2.6.32-642.6.1.el6.x86_64),其中2个KVM实例正在运行。
我从数据中心获取两个VLAN。 不幸的是,他们不会把两个VLAN都组合到一个VLAN中。 我需要在相同的KVM guest虚拟机上同时使用两个VLAN。
默认VLAN是未标记的,第二个vlan标记为id 471。
目前,我是这样做的:
bridge name bridge id STP enabled interfaces br0 8000.0cc47a7fed0a no eth1 kvm1100.0 br1 8000.0cc47a7fed0a no eth1.471 kvm1101.0
这是按预期工作。 我可以使用KVM实例1100上的未标记VLAN和KVM实例1101上的VLAN 471。
现在,我希望KVM 1101可以使用来自未标记的VLAN和VLAN 471的IP地址。
所以我把eth1.471添加到br0,然后把kvm1101.0添加到br0。
bridge name bridge id STP enabled interfaces br0 8000.0cc47a7fed0a no eth1 eth1.471 kvm1100.0 kvm1101.0
这是工作,我可以访问两个实例的VLAN。 它工作,我喜欢它。
但是,当eth1.471被添加到br0时,我看到整个networking上的数据包丢失。 不仅在这个服务器上,它影响一切。 当我从br0删除eth.471时,数据包丢失停止。
看来这不是正确的方法。 我尝试了各种各样的东西,但我总是以相同的结果结束。
我错过了什么? 如前所述,数据中心不愿意将两个VLAN组合在一起。
不能将VLAN传递到KVM实例并在其中configurationVLAN + IP地址。 KVM实例应该能够使用两个vlans而无需其他configuration。
当您将eth1与eth1.174桥接时,您实际上会在您的接口的数据中心networking中创build一个拓扑循环,从而导致数据包丢失和其他问题。
可能的解决scheme是向kvm1101引入第二个接口,并将该 KVM接口添加到br0,将br0和br1作为单独的网桥绑定到物理适配器上各自的VLAN。
如果要在虚拟机的不同IP子网中使用两个不同的IP地址,则虚拟机中需要两个不同的接口。 没有别的办法,因为知识产权就是这样工作的。 规则是在同一个L2广播域中不能configuration两个不同的IP子网。 这也是数据中心拒绝将它们合并成一个的原因。
因此,您需要将两个虚拟networking适配器( kvm1100.0和kvm1101.0 )分配给您的虚拟机。
但是,如果您的虚拟机需要监听标记VLAN中IP地址上的某些特定端口,则可以使用NAT:
主机操作系统已经在你的标记VLAN( br1或eth1.471configuration了一个地址,这里实际上并不需要桥接)。 然后,主机操作系统configuration了端口转发,以eth1.471接口IP地址端口X的任何传入连接都转发到eth1networking中的访客虚拟机IP地址。
如果您希望某些目标使用eth1.471作为出站接口,则也可以使用NAT来从访客VM传出stream量。