2016-01-14 10 views
12

Ich benutze das Web-Netzwerk-Plugin auf einem Docker-Swarm.Wie kann ich von außen auf den DNS-Server zugreifen?

Ich habe ein Docker-Netzwerk mit einem bestimmten IP-Bereich erstellt, der sich vom Standard-Weben-Netzwerk unterscheidet, an den ich von meinem internen Netzwerk aus route.

Um die Container noch besser zugänglich zu machen, verwende ich weben um DNS-Namen wie containername.auto.mycompany.de anzuhängen. Jetzt möchte ich auf die von meinem Firmennetzwerk zugreifen. Das Problem ist, dass das Weben nur den Zugriff auf das Web-DNS vom lokalen Host erlaubt.

Wie auf einem meines Schwarm Knoten kann ich tun:

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) 

Aber ich finde keinen Weg, um die Webart Behälter zugänglich auf einem der IP-Adressen aus diesem (10.40.130/24) zu machen docker Netzwerk oder den Port dem Schwarmknoten verfügbar machen.

Die einzige Art, wie ich mir vorstellen kann, aber nicht mag, ist so etwas wie dies zu tun:

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

(das funktioniert nicht, es ist nur die Idee)

oder manipulieren die weben Sie das Skript so, dass es den Port beim Start des Webcontainers freilegt.

Kennt jemand eine bessere Lösung?

Antwort

2

In der Tat Einstellung der Regeln

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 

es tut. Als ich das zum ersten Mal ausprobiert habe, habe ich einfach übersehen, dass meine Anfrage von "außerhalb" des Servers kommen würde, um zu arbeiten, nicht von innen zum Loopback-Gerät.

Immer noch keine schöne Lösung, aber es macht den Job. Ich freue mich darauf, bessere Lösungen von euch zu sehen.

(Bounty steht!)

Verwandte Themen