Linux

libvirtd - 讓 vps 使用現有的網橋

  • September 5, 2013

我一直在努力讓 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 隧道(?)?

這是絕對有道理的。設置網橋時會發生什麼,是一個沒有任何東西插入的虛擬網橋設備(brctl show將在其下列出任何 NIC)。

當您將網橋連接到物理介面時,它將顯示為插入網橋的介面之一,實際上真正的流量會通過它,但這只是網橋的一個介面。當您啟動虛擬機時,它會提供一個分接設備,該設備也應該插入交換機,因此交換機可以有兩個介面並在兩者之間移動流量。只需將網橋視為網路交換機,VM 被插入(tap 是 vnet0 設備)並且真正的 NIC 也被插入。更多的虛擬機可以插入這個網橋,它們的所有流量都將通過你連接到網橋的物理網卡進入網路。

引用自:https://serverfault.com/questions/536114