libvirtd – 获取vps使用现有的桥梁

我一直在努力在CentOS 6.4上运行KVM,并遇到了一个麻烦。 通过几个在线文档,关于设置一个桥接vps连接,并手动尝试进行必要的更改,我终于碰到了这篇文章 ,演示了一种自动的方式来做到这一点:

virsh iface-bridge eth1 br0 

现在当我做brctl show我得到以下内容:

 bridge name bridge id STP enabled interfaces br0 8000.001b78bb915a yes eth1 

一切看起来不错。 在我的域configuration我有以下networking构造:

 <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' 

经过更多的search后,我发现我可以通过发出以下内容列出虚拟机pipe理程序可用的networking:

 $ -> virsh net-list --all 

但就我而言,这是空的。 所以我发现这篇文章演示了如何设置使用现有的网桥,所以我的configuration如下所示:

 <network> <name>br0</name> <forward mode="bridge"/> <bridge name="br0" /> </network> 

我通过virsh net-define /tmp/br0.xml将其添加到pipe理程序。 然后,我开始了networking和我的域名,但现在当我发出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桥? 是否为由虚拟机pipe理程序启动的每个vps创build一个新的vnetX隧道(?)?

这是绝对有意义的。 当你build立一个网桥时会发生什么,是一个没有任何插入的虚拟网桥设备( brctl show将不会列出它下面的网卡)。

当你将网桥连接到一个物理接口时,它将会作为插入到网桥中的一个接口出现,通过这个接口实际上真正的stream量将会stream逝,但这只是网桥的一个接口。 当你启动一台虚拟机时,会出现一个tap设备,这个设备也应该插在交换机上,这样交换机就可以有两个接口,并在两者之间传输stream量。 只要将网桥看作是networking交换机,虚拟机就是插在networking上的(网关是vnet0设备),而真正的网卡也是被插入的。 更多的虚拟机可以插入这个网桥,所有的stream量将通过您连接到网桥的物理网卡进入networking。