Linux

具有兩個 NIC 的 KVM 網橋

  • May 7, 2013

你好,

我正在嘗試使用 KVM 建立橋接網路,但無處可去。有關於該主題的文件和教程,但它們似乎都存在衝突或沒有提供足夠的資訊。我想知道是否有人可以給我一個關於如何使它工作的高級概述。我可能自己可以解決細節(配置介面、添加路由等),我只需要大局的幫助:一切是如何相互連接的。

我有一個安裝並執行 KVM 的 RHEL5 伺服器。它有兩個物理網卡,eth0 和 eth1 在同一個 VLAN 中。我想將 eth1 用於來賓與網路其餘部分之間的所有流量,並儘可能保留 eth0 用於主機管理、來賓遷移等。我並不挑剔哪一個獲得預設路由,儘管如果我們能將它設為 eth0 那就太好了。所有來賓都將擁有靜態 IP。我希望在添加新來賓時,只需要從來賓本身內部設置網路配置。基本上,我想要這個:

eth0:所有主機流量

eth1:所有訪客流量

如果這不可能或會很笨拙/困難,請接受任何其他建議。指向現有文件的指針可能沒有幫助,因為我已經了解了幾乎所有內容。

謝謝你的幫助。

更新

好的,這是我目前所擁有的:

  • eth0 正常配置為靜態 IP 地址。那裡沒有驚喜。
  • br0 作為沒有 IP 地址的網橋啟動
  • eth1 啟動時沒有 IP 地址。它被添加到 br0 網橋。
  • VM 實例配置為使用 br0 並配置了靜態 IP 地址

使用此配置,我可以從來賓內部連接到外部機器,但發往來賓的數據包永遠不會成功。到目前為止,這是我的配置:

# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=YES

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# host-only interface
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:23:7D:E1:1F:22
IPADDR=10.8.91.18
NETMASK=255.255.252.0
GATEWAY=10.8.91.254
BOOTPROTO=none
ONBOOT=yes

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# guest-only interface
DEVICE=eth1
TYPE=Ethernet
BRIDGE=br0
HWADDR=00:23:7d:e1:1f:26
BOOTPROTO=NONE
ONBOOT=YES

(virbr0 is the default kvm/libvirt NAT bridge, it's not being used here)
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.00237de11f26       no              vnet0
                                                       eth1
virbr0          8000.000000000000       yes

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
10.8.88.0       *               255.255.252.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         10.8.91.254     0.0.0.0         UG    0      0        0 eth0

這是來賓的 libvirt XML 定義的相關部分:

<interface type='bridge'>
 <mac address='54:52:00:76:94:73'/>
 <source bridge='br0'/>
</interface>

更新 2

好吧,我想我已經準備好了。我的客戶作業系統(SLES 11,我不熟悉)預設具有一組相當嚴格的防火牆規則,這讓我大吃一驚。一旦防火牆被清空,我就可以進出連接。

我想您知道如何在 NIC 上設置網橋,所以基本上您只需要在兩個 NIC 上設置兩個網橋,然後啟動 VM 以連接到正確的網橋。想想看,其中一個 NIC 可以不用橋接器,因為客人不需要使用它。

這是我看待問題的一般描述。你能不能展示一下你現在做了什麼,所以我們可以試著找出你犯的錯誤,如果有的話

我有一個類似的場景,將 ubuntu 12.04.02 作為伺服器作業系統。

我目前的單身客人正在執行 CentOS。

伺服器有 4 個 NIC,我想單獨為伺服器執行 eth0,將 eth1 用於 iSCSI 到儲存,eth2 和 eth3 用於來賓。

Eth0、eth2 和 eth3 連接到同一個區域網路。

我不確定我是否正確地弄清楚瞭如何設置介面。

到目前為止,我發現的描述僅涉及伺服器中的 1 個 NIC。

目前我已經使用 dhcp IP 配置了 eth0,因為我在 dhcp 伺服器上使用了固定預留。

我的 eth2 橋名為 br2

我已將 eth2 和 br2 配置如下

auto  eth2  
iface eth2 inet manual  

auto  br2  
iface br2 inet manual  
 bridge_ports   eth2  
 netmask   255.255.255.0  
 network   192.168.168.0  
 gateway   192.168.168.1  
 broadcast 192.168.168.255  
 bridge_stp     off  
 bridge_fd      0  
 bridge_maxwait 0  

brctl addif br2 eth2  

eth2 和 br2 介面按預期在沒有 IP 的情況下啟動。

然後,客人還使用 dhcp 請求他們的地址。

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