Клиент контейнера Docker не может найти удаленный хост
Я работаю над получением клиента-контейнера Docker (на хосте A) для подключения к брокеру Mqtt (на хосте B).
Я могу успешно подключиться к брокеру на хосте B из-за пределов Docker на хосте A, но время ожидания попытки соединения из контейнера истекло.
- Соединение: клиент вне Docker (хост A) ==> посредник (хост B) = успех
- Соединение: клиент в контейнере 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
Будем рады услышать ваши предложения по этому поведению!