Клиент контейнера Docker не может найти удаленный хост

Я работаю над получением клиента-контейнера Docker (на хосте A) для подключения к брокеру Mqtt (на хосте B).

Я могу успешно подключиться к брокеру на хосте B из-за пределов Docker на хосте A, но время ожидания попытки соединения из контейнера истекло.

  1. Соединение: клиент вне Docker (хост A) ==> посредник (хост B) = успех
  2. Соединение: клиент в контейнере Docker (хост A) ==> посредник (хост B) = время ожидания

Во время (1) трафик регистрируется в Wireshark (хост A) в Ethernet0, но ничего не происходит во время (2).

Брандмауэр корпоративной сети принимает соединения только от источника A к месту назначения B через порт 1883. Это наводит меня на мысль, что если попытка подключения из контейнера представляет собой другой исходный IP-адрес, то он не будет принят брандмауэром.

Это, однако, не представляется действительным из-за того, что на хосте A есть только два сетевых интерфейса (Ethernet0 и DockerNAT) и согласно документации Docker:

"Кажется, что каждое исходящее соединение исходит от одного из собственных IP-адресов хост-машины благодаря правилу маскировки iptables на хост-машине, которое сервер Docker создает при запуске" https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

В заключение кажется, что клиент в контейнере Docker не может найти хост B, поскольку в попытке подключения истекло время ожидания. Поскольку поведение по умолчанию похоже на состояние документации, должна быть какая-то другая причина, по которой невозможно установить соединение.

Узел A работает под управлением Windows Server 2019 Standard со стабильной версией Docker Desktop Community версии 2.0.0.3 (31259) Сборка: 8858db3

Вывод ipconfig: (Ethernet0)

  • IPv4-адрес:172.16.100.130

  • Маска подсети:255.255.255.248

  • Шлюз по умолчанию:172.16.100.129

Вывод ipconfig: (DockerNat)

  • IPv4-адрес:10.0.75.1

  • Маска подсети: 255.255.255.0

  • Шлюз по умолчанию:

Вывод ifconfig: (из контейнера)

  • IPv4-адрес:172.17.0.2

  • маска подсети: 255.255.0.0

  • вещать:172.17.255.255

Узел B работает под управлением Windows Server 2012 с RabbitMq в качестве посредника.

Выход ipconfig: (Ethernet)

  • IPv4-адрес:172.18.96.12

  • Маска подсети:255.255.224.0

  • Шлюз по умолчанию: 172.18.96.1

Будем рады услышать ваши предложения по этому поведению!

0 ответов

Другие вопросы по тегам