LXC容器只能通过网桥访问主机

我有一个运行在x86_64 Ubuntu 12.04主机上的i686 Ubuntu 12.04的LXC容器。 我在这里设置了一个使用说明的桥梁。 但是,容器中的ping仅通过主机而不是本地networking上的其他计算机。 同样,只有主机而不是其他机器才能看到容器操作系统。

主机的/etc/network/interfaces文件如下所示:

 auto lo iface lo inet loopback iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_fd 0 bridge_maxwait 0 

容器的/etc/network/interfaces文件如下所示:

 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 

这里是容器configuration的相关部分:

 lxc.network.type=veth lxc.network.link=br0 lxc.network.flags=up 

任何想法我做错了什么?

附加信息:

iptables-save的输出iptables-save在主机上:

 $ sudo iptables-save # Generated by iptables-save v1.4.12 on Sat Oct 26 06:06:48 2013 *filter :INPUT ACCEPT [6854:721708] :FORWARD ACCEPT [4067:538895] :OUTPUT ACCEPT [4967:522405] COMMIT # Completed on Sat Oct 26 06:06:48 2013 # Generated by iptables-save v1.4.12 on Sat Oct 26 06:06:48 2013 *nat :PREROUTING ACCEPT [82235:21547307] :INPUT ACCEPT [16:1070] :OUTPUT ACCEPT [9386:583359] :POSTROUTING ACCEPT [14693:1291952] -A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE COMMIT # Completed on Sat Oct 26 06:06:48 2013 

在主机上brctl show的输出:

 $ brctl show bridge name bridge id STP enabled interfaces br0 8000.080027409684 no eth0 vethBkwWyV 

主机上ifconfig br0的输出:

 $ ifconfig br0 br0 Link encap:Ethernet HWaddr 08:00:27:40:96:84 inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe40:9684/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:232863 errors:0 dropped:0 overruns:0 frame:0 TX packets:59518 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:34437354 (34.4 MB) TX bytes:198492871 (198.4 MB) 

主机上ifconfig eth0的输出:

 $ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:40:96:84 inet6 addr: fe80::a00:27ff:fe40:9684/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:299419 errors:0 dropped:0 overruns:0 frame:0 TX packets:203569 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:59077446 (59.0 MB) TX bytes:372056540 (372.0 MB) 

容器上ifconfig eth0的输出:

 $ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:3e:74:08:2b inet addr:192.168.1.12 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::216:3eff:fe74:82b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:81 errors:0 dropped:0 overruns:0 frame:0 TX packets:113 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8506 (8.5 KB) TX bytes:9021 (9.0 KB) 

要解决这个问题,你可以检查下面的内容:

  1. br0(主机)和eth0(容器)的ip地址在同一个子网中。
  2. ip转发为:cat / proc / sys / net / ipv4 / ip_forward
  3. stream量不被iptables阻止。

UPD:如果上述不能解决问题:

  1. 检查容器和lan主机arp -n上的arpcaching状态
  2. 使用tcpdumpdebuggingarp和icmp数据包: /usr/sbin/tcpdump -n -i <ifname> arp or icmp
  3. route检查路线表