Я настраиваю сервер для размещения нескольких контейнеров LXC, а пока просто изолирую сервисы web и db. Сервер, который я использую, имеет две сетевые карты, и я хотел бы использовать одну для трафика хоста и одну для трафика контейнера (так как оба контейнера имеют маршрутизируемые IP-адреса), чтобы я мог маршрутизировать трафик через два разных vlans на моем коммутаторе.
Прежде чем погрузиться в выполнение всего этого, я пытаюсь понять, верен ли мой образ мыслей о том, как это сделать. Насколько я понимаю, я бы создал мостовое устройство в своих хост-интерфейсах, скажем, br0
, которое включает в себя bridge_ports eth1
. Насколько я знаю, этот мост не должен требовать какого-либо IP (но я не совсем уверен ...)
В контейнерах я бы изменил сетевые интерфейсы на мосты macvlan, связанные с br0 с помощью статические IP-адреса.
Это даже отдаленно верно? Я до сих пор не работал с маршрутизацией в контейнерных сетях ... (также здесь есть отличная иллюстрация того, что я думаю, я делаю)
+----------------+
| |
| managed switch |
| |
+-+----------+---+
| |
+-----+ +-------+
| |
+---+----+ +--+-----+
| | | |
| vlan 1 | | vlan 2 |
| | | |
+--+-----+ +--+-----+
| |
| eth0 +-------------+
| eth1 | |
| +-------------------+ |
| | |
+---+-----++ +---------------+ |
| | lxc | | |
| lxc host +------+-----+ web container +---+ br0
| | | | | |
+----------+ | +---------------+ |
| |
| +--------------+ |
| | | |
+-----+ db container +----+
| |
+--------------+
Можно использовать мост или macvlan, но Вам не нужны оба. Так как Вы, кажется, знаете о macvlans, я обрисую в общих чертах подход macvlan.
просто необходимо создать карты виртуальной сети (VLAN) в веб-контейнере и связать их с NIC, выделенным хостингу контейнерного трафика.
карты виртуальной сети затем выставляются то же как контейнерный NICs и получают DHCP, или можно использовать Статического дюйм/с
Ниже, базовые инструкции, но подробные шаги и фон, прибывший из этой статьи .
Bonsai Framework, Создают Постоянный macvlan на Хосте
, Добавляют к нижней части
/etc/network/interfaces
, файл хоста,# Creates a macvlan interface called macvlan0 without an IP address iface mvlan0 inet manual pre-up ip link add mvlan0 link eth0 address 8a:38:2a:cc:d7:aa type macvlan mode bridge post-down ip link del macvlan0 auto mvlan0
Перезагружают систему, чтобы иметь изменение, вступают в силу. Вы будете уведомление a mvlan0
теперь при просмотре сетевых устройств с ifconfig -a
.
Контейнер Подключения к macvlan
на Хосте путем изменения файла конфигурации, расположенного в /var/lib/lxc/[container]/config
.
записи для добавления для новой сетевой платы,
# macvlan for external IP lxc.network.type = macvlan lxc.network.macvlan.mode = bridge lxc.network.flags = up lxc.network.link = mvlan0 lxc.network.hwaddr = 00:16:3e:8d:4f:51 lxc.network.name = eth0
Для hwaddr, генерируют уникальный локально администрируемый одноадресный MAC-адрес через бесплатный вебсайт как helion.org .
Наконец, скорректируйте файл интерфейсов в контейнере для привязки через помехи или если Вы предпочитаете динамичное использование.
В моем случае, я корректирую свой домашний маршрутизатор так, чтобы 192.168.0.1 к 192.168.0.20 не были динамично присвоены и использовали статичный в моем LXC.
, Таким образом, я изменяю свой файл интерфейсов контейнеров следующим образом,
auto eth0
iface eth0 inet static
address 192.168.0.12
gateway 192.168.0.1
netmask 255.255.255.0
auto eth1
iface eth1 inet dhcp
Перезапуск Ваш контейнер Linux.