8.2. 使用 libvirt 桥接的联网

桥接联网(也称为物理设备共享)是将物理设备专门用于一台虚拟机。桥接通常用于高级设置以及使用多个网络接口的服务器。

禁用 Xen 网络脚本

如果您的系统使用 Xen 桥接,则建议您编辑 /etc/xen/xend-config.sxp 文件并更改以下行禁用默认 Xen 网络桥接:

  1. (network-script network-bridge)

To:

  1. (network-script /bin/true)
禁用网络管理器(NetworkManager)

网络管理器不支持桥接。必须禁用网络管理器才可使用旧的网络脚本联网。

  1. # chkconfig NetworkManager off
  2. # chkconfig network on
  3. # service NetworkManager stop
  4. # service network start

Note

Instead of turning off NetworkManager, you can add “NM_CONTROLLED=no“ to the ifcfg-* scripts used in the examples.

生成网络初始化脚本

创建或者编辑以下两个网络配置文件。可重复这一步(使用不同名称)添加额外网络桥接。

改为 /etc/sysconfig/network-scripts 目录:

  1. # cd /etc/sysconfig/network-scripts

为您添加到桥接中的设备打开网络脚本。在这个示例中,ifcfg-eth0 定义已被设定为桥接一部分的物理网络接口:

  1. DEVICE=eth0
  2. # change the hardware address to match the hardware address your NIC uses
  3. HWADDR=00:16:76:D6:C9:45
  4. ONBOOT=yes
  5. BRIDGE=br0

Tip

您可以在配置文件最后附加 MTU 变量配置设备的最大传输单位(MTU)。

  1. MTU=9000

/etc/sysconfig/network-scripts 目录中创建名为 ifcfg-br0 和类似的新网络脚本。br0 是桥接名称,它可以是任何名称,只要该文件名称与 DEVICE 参数一致即可。

  1. DEVICE=br0
  2. TYPE=Bridge
  3. BOOTPROTO=dhcp
  4. ONBOOT=yes
  5. DELAY=0

Warning

The line, TYPE=Bridge, is case-sensitive. It must have uppercase ‘B’ and lower case ‘ridge’.

配置后请重启联网或者重新引导。

  1. # service network restart

Configure iptables to allow all traffic to be forwarded across the bridge.

  1. # iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
  2. # service iptables save
  3. # service iptables restart

Disable iptables on bridges

Alternatively, prevent bridged traffic from being processed by iptables rules. In /etc/sysctl.conf append the following lines:

  1. net.bridge.bridge-nf-call-ip6tables = 0
  2. net.bridge.bridge-nf-call-iptables = 0
  3. net.bridge.bridge-nf-call-arptables = 0

Reload the kernel parameters configured with sysctl

  1. # sysctl -p /etc/sysctl.conf

Restart the libvirt daemon.

  1. # service libvirtd reload

You should now have a “shared physical device”, which guests can be attached and have full LAN access. Verify your new bridge:

  1. # brctl show
  2. bridge name bridge id STP enabled interfaces
  3. virbr0 8000.000000000000 yes
  4. br0 8000.000e0cb30550 no eth0

请注意:该桥接完全独立于 virbr0 桥接。不要试图将物理设备附加到 virbr0virbr0 桥接只用于网络地址转换(NAT)连接性。