2016-01-14 35 views
12

Uso il plugin di rete Weave su un Docker-Swarm.Come accedere a Weave DNS-Server da esterno?

Ho creato una rete mobile con un intervallo IP specifico, diverso dalla rete Weave predefinita, a cui si instrada dalla rete interna.

Per rendere i contenitori ancora più accessibili, utilizzare weave per allegare nomi DNS come containername.auto.mycompany.de. Ora voglio accedere a quelli dalla mia rete aziendale. Il problema è che weave consente solo l'accesso al DNS del tessuto dall'host locale.

Come su uno dei miei nodi sciame che posso fare:

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) 

Ma io non trovare un modo per rendere il contenitore tessere accessibili su una delle IP da questo (10.40.130/24) rete docker o esporre la porta al nodo sciame.

L'unico modo che posso pensare, ma non mi piace, sta facendo qualcosa di simile:

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

(questo non funziona, è solo l'idea)

o manomettere la tessere la sceneggiatura per farlo esporre alla porta all'inizio del contenitore del tessuto.

Qualcuno sa di una soluzione migliore?

risposta

2

Infatti impostando le regole

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 

lo fa. Quando l'ho provato per la prima volta, ho semplicemente perso la vista che la mia richiesta proveniva da "fuori" dal server per funzionare, non dall'interno del dispositivo di loopback.

Ancora non è una soluzione carina ma fa il lavoro. Non vedo l'ora di vedere soluzioni migliori da voi ragazzi.

(stand Bounty!)