我正在尝试在 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 网关正确配置访问互联网。所以那里一切都很好。
然后我将公共IP添加到虚拟服务器上的/etc/network/interfaces中
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 服务器本身连接到它。
我究竟做错了什么?
答案1
我的错误似乎是通过专用网络路由所有流量,并通过 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 的帮助!