具有桥接功能的 Xen VM 上的多个 IP

具有桥接功能的 Xen VM 上的多个 IP

虽然我对 XEN 还不太熟悉(在 Ubuntu 14.04 下运行),但到目前为止我还没有遇到任何实际问题。我已经使用桥接设置了网络,到目前为止,这种方法在许多不同的机器上都运行良好。通常我可以在某个地方找到答案,但这次我遇到了麻烦,正在寻求帮助。

我有一台客户端虚拟机 (DomU),我正尝试设置大量 IP,但结果却让我很头疼。设置如下:

主机有两个 NIC,一个用于私有(10.10.10.x)xenbr0,另一个仅桥接公共 IPS(例如 xyz*)xenbr1:

以下是我/etc/networking/interfaces从主机获得的文件:

iface eth0 inet manual
auto xenbr0
iface xenbr0 inet static
    bridge_ports eth0
    address 10.10.10.112
    netmask 255.255.255.0
    network 10.10.10.0
    broadcast 10.10.10.255
    gateway 10.10.10.1

auto eth1
iface eth1 inet manual
auto xenbr1
iface xenbr1 inet manual
       bridge_ports eth1
       bridge_maxwait 1

在客户端虚拟机中还使用两个桥接网卡/etc/networking/interfaces

auto eth0
iface eth0 inet  static
    address x.y.z.170
    netmask 255.255.255.240
    broadcast x.y.z.175
    gateway x.y.z.161

auto eth1
iface eth1 inet static
    address 10.10.10.155
    netmask 255.255.255.0
    broadcast 10.10.10.255
auto eth0:1                    
iface eth0:1 inet static       
        address x.y.z.162      
        netmask 255.255.255.240
        broadcast x.y.z.175    
auto eth0:2                    
iface eth0:2 inet static       
        address x.y.z.163      
        netmask 255.255.255.240
        broadcast x.y.z.175    
auto eth0:3                    
iface eth0:3 inet static       
        address x.y.z.164      
        netmask 255.255.255.240
        broadcast x.y.z.175    
etc…. up to 8 alaises.    

在我的 xen 配置文件中我有: vif = [ 'bridge=xenbr0', 'bridge=xenbr1' ]

我计划在一切设置完毕并正常运行后从 VM 中删除本地 IP。

我使用别名,因为我正尝试将其从裸机移至虚拟机。最终将解决 IPS 的过度使用问题,但由于各种原因,我暂时无法做到这一点。无论如何,当我启动虚拟机时,只有少数 IP 可 ping 通,除非我arping -U -I eth1 x.y.z.162对每个 IP 地址执行 等。然后,一切似乎至少有所响应,但路由实际上无法正常工作。我可以通过 http ssh 和浏览 IP,但虚拟站点无法正常工作(即,它只将我发送到一个而忽略其他站点),重新启动 bind 和一些其他服务无法正确响应。就好像路由设置不正确,虽然 IP 有响应,但真正响应的不是请求的 IP,而是另一个 IP。
然而,这只发生在一些额外的 IPS 上。当我重新启动时,arp 命令修复的路由会丢失。然后 Bind 和虚拟机上的其他一些服务将无法工作。我执行 arp 命令,一切又恢复正常。
我认为 arping 只是权宜之计,并不能解决真正的问题。由于完全相同的系统在裸机上运行,​​我几乎可以肯定问题出在我的 XEN 网络设置上,而不是我尝试迁移的交换机设置或操作系统上。

为了进一步隔离问题,我使用更现代的(而不是贬值的 IP 别名)设置设置了一个具有多个 IP 的干净的 Ubuntu 14.04 客户机,如下面的 VM/etc/networking/interfaces文件中所示:

 auto eth0
allow-hotplug eth0
iface eth0 inet static
      address x.y.z.110
      netmask 255.255.255.240
      broadcast x.y.z.175
      gateway x.y.z.161
iface eth0 inet static
      address x.y.z 162
      netmask 255.255.255.240
      broadcast x.y.z.175
iface eth0 inet static
      address x.y.z 163
      netmask 255.255.255.240
      broadcast x.y.z.175
   and on with the other IPS

所有结果都相同。我遗漏了什么?任何帮助都将不胜感激。

答案1

我弄清楚了我的问题是什么,如果有人遇到类似的问题我会在这里发布它。

在我的 Xen 配置中,我没有输入 MAC 地址。例如,我有:

vif = [ 'bridge=xenbr0', 'bridge=xenbr1' ]

当我需要类似的东西时:

vif = [ 'bridge=xenbr0', 'mac=00:11:5e:5n:2c:1c,bridge=xenbr1' ]

MAC 地址的路由不会立即过期,因此对每个 IP 运行此 ARP 命令可以修复路由: arping -U -I eth1 x.y.z.162

我猜测每次虚拟机启动时它都有一个新的 MAC 地址,并且只有部分路由表在虚拟机启动时更新。

既然 MAC 地址没有改变,一切都很好。

答案2

尝试在 DomU 中交换接口配置。根据您的 Dom0 配置,您应该在 DomU 中使用 eth0 作为私有 IP,使用 eth1 作为公共 IP。

相关内容