Xen:不能让Dom0和DomUs去相互ping通

我们已经安装了Xen(4.1)configuration,无法让Dom0和DomU进行通信(相互ping通)。 DomU可以ping通对方,但不能连接Dom0,Dom0不能连接DomU。 我们在网上find了很多不同的东西,包括网站上提出的一些解决scheme(见下面),但是我们被卡住了…

这是我们的configuration:我们有两个来宾域:

  • VM1,ID 3
  • test2,ID 4

我们试图以接的方式将它们连接起来,就像在http://wiki.xen.org/wiki/XenNetworking#Bridging中那样 ,但是我们没有成功地做到这一点。

这里是ifconfconfiguration:

从Dom0:

# ifconfig eth0 Link encap:Ethernet HWaddr 00:26:22:45:33:59 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:35 Base address:0xc000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:460 errors:0 dropped:0 overruns:0 frame:0 TX packets:460 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:35512 (35.5 KB) TX bytes:35512 (35.5 KB) lxcbr0 Link encap:Ethernet HWaddr 9a:b8:f4:95:9f:36 inet addr:10.0.3.1 Bcast:10.0.3.255 Mask:255.255.255.0 inet6 addr: fe80::98b8:f4ff:fe95:9f36/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:62 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:10287 (10.2 KB) wlan0 Link encap:Ethernet HWaddr 70:1a:04:0d:09:74 inet6 addr: fe80::721a:4ff:fe0d:974/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:66 (66.0 B) TX bytes:0 (0.0 B) xenbr0 Link encap:Ethernet HWaddr 00:26:22:45:33:59 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

从VM1:

 VM1:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:22:99:77 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::216:3eff:fe22:9977/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1478 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:286514 (279.7 KiB) TX bytes:5330 (5.2 KiB) Interrupt:26 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:15 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1680 (1.6 KiB) TX bytes:1680 (1.6 KiB) 

从testing2:

 test2:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:16:3E:6A:81:FF inet addr:192.168.1.203 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::216:3eff:fe6a:81ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1278 errors:0 dropped:0 overruns:0 frame:0 TX packets:56 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:242526 (236.8 KiB) TX bytes:4488 (4.3 KiB) Interrupt:26 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:672 (672.0 b) TX bytes:672 (672.0 b) 

这里也是我们的/ etc / network / interfaces:

 auto lo iface lo inet loopback auto xenbr0 iface xenbr0 inet static bridge_ports eth0 address 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.0 auto eth0 iface eth0 inet manual 

这里是Dom0命令“brctl show”的结果:

 # brctl show bridge name bridge id STP enabled interfaces lxcbr0 8000.feffffffffff no vif3.0 vif4.0 xenbr0 8000.002622453359 no eth0 

我们到目前为止的尝试:

  • 给Dom0的eth0提供一个IP地址:

    ifconfig eth0 192.168.1.1networking掩码255.255.255.0

  • 我们试图按照这个答案dom0中的网桥不能ping多米诺的,但我们没有接口eth1,没有接口将工作。

任何build议,帮助?


感谢您的答案,brctl addif …不起作用。

这里是VM1的configuration文件:

 kernel = '/boot/vmlinuz-3.2.0-33-generic' ramdisk = '/boot/initrd.img-3.2.0-33-generic' vcpus = '1' memory = '128' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/VM1/disk.img,xvda2,w', 'file:/home/xen/domains/VM1/swap.img,xvda1,w', ] # # Physical volumes # # # Hostname # name = 'VM1' # # Networking # vif = [ 'ip=192.168.1.2,mac=00:16:3E:22:99:77' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' 

哦,我的,那么老…但是因为我在这里试图find一个解决scheme,这里是一个。 我认为你的问题是在你的VIF行“IP = 192.168.1.2” ,但如果我错了,答案是没用的。 即使我是对的,对于configuration稍有不同的人也没用。 所以,长版:

DomUnetworkingconfiguration(其他一切无所谓): vif=['bridge=xenbr0']

在虚拟接口上configuration网桥,就像这样(这些命令是以root身份执行的):

 # modprobe dummy # ifconfig dummy0 up # brctl addbr xenbr0 # brctl addif xenbr0 dummy0 

以下是启动虚拟机之后的外观(您可以看到虚拟机的vif16.0连接到您的网桥):

 # brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.1a088b6b402f no dummy0 vif16.0 

我使用DHCP,但可以手动分配IP。 DomU下的Dom0和eth0的xenbr0。 不要将任何IP分配给您的桥梁成员! 这个很重要。

Dom0的ifconfig看起来像这样(删除统计信息,使其体积更小):

 dummy0 Link encap:Ethernet HWaddr 1a:08:8b:6b:40:2f inet6 addr: fe80::1808:8bff:fe6b:402f/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 vif16.0 Link encap:Ethernet HWaddr fe:ff:ff:ff:ff:ff UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 xenbr0 Link encap:Ethernet HWaddr 1a:08:8b:6b:40:2f inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::1808:8bff:fe6b:402f/64 Scope:Link 

从DomU看起来像这样:

 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.21 netmask 255.255.255.0 broadcast 192.168.2.255 inet6 fe80::216:3eff:fe25:e843 prefixlen 64 scopeid 0x20<link> 

Pinging Dom0:

 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.238 ms 64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=0.279 ms 

而对于互联网访问(我的configuration基本上是NAT,你本应该有互联网访问)启用NAT可能需要这样的:

 iptables -t nat -A POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MASQUERADE 

对于故障排除使用tcpdump -v -i xenbr0 。 Ping有很大的帮助,因为Ping需要你的数据包出去并返回 ,因此不知道什么时候它丢失 – 出门还是回来。

你的configuration文件没有指定连接DomU的网桥。 您可以在vif节中指定桥:

 vif = [ 'mac=00:16:3E:22:99:77,bridge=xenbr0' ] 

您也可以指定IP地址和其他信息。 请参阅Xenconfiguration选项 。

在vif节中指定网桥会导致Xen在DomU分配虚拟接口后在Dom0上运行脚本。 这将虚拟接口添加到指定的网桥。

请注意,可能需要对networking设置进行额外的调整才能使其正常工作。 使用正确的Xenconfiguration选项将有助于简化其余部分。