Как получить доступ к Weave DNS-серверу с внешнего?

Я использую сетевой плагин Weave на Docker-Swarm.

Я создал докерскую сеть с определенным IP-диапазоном, отличным от сети Weave по умолчанию, к которой я маршрутизирую свою внутреннюю сеть.

Чтобы сделать контейнеры еще более доступными, я использую weave для прикрепления DNS-имен, таких как containername.auto.mycompany.de. Теперь я хочу получить доступ к тем из сети моей компании. Проблема в том, что переплетение позволяет только доступ к переплетению DNS с локального хоста.

Как на одном из моих узлов роя, я могу сделать:

host foobar.auto.mycompany.de 172.17.0.1
Using domain server:
Name: 172.17.0.1
Address: 172.17.0.1#53
Aliases: 

foobar.auto.mycompany.de has address 10.40.13.3
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)
Host foobar.auto.mycompany.de not found: 3(NXDOMAIN)

Но я не нахожу способ сделать доступ к контейнеру переплетения на одном из IP-адресов из этой (10.40.130/24) докерской сети или открыть порт для узла роя.

Единственный способ, которым я могу думать, но не люблю, это делать что-то вроде этого:

iptables -t nat -A  DOCKER -p tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53

(это не работает, это просто идея)

Или вмешайтесь в скрипт weave, чтобы он открыл порт при запуске контейнера weave.

Кто-нибудь знает лучшее решение?

1 ответ

Фактически устанавливая правила

iptables -A DOCKER -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.1:53
iptables -A DOCKER -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.1:53

Является ли. Когда я впервые попробовал это, я просто упустил возможность увидеть, что мой запрос пришел бы "извне" сервера для работы, а не изнутри к устройству обратной связи.

Все еще не симпатичное решение, но оно делает работу. Я с нетерпением жду лучших решений от вас, ребята.

(Баунти стоит!)

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