libvirtd - 讓 vps 使用現有的網橋

libvirtd - 讓 vps 使用現有的網橋

我一直致力於讓 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下面不會列出任何網卡)。

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

相關內容