Ubuntu

Xen 4.6 和 Ubuntu 16.04 的橋接網路問題

  • June 13, 2016

我正在嘗試在 Ubuntu 16.04 和 Xen 4.6 上設置 Xen 虛擬化。

我的計劃是擁有 1 個專用網路,以及具有公共 IP 地址的虛擬伺服器,這些地址應該可以從外部訪問(以及連接到專用網路)。我的託管服務提供商給了我 4 個額外的公共 IP。

為此,我設置了兩個網橋:

# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.0025907784d4       no              eth0
                                                       vif3.0
                                                       vif3.0-emu
xenbr1          8000.36829b44377f       no              dummy0
                                                       vif3.1
                                                       vif3.1-emu

xenbr0 具有公共靜態 IP,xenbr1 具有私有 IP (192.168.122.1)

然後我將虛擬機配置如下

vif=[
'ip=<virtual server public ip>,mac=02:00:00:c1:fb:49,bridge=xenbr0',
'ip=192.168.122.6,mac=00:16:3E:59:FC:39,bridge=xenbr1'
]

我可以很好地連接到 192.168.122.6 地址,並且該機器可以通過 192.168.122.1 網關正確配置訪問網際網路。所以那裡一切都很好。

然後我在虛擬伺服器上的 /etc/network/interfaces 中添加公共 IP

auto eth0
iface eth0 inet static
   address <public ip>
   netmask 255.255.255.255
   network <public ip substituting .0 at the end>
   broadcast <public ip>
   hwaddress ether 02:00:00:c1:fb:49

和內部網路(有網關)

iface eth1 inet static
       address 192.168.122.6
       netmask 255.255.255.0
       network 192.168.122.0
       broadcast 192.168.122.255
       gateway 192.168.122.1

現在路線看起來像這樣

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.122.1   0.0.0.0         UG    0      0        0 eth1
192.168.122.0   *               255.255.255.0   U     0      0        0 eth1

顯然,我可以從伺服器本身 ping IP - 但我無法從外部或從 xen 伺服器本身連接到它。

我究竟做錯了什麼?

我的錯誤似乎是通過專用網路路由所有流量,並通過 eth1 - xenbr1 - dummy0。eth1 應僅用於專用網路,而 eth0 用於一般流量。

因此,從虛擬機上的 eth1 中刪除 /etc/network/interfaces 中的網關:

iface eth1 inet static
       address 192.168.122.6
       netmask 255.255.255.0
       network 192.168.122.0
       broadcast 192.168.122.255

並更改 eth0 以包括到主機和主機網關的靜態路由(我確信這可以在整個範圍內完成,而不是單獨的 2 個 IP,以進一步簡化這一點)。

iface eth0 inet static
   address 129.x.x.199
   netmask 255.255.255.0
   broadcast 129.x.x.199
   up route add 23.x.x.94 dev eth0
   up route add 23.x.x.254 dev eth0
   up route add default gw 23.x.x.94
   down route del default gw 23.x.x.254
   down route del 23.x.x.94 dev eth0
   down route del 23.x.x.254 dev eth0

注意我還從這個中刪除了網關定義 - 在添加靜態路由之前,網關是不可訪問的(這使得網路無法啟動)。

現在所有網際網路流量都通過 eth0-xenbr0-eth0 網橋路由,私有流量通過 eth1-xenbr1-dummy0 路由。

最終的路由表如下所示:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         23.x.x.254 0.0.0.0         UG    0      0        0 eth0
23.x.x.94 *               255.255.255.255 UH    0      0        0 eth0
23.x.x.254 *               255.255.255.255 UH    0      0        0 eth0
129.0.0.0   *               255.255.255.0   U     0      0        0 eth0
192.168.122.0   *               255.255.255.0   U     0      0        0 eth1

感謝 garethTheRed 的協助!

引用自:https://unix.stackexchange.com/questions/289154