Ubuntu
Xen 4.6 和 Ubuntu 16.04 的橋接網路問題
我正在嘗試在 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 的協助!