在CentOS 6上为KVM客人设置绑定桥接的正确方法是什么?

在CentOS 6上为KVM客人设置绑定桥接的正确方法是什么?

我目前正在玩两台KVM主机,每台主机都有几个客人。 我有两台HP DL380:每台4个nics。 我想在活动备份(mode = 1)债券中使用两个nics(eth0,eth1),用于故障转移原因,面向互联网。 那么我想要另外两个nics(eth2,eth3)也处于积极备份的债券,面对pipe理员/后台networking。

在债券之上,我需要一个KVM访客将用来访问前台或后台networking的桥梁

在interwebz上,我find了许多不同的方式来configuration它。 有些人只是提到了结合,有些只是桥接,有些则将其结合起来。 我发现没有一个提到如果我用许多主机使用前后网将会发生什么。

我的一些问题/问题是。

  • 我得到了正确的configuration文件的fetich,开发人员认为他们应该是,不只是工作的configuration文件。
  • 我得到错误“内核:bond0:收到自己的地址作为源地址的数据包”。 bond0和bond1都是。
  • 交通是否自动从后台networking转发到前端networking? 我应该使用ebtables / iptables或者什么来禁用转发stream量?
  • 我是否需要使用生成树协议(STP)?
  • 我需要任何特定的路线吗?

这是一个很好的图片,看看环境如何(至less是其中的一部分)。

网络架构

这是我的相关configuration文件。

的/ etc / SYSCONFIG /networking

NETWORKING=yes HOSTNAME=host1 GATEWAYDEV=br0 NETWORKING_IPV6=no 

/ etc / sysconfig / network-scripts / ifcfg-eth0 – ifcfg-eth3

 DEVICE="ethX" NM_CONTROLLED="no" ONBOOT=yes HWADDR=xx:xx:xx:xx:xx:xx SLAVE=yes MASTER=bondX HOTPLUG=no BOOTPROTO=none 

/ etc / sysconfig / network-scripts / ifcfg-bond0 – ifcfg-bond1

 DEVICE=bondX BONDING_OPTS="miimon=100 mode=1" ONPARENT=yes BOOTPROTO=none BRIDGE=brX 

在/ etc / sysconfig / network中的脚本/的ifcfg-BR0

 DEVICE=br0 TYPE=Bridge ONBOOT=yes DELAY=0 BOOTPROTO=none 

在/ etc / sysconfig / network中的脚本/的ifcfg-BR1

 DEVICE=br1 TYPE=Bridge ONBOOT=yes DELAY=0 BOOTPROTO=static IPADDR=10.0.1.100 NETMASK=255.255.255.0 

更新1

  • 增加了/etc/sysctl.conf
  • 从ifcfg-br0中删除了ip。 主机不能通过互联网访问,只能从pipe理网访问。

*更新2 *

  • 删除了对/etc/sysctl.conf的更改。 不需要启用iptables。

不确定CentOS 6,但在Fedora上,绑定模块默认没有添加到Linux内核,因此您需要创build一个文件/etc/modprobe.d/bonding.conf

 alias bond0 bonding 

重新启动,你应该在启动时看到加载模块。

既然你有两个绑定的接口,你可能需要为bond1添加另一个别名行。 不过,我从来没有尝试过。

build议你做一个工作,然后担心设置第二个。

你提到的关于桥的其他问题,还有其他一些要注意的问题,这些configuration与networking守护进程一起工作,但我不相信它们可以与NetworkManager一起工作。 你正在运行networking还是NetworkManager守护进程?

最后,有不同的方法来configurationnetfilter来处理桥接接口。 至less在Fedora 12+上,默认是禁用网桥上的netfilter。 但是你可以通过编辑/etc/sysctl.conf和设置来改变这个

 net.bridge.bridge-nf-call-iptables=1 

对arp和ipv6执行同样的操作,在这个文件中也需要设置

 net.ipv4.ip_forward=1 

刷新你的FORWARD链,并用iptables规则replace

 iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT 
  1. 转发到iptables将工作,但为什么? 这肯定会造成额外的开销
  2. networking架构似乎是正确的,但我试图让硬件使用模式4而不是1安全的一面,并也聚合stream量
  3. br0和br1没有IP地址,你有其他的网卡可以访问主机吗? 你真的不想locking自己(除非你也有一个iLO当然)
  4. 您发布的内核消息通常与使用与桥接(0和6)不兼容的绑定模式有关。 你能确定你实际上在模式1(/ proc / net / bonding / …)通常包含一个指示
  5. 子网之间的转发不应该发生在没有特定的configuration的情况下,然而,主机的内核应该能够确定哪个分组指向哪里,在br0和br1在不同的子网上,所以br0上的VM应该能够在br0networking上通话,并且如果您希望它也能够在br1上进行通信,请添加另一个虚拟NIC并将其附加到那里