lxc 上的 eth0 不工作

lxc 上的 eth0 不工作

我遇到了一些问题,lxc 容器上的 eth0 无法工作。我已经尝试过 将 LXC 容器桥接到主机 eth0,以便它们可以拥有公共 IP,但这没有帮助。

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

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

配置

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

我用上述配置创建了一个容器

# 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

有什么帮助吗?

答案1

你的主机上是否启用了 iptables (或 ip6tables)?如果启用了,您需要接受桥接器转发链上的流量和:

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

原因是 br-nf(bridge-net filter)选项默认启用在 2.6 内核中,桥接流量通过 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 交互

相关内容