Networking

具有多個子網的 KVM 的 IP 橋接器

  • August 9, 2012

我有一台執行 KVM 的機器,並在 eth0 上有一個帶有機器 IP 地址的網橋。該機器的 IP 地址範圍內沒有更多可用的 IP 地址。我正在嘗試為 KVM 來賓提供第二個子網,以用於他們的 IP 地址。

network -- eth0 ---    bridge0    --|
                   (x.x.x.75/26)   |-- guest0:eth0 (x.x.y.213/28)
                                   |
                                   |-- guest1:eth0 (x.x.y.214/28)

我通過在主機上創建一個 ifcfg-bridge0 文件來創建網橋,它通常似乎可以正常工作,但是我無法啟動從外部世界到來賓的連接。奇怪的是客人可以訪問網際網路,所以很明顯返回的數據包到達了它們要去的地方,但無法建立新的連接。這方面的範例是,如果我使用 VNC 連接到其中一位客人,我可以執行wget http://google.com/並獲得頁面。

主機和來賓 iptables 都已刷新,因此沒有 iptables 規則。在主機上,路由命令的輸出是

host# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
x.x.x.64        0.0.0.0         255.255.255.224 U     0      0        0 bridge0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 bridge0
0.0.0.0         x.x.x.94        0.0.0.0         UG    0      0        0 bridge0

為了嘗試使路由正常工作,我嘗試使用類似route add --net x.x.y.208 netmask 255.255.255.240 bridge0. 添加路由後,我在主機上的路由表看起來像

host# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
x.x.y.208       0.0.0.0         255.255.255.240 U     0      0        0 bridge0
x.x.x.64        0.0.0.0         255.255.255.224 U     0      0        0 bridge0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 bridge0
0.0.0.0         x.x.x.94        0.0.0.0         UG    0      0        0 bridge0

但是,主機仍然無法訪問來賓。如果我跟踪客人,我看不到連接斷開,我只是看到

host# traceroute x.x.y.213
traceroute to x.x.y.213, 30 hops max, 60 byte packets
1  x.x.y.213  0.639 ms  0.771 ms  0.784 ms

但是當我嘗試連接到機器時(例如telnet x.x.y.213 22)我沒有連接(如果我執行telnet x.x.y.213 22或者telnet x.x.x.75 22我得到結果,則在來賓上進行比較)。

如果兩個子網(/28 和/26)都橋接到同一個介面,那麼您需要上游網路上兩個網路中的地址(即整個網路的路由器上的輔助地址)。

將網橋上的虛擬主機想像成它們連接到與主機的 NIC 相同的交換機。主機(即 bridge0)位於不同的 IP 子網中這一事實意味著兩者之間需要有某種網關。

兩個選項 - 要麼將所有主機重新編號到同一網路,要麼在兩者之間提供某種路由介面。

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