Назад | Перейти на главную страницу

eth0 на lxc не работает

Я столкнулся с некоторыми проблемами, связанными с тем, что eth0 в контейнере lxc не работает. Я уже пробовал Соединение контейнеров LXC с хостом eth0, чтобы они могли иметь общедоступный IP, но это не помогает.

На моем хосте (Ubuntu на виртуальном боксе):

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

config

# 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

Любая помощь?

У вас включен iptables (или ip6tables) на вашем хосте? Если да, вам необходимо ПРИНЯТЬ трафик в цепочке FORWARD вашего моста с участием:

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

Причина в том, что опция br-nf (фильтр мостовой сети) включен по умолчанию в ядре 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

Перейдите по этой ссылке для получения дополнительной информации о Взаимодействие ebtables / iptables на мосту на базе Linux.