Почему мой хост Docker может получить доступ к контейнерам в ipvlan, если родительской сетью является Wi-Fi, но не когда родительской сетью является Ethernet?
У меня есть настройка компоновки Docker, состоящая из двух контейнеров (хотя я добавлю еще, как только решу текущую проблему). Я запускаю его на машине Linux Mint с Docker.24.0.7
и Docker Compose2.21.0
.
Требования к сетевым коммуникациям:
- Контейнеры могут общаться друг с другом
- Контейнеры могут взаимодействовать с другими устройствами в моей домашней подсети. Это связано с тем, что в моей домашней подсети есть другое аппаратное устройство, которое используется одним из контейнеров.
- Хост может общаться с контейнерами. Это связано с тем, что один из контейнеров предоставляет интерфейс настройки через HTTP.
В зависимости от того, использую ли я проводное или беспроводное соединение, а также использую ли я сети, я получаю различное поведение следующим образом:
Хотя я нашел работающую комбинацию (беспроводное соединение с ), из практических соображений я хочу использовать проводное соединение.
На самом деле я не сетевик и изо всех сил пытаюсь понять разницу в поведении, которую наблюдаю. Меня особенно смущает, почему работает так, как ожидалось, с беспроводной связью, но не с проводной. Может ли кто-нибудь сказать мне, почему это может быть и как я могу удовлетворить свои требования с помощью проводного соединения?
Вот соответствующая часть моегоcompose.yaml
показывая, как определена моя сеть:
my-network:
driver: ${NETWORK_DRIVER:?specify the type of network driver to use}
driver_opts:
parent: ${NETWORK_PARENT:?specify the name of the physical network upon which the Docker stack's network will be based}
ipam:
config:
- subnet: 192.168.10.0/24
gateway: 192.168.10.1
Во избежание сомнений: я передаю правильный родительский элемент сети в зависимости от того, установлен ли драйвер.macvlan
илиipvlan
и подтвердили это после создания стека Docker.
ОБНОВЛЕНИЕ: становится еще страннее. Оказывается, чтобы сеть ipvlan работала через Wi-Fi, у меня также должно быть активное соединение Ethernet. Как только я отключу Ethernet, мой хост больше не сможет получить доступ к контейнерам. Причем неважно, включен Wi-Fi или нет, ipvlan не будет работать с Ethernet в качестве родителя.