带两个 NIC 的 KVM 网桥

带两个 NIC 的 KVM 网桥

问候,

我正在尝试使用 KVM 设置桥接网络,但毫无进展。有关于这个主题的文档和教程,但它们似乎都相互冲突或没有提供足够的信息。我想知道是否有人可以给我一个关于如何实现这一点的高级概述。我可能可以自己解决细节问题(配置接口、添加路由等),我只是需要帮助了解大局:一切是如何互连的。

我有一台安装并运行 KVM 的 RHEL5 服务器。它有两个物理网卡,eth0 和 eth1,位于同一个 VLAN 中。如果可能的话,我希望将 eth1 用于客户机与网络其余部分之间的所有流量,并保留 eth0 用于主机管理、客户机迁移等。我对哪一个获得默认路由并不挑剔,尽管如果我们可以将其设为 eth0 会更好。所有客户机都将拥有静态 IP。我希望在添加新客户机时,只需在客户机内部设置网络配置。基​​本上,我想要这样:

eth0:所有主机流量
eth1:所有来宾流量

如果这不可能或会很麻烦/困难,欢迎提出任何其他建议。指向现有文档的指针可能没有帮助,因为我已经尝试过那里的几乎所有内容。

谢谢你的帮助。

更新

好的,以下是我目前所得到的:

  • eth0 按照常规配置了静态 IP 地址。这并不奇怪。
  • br0 被用作没有 IP 地址的网桥
  • eth1 启动时没有 IP 地址。它被添加到 br0 网桥。
  • VM 实例配置为使用 br0,并配置了静态 IP 地址

使用此配置,我可以从客户机内部连接到外部机器,但发往客户机的数据包永远无法到达。这是我目前的配置:

# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=YES

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# host-only interface
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:23:7D:E1:1F:22
IPADDR=10.8.91.18
NETMASK=255.255.252.0
GATEWAY=10.8.91.254
BOOTPROTO=none
ONBOOT=yes

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# guest-only interface
DEVICE=eth1
TYPE=Ethernet
BRIDGE=br0
HWADDR=00:23:7d:e1:1f:26
BOOTPROTO=NONE
ONBOOT=YES

(virbr0 is the default kvm/libvirt NAT bridge, it's not being used here)
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.00237de11f26       no              vnet0
                                                        eth1
virbr0          8000.000000000000       yes

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
10.8.88.0       *               255.255.252.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         10.8.91.254     0.0.0.0         UG    0      0        0 eth0

以下是客户的 libvirt XML 定义的相关部分:

<interface type='bridge'>
  <mac address='54:52:00:76:94:73'/>
  <source bridge='br0'/>
</interface>

更新 2

好的,我想我已经准备好了。我的客户操作系统(SLES 11,我不熟悉)默认有一组相当严格的防火墙规则,这让我很困惑。一旦防火墙被清空,我就可以进出连接了。

答案1

我想您知道如何在 NIC 上设置桥接器,因此基本上您只需在两个 NIC 上设置两个桥接器,然后启动虚拟机以连接到正确的桥接器。仔细想想,其中一个 NIC 可以不设置桥接器,因为客户机不需要使用它。

以上就是我对这个问题的一般描述。你能否展示一下你目前所做的工作,以便我们尝试找出你所犯的错误(当然,如果有的话)

答案2

我有一个类似的场景,使用 ubuntu 12.04.02 作为服务器操作系统。
我当前的单个客户机正在运行 CentOS。
服务器有 4 个 NIC,我想为服务器单独运行 eth0,使用 eth1 进行 iSCSI 到存储,使用 eth2 和 eth3 为客户机运行。Eth0
、eth2 和 eth3 连接到同一个局域网。

不过,我不确定我是否正确地弄清楚了如何设置接口。
到目前为止,我找到的描述仅涉及服务器中的 1 个 NIC。

目前,我已使用 dhcp IP 配置了 eth0,因为我在 dhcp 服务器上使用了固定预留。
我的 eth2 桥接器名为 br2

我已经配置了 eth2 和 br2,如下所示

auto  eth2  
iface eth2 inet manual  

auto  br2  
iface br2 inet manual  
  bridge_ports   eth2  
  netmask   255.255.255.0  
  network   192.168.168.0  
  gateway   192.168.168.1  
  broadcast 192.168.168.255  
  bridge_stp     off  
  bridge_fd      0  
  bridge_maxwait 0  

 brctl addif br2 eth2  

接口 eth2 和 br2 按照预期启动,但没有 IP。
然后,客户机也使用 dhcp 请求其地址。

相关内容