KVM 主机的多重桥接问题

KVM 主机的多重桥接问题

我在主机 (Debian lenny) 上使用 KVM 和 libvirt + 每个客户机使用 2 个桥接器 (一个用于管理,一个用于公共流量)。
该设置一点也不稳定,有时我可以 ping 到管理 IP,有时则不行。
我不知道我的桥接参数是否正确,您能检查一下吗?或者是否有任何问题...

还请注意,客户机上的接口没有抖动,并且我的主机上没有日志。
当然,转发已启用。

iface eth3 inet 手册

自动 bond0
iface bond0 inet 手动
从属 eth1 eth2
预启动 ip 链路设置 bond0 启动
关闭 ip 链路设置 bond0 停止

自动 br0
iface br0 inet 静态
地址 10.160.0.7
网络掩码 255.255.255.128
bridge_ports eth3
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

自动 br0:1
iface br0:1 inet 静态
地址 10.160.0.9
网络掩码 255.255.255.128

自动 br0:2
iface br0:2 inet 静态
地址 10.160.0.10
网络掩码 255.255.255.128

自动 br1
iface br1 inet 静态
地址 217.4.40.242
网络掩码 255.255.255.240
网关 217.4.40.241
预备 /etc/network/firewall 启动
bridge_ports bond0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp 关闭

自动 br1:1
iface br1:1 inet 静态
地址 217.4.40.252
网络掩码 255.255.255.240

自动 br1:2
iface br1:2 inet 静态
地址 217.4.40.253
网络掩码 255.255.255.240

答案1

您有多个接口,这些接口的地址位于同一子网,且网络掩码相似。很可能不同的数据包使用了不同的路由,从而造成混淆。如果您查看

ip route show

因此,您可能有多个默认网关。对于同一子网上的每组 IP,为其中一个 IP 指定您拥有的网络掩码,为其余 IP 指定网络掩码 255.255.255.255。然后,其他接口将仅用于发送或发往该地址的数据包,而不会用于子网上的其他数据包。

答案2

我有一个工作配置,但没有像你一样绑定(这可能是问题所在)。这是我的配置:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo br0 br1
iface lo inet loopback

# DMZ
iface br0 inet static
    address 192.168.100.1
    netmask 255.255.255.0
    gateway 192.168.100.254
    network 192.168.100.0
    broadcast 192.168.100.255
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

# Internal
iface br1 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    gateway 192.168.0.254
    network 192.168.0.0
    broadcast 192.168.0.255
    bridge_ports eth1
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

您的 /var/log/syslog 消息或 dmesg 中是否有关于 bond 的错误消息?

答案3

我在尝试使用同一子网上具有 2 个接口的 KVM 客户机时遇到了同样的问题。如果我在拔下另一个接口的电缆的情况下启动客户机,我可以访问管理接口,但是一旦我插入第二个网卡,它就会变得混乱。

我看到提到的一个解决方案是在客户机上创建接口时指定 VLAN。这些不是 802.1x VLAN,而是 QEMU 特定的广播域,可防止网络流量在同一子网上的桥接接口之间跳转(并可能循环)。

问题是(OpenSolaris 除外) 目前无法直接使用 virt-install 或 virsh 工具执行此操作,甚至无法转储/编辑/重新加载域的 xml 文件来分配 VLAN。我知道的唯一方法是直接使用 kvm 命令创建客户机,但它比 virt-install 复杂得多。我仍在尝试弄清楚如何将 virt-install 安装中的选项转换为 qemu-kvm,但如果可行,我会更新。

相关内容