我一直在努力让 KVM 在 CentOS 6.4 上运行,但遇到了麻烦。在浏览了几篇关于为 vps 设置连接桥的在线文档,并手动尝试进行必要的更改后,我终于遇到了本文它演示了一种自动化的方法:
virsh iface-bridge eth1 br0
现在当我这样做时,brctl show
我得到了以下信息:
bridge name bridge id STP enabled interfaces
br0 8000.001b78bb915a yes eth1
到目前为止一切看起来都很好。在我的域配置中,我有以下网络构造:
<interface type='network'>
<mac address='52:54:00:a3:dd:2c'/>
<source network='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
然而,当我尝试启动域时,我不断收到以下错误:
error: Failed to start domain service-a-2
error: Network not found: no network with matching name 'br0'
经过进一步搜索后,我发现可以通过以下命令列出虚拟机管理程序可用的网络:
$ -> virsh net-list --all
但在我的例子中,它是空的。所以我找到了本文它演示了如何设置使用现有桥,所以我的配置如下所示:
<network>
<name>br0</name>
<forward mode="bridge"/>
<bridge name="br0" />
</network>
我通过 将其添加到虚拟机管理程序virsh net-define /tmp/br0.xml
。然后我启动了网络和我的域,但现在当我发出ifconfig
命令时,我看到的是 vnet0 条目:
vnet0 Link encap:Ethernet HWaddr FE:54:00:A3:DD:2C
inet6 addr: fe80::fc54:ff:fea3:dd2c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
这没有道理,域不应该使用现有的 br0 桥吗?虚拟机管理程序启动的每个 vps 都会创建一个新的 vnetX 隧道(?)?
答案1
这绝对有道理。设置桥接时,会出现一个虚拟桥接设备,其中没有插入任何内容(brctl show
不会列出其下的 NIC)。
当您将网桥连接到物理接口时,它将显示为插入网桥的接口之一,并且实际流量将通过该接口传输,但这只是网桥的一个接口。当您启动虚拟机时,它会附带一个分接设备,该设备也应插入交换机,因此交换机可以有两个接口并在两者之间移动流量。只需将网桥视为网络交换机,虚拟机插入其中(分接设备是 vnet0 设备),实际 NIC 也插入其中。可以将更多虚拟机插入此网桥,它们的所有流量都将通过您连接到网桥的物理 NIC 进入网络。