lxc上的eth0不起作用

我正面临一些问题,lxc容器上的eth0不起作用。 我已经尝试了桥接LXC容器来承载eth0,所以他们可以拥有一个公共的IP ,但是没有任何帮助。

在我的主机上(Ubuntu上的virtualbox):

# cat /proc/sys/net/ipv4/ip_forward 1 

configuration

 # cat /var/lib/lxc/config lxc.config lxc.utsname=ubuntu lxc.network.type=veth lxc.network.link=br0 lxc.network.flags=up 

我用上面的configuration创build了一个容器

 # lxc-create -t centos -f config -n centos1 

然后启动

 # lxc-start -d -n centos1 # lxc-console -n centos1 

看起来veth是正确的连接,因为主机说

 # brctl show bridge name bridge id STP enabled interfaces br0 8000.080027bb0aca no eth0 veth48BKPz lxcbr0 8000.000000000000 no 

而且默认网关似乎也在主机上正确设置

 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.11.1 0.0.0.0 UG 100 0 0 br0 10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 lxcbr0 192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 

在lxc容器上

 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.11.1 0.0.0.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1009 0 0 eth0 192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 

任何帮助?

你的主机上启用了iptables(或ip6tables)吗? 如果你这样做, 你需要接受你的桥梁的FORWARD链上的交通 :

 iptables -A FORWARD -p all -i br0 -j ACCEPT 

原因是2.6内核默认启用了br-nf(bridge-net filter)选项,所以桥接的stream量通过iptables。 你可以通过这样做来禁用它 :

 echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables 

点击这个链接了解更多关于基于Linux桥梁上ebtables / iptables交互的信息。