Docker Swarm, работающий на рабочей станции VM 15, не принимает рабочее соединение

Я запускаю диспетчер роя докеров в проигрывателе VM Workstation 15 с NAT (VM: Ubuntu 19.10, Host: Windows 10). Я запустил docker swarm init --advertise-addr 223.181.240.48:2377 на своем менеджере vm. Теперь я скопировал токен и использовал его на другой моей виртуальной машине, которая работает на другом узле и в другой сети с NAT. он возвращает следующую ошибку:

Ответ об ошибке от демона: истекло время ожидания до присоединения к узлу. Попытка присоединиться к рою будет продолжаться в фоновом режиме. Используйте команду «docker info», чтобы увидеть текущий статус роя вашего узла.

Затем я попытался найти ошибку в Google и узнал, что проблема может возникнуть из-за брандмауэра, и мне, возможно, придется разблокировать порт. Кроме того, поскольку я использую NAT, мне нужно либо использовать автоматический мост, либо переадресацию порта. Сначала я попытался используя невесту (в настройках виртуальной машины я изменил сеть на мост), но когда я попробовал «мой IP», результаты были одинаковыми как на хост-машине, так и на виртуальной машине (223.181.240.48). Итак, я попробовал переадресацию портов с помощью NAT, я пошел в C:/ProgramData/VMware/vmnetnat.conf и добавил следующую строку

[incomingtcp]
2377:192.168.172.2:2377

192.168.172.2 - это адрес сетевого шлюза моей виртуальной машины. Затем я снова запустил команду docker swarm, скопированную на другую мою виртуальную машину. Теперь я получил следующую ошибку:

Ответ об ошибке от демона: ошибка rpc: код = Недоступно desc = все SubConns находятся в TransientFailure, последняя ошибка подключения: ошибка подключения: desc = «транспорт: ошибка при наборе номера tcp 233.181.240.48:2377: подключение: соединение отклонено»

Затем я попробовал sudo ufw разрешить 2377/tcp разблокировать порт в vm. Затем повторил всю процедуру еще раз. Теперь я снова получаю ошибку тайм-аута. Я что-то пропустил в середине? или что-то не так сделал? И в чем разница между ip, который я получаю через поиск Google «мой ip», и ipv4, который я получаю в настройках проводного соединения (dhcp включен).


person Prem Ib    schedule 15.03.2020    source источник
comment
Я не считаю, что узлы, взаимодействующие друг с другом через NAT, являются поддерживаемой конфигурацией. Узлы должны иметь возможность связываться друг с другом по IP-адресу без брандмауэра через несколько портов. Вам понадобится какая-то сеть между узлами, возможно, подойдет VPN, например wireguard.   -  person BMitch    schedule 15.03.2020
comment
@BMitch - в чем разница между IP-адресом, который я получаю через поиск моего IP-адреса в Google, и ipv4, который я получаю в настройках проводного подключения (DHCP включен). - здесь мне нужно некоторое пояснение, я очень плохо знаком с виртуальными машинами и ubuntu.   -  person Prem Ib    schedule 15.03.2020
comment
Один из них — общедоступный IP-адрес, на котором другие пользователи в Интернете видят ваши запросы, а другой — частный IP-адрес за маршрутизатором NAT, к которому нельзя получить прямой доступ.   -  person BMitch    schedule 15.03.2020
comment
@BMitch Итак, как мне подключиться к моей виртуальной машине? какой из них я должен использовать?   -  person Prem Ib    schedule 15.03.2020
comment
Вам понадобится какая-то сеть между узлами, возможно, подойдет VPN, например wireguard.   -  person BMitch    schedule 15.03.2020
comment
Кажется, это неправильный синтаксис для vmnetnat.conf. См. этот ответ для рабочего примера.   -  person David Balažic    schedule 03.06.2020