Допустимо ли настроить контейнерную сеть таким образом:
Создайте фиктивный интерфейс на хосте
ip link add du0 type dummy
Создал два контейнера с помощью systemd-nspawn, каждый из которых имеет интерфейс macvlan, привязанный к этому фиктивному интерфейсу.
/etc/systemd/nspawn/proxy.nspawn и /etc/systemd/nspawn/apps.nspawn
[Network] VirtualEthernet=no MACVLAN=du0
Я не могу найти подобный пример в Интернете, я хотел бы знать, хорошо ли использовать macvlan таким образом, или есть ли лучший способ для достижения моей цели.
Моя цель — создать контейнер, который работает как с прямым, так и с обратным прокси. Он будет иметь несколько прокси-серверов пересылки, которые используют разные интерфейсы VPN для подключения к разным странам или напрямую используют физический интерфейс. И все остальные контейнеры будут подключаться к этому прокси-контейнеру, каждое приложение будет выбирать соответствующий прокси для использования.
Чтобы подключить эти контейнеры, systemd-nspawn поддерживает несколько вариантов. Я хотел бы использовать macvlan, потому что он кажется самым легким (лучшая производительность) среди всех вариантов. Но я хочу убедиться, что контейнер не может подключаться к Интернету напрямую, вместо этого он должен использовать прокси-контейнер. Я не хочу привязывать интерфейс macvlan к физическому интерфейсу. Поэтому я создал фиктивный интерфейс на хосте и привязал интерфейс macvlan к этому фиктивному интерфейсу. Я только что протестировал его, и он работает, контейнеры могут пинговать друг друга.
1 ответ
Ответьте на мой собственный вопрос. Это действительно. Докер делает это на ipvlan.
https://docs.docker.com/network/ipvlan/#prerequisites
Если родительский интерфейс не указан или используется флаг —internal, для пользователя создается фиктивный родительский интерфейс типа netlink, который используется в качестве родительского интерфейса, полностью изолируя сеть.
Дополнительная информация о macvlan и ipvlan. macvlan должен работать быстрее, если интерфейс поддерживает более одного mac-адреса. На фиктивном интерфейсе или Raspberry Pi интерфейс переходит в неразборчивый режим только с одним интерфейсом macvlan, поэтому в этих сценариях лучше использовать ipvlan.
Оставь это