Xen 4.6 和 Ubuntu 16.04 的桥接网络问题

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 网关正确配置访问互联网。所以那里一切都很好。

然后我将公共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 的帮助!

相关内容