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

Amazon EC2 / VPC LXC Bridge не работает

На инстансе AWS EC2 мне нравится размещать контейнеры LXC как своего рода виртуальные серверы. Я создал мост (br0), содержащий только eth0, и дал ему частный IP-адрес моей подсети VPC. Я перенастроил LXC, чтобы использовать в качестве моста не lxcbr0, а мое устройство br0.

Когда я добавляю новый контейнер и назначаю ему IP-адрес моей подсети VPC, я могу получить доступ к контейнеру с хоста lxc. Я также могу связаться с хостом lxc из контейнера. Но любой другой адрес недоступен, хотя и находится в той же подсети.

Конфигурация моста:

auto br0
iface br0 inet static

bridge_ports eth0
bridge_fd 2
bridge_stp off

address 10.8.0.11
netmask 255.255.255.0
network 10.8.0.0
broadcast 10.8.0.255
gateway 10.8.0.1
dns-nameservers 8.8.8.8 8.8.4.4

VPC NIC был настроен на «Отключить проверку источника / назначения»

ip_forwarding установлен в 1

правила iptables отсутствуют

eth0 установлен в неразборчивый режим (ip link устанавливает eth0 promisc on)

Контейнеры lxc правильно связаны с моим мостом

Эта настройка работала только в аппаратной среде, а также в среде VirtualBox. Однако на AWS этого не происходит.

Согласно ответу Нэта, я поместил контейнеры LXC в их собственную сеть и направил трафик между сетями. Теперь это работает!

Мостовое соединение не будет работать, VPC не является сетью уровня 2, и все IP-адреса должны быть назначены через API ec2. Лучше всего использовать полностью отдельную (неконфликтную) подсеть и направить трафик хоста в контейнеры lxc. Затем обновите таблицы маршрутов VPC статическим маршрутом к этой подсети через сетевую карту экземпляров ec2. Так работает openVPN.