Linux
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 隧道(?)?
這是絕對有道理的。設置網橋時會發生什麼,是一個沒有任何東西插入的虛擬網橋設備(
brctl show
將在其下列出任何 NIC)。當您將網橋連接到物理介面時,它將顯示為插入網橋的介面之一,實際上真正的流量會通過它,但這只是網橋的一個介面。當您啟動虛擬機時,它會提供一個分接設備,該設備也應該插入交換機,因此交換機可以有兩個介面並在兩者之間移動流量。只需將網橋視為網路交換機,VM 被插入(tap 是 vnet0 設備)並且真正的 NIC 也被插入。更多的虛擬機可以插入這個網橋,它們的所有流量都將通過你連接到網橋的物理網卡進入網路。