Lokální DNS server pro služby v dockeru

Lokální DNS server pro služby v dockeru
« kdy: 17. 08. 2021, 21:31:53 »
Zdravím, mám nainstalovaný docker a v něm mě běží pár služeb- unifi controler, pyload, node-red, portainer. Na tyto služby přistupuji přes stejnou IP adresu a jen podle dané služby měním port. Což je dost nepraktické, musím si pamatovat porty daných služeb, neexistuje nějaký lokální dns server (klidně do dockeru), kde bych uložil porty a k nim záznamy třeba ve formálu: unifi.local, pyload.local atd. a potom přistupoval na služby přes tyto záznamy?
Našel jsem něco o SRV, ale nevím jestli je to cesta a nechci vynalézat kolo, pokud má někdo vyzkoušené něco funkční.


Pixe

Re:Lokální DNS server pro služby v dockeru
« Odpověď #1 kdy: 17. 08. 2021, 21:46:03 »
Není to sice (přímo) DNSka, ale kombinuju Traefik s wildcard DNS záznamem na Mikrotiku

Re:Lokální DNS server pro služby v dockeru
« Odpověď #2 kdy: 17. 08. 2021, 21:49:34 »
Čau, mrkni na Traefik třeba v kombinaci s nip:
https://traefik.io/
https://nip.io/

A kdyby sis s tím chtěl vyhrát, tak Traefik podporuje (minimálně) Cloudflare. Můžeš tak mít lokálně funkční HTTPS (protože DNS challenge).

Re:Lokální DNS server pro služby v dockeru
« Odpověď #3 kdy: 17. 08. 2021, 22:51:12 »
pokud na to pristupujes jen lokalne, tak co si jen exportovat porty, a pustit si nginx, a dat si zaznamy dns do /etc/hosts ?
unifi.local
zimbra.local
nginx naucit proxy ze uniofi.local miri na localhost:port

Re:Lokální DNS server pro služby v dockeru
« Odpověď #4 kdy: 18. 08. 2021, 07:13:07 »
Od kdy DNS řeší porty?

pokud na to pristupujes jen lokalne, tak co si jen exportovat porty, a pustit si nginx, a dat si zaznamy dns do /etc/hosts ?
unifi.local
zimbra.local
nginx naucit proxy ze uniofi.local miri na localhost:port


Re:Lokální DNS server pro služby v dockeru
« Odpověď #5 kdy: 18. 08. 2021, 07:28:41 »
A ještě upozorňuji na zrádnost domény .local
tato doména je určena  pro mDNS a při jejím použití začnete v síťi honit duchy, kdy některá zařízení nepřekládají, nebo jsou nedostupná.
Vyberte si jinou doménu.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #6 kdy: 18. 08. 2021, 09:06:24 »
Jo pardon, má chyba.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #7 kdy: 18. 08. 2021, 10:16:55 »
Kde jsem rekl, ze DNS resi porty ?

psal jsem, pustit si lokalne nginx jako reverzni proxy, a smerovat

 server1.doma => localhost:8081
 server2.doma => localhost:8082
 server3.doma => localhost:8083

a do /etc/hosts dat
Kód: [Vybrat]
127.0.0.1 server1.doma
127.0.0.1 server2.doma
127.0.0.1 server3.doma
a do nginx tedy neco jako
Kód: [Vybrat]
  server {
    listen       80;
    server_name server1.doma
    location / {
      proxy_pass      http://127.0.0.1:8081;
    }
  }

Od kdy DNS řeší porty?

pokud na to pristupujes jen lokalne, tak co si jen exportovat porty, a pustit si nginx, a dat si zaznamy dns do /etc/hosts ?
unifi.local
zimbra.local
nginx naucit proxy ze uniofi.local miri na localhost:port

Re:Lokální DNS server pro služby v dockeru
« Odpověď #8 kdy: 18. 08. 2021, 10:30:41 »
Nebo nějak takto a obejdeš se bez záznamů v hosts...

Kód: [Vybrat]
server {
    listen 80;

    server_name ~^(?<proxy_port>.+)\.127\.0\.0\.1\.nip\.io$;

    location / {
        proxy_pass $scheme://127.0.0.1:$proxy_port;
    }
}

A pak stačí přistupovat na adresu <port>.127.0.0.1.nip.io.

Kde jsem rekl, ze DNS resi porty ?

psal jsem, pustit si lokalne nginx jako reverzni proxy, a smerovat

 server1.doma => localhost:8081
 server2.doma => localhost:8082
 server3.doma => localhost:8083

a do /etc/hosts dat
Kód: [Vybrat]
127.0.0.1 server1.doma
127.0.0.1 server2.doma
127.0.0.1 server3.doma
a do nginx tedy neco jako
Kód: [Vybrat]
  server {
    listen       80;
    server_name server1.doma
    location / {
      proxy_pass      http://127.0.0.1:8081;
    }
  }

Od kdy DNS řeší porty?

pokud na to pristupujes jen lokalne, tak co si jen exportovat porty, a pustit si nginx, a dat si zaznamy dns do /etc/hosts ?
unifi.local
zimbra.local
nginx naucit proxy ze uniofi.local miri na localhost:port

Re:Lokální DNS server pro služby v dockeru
« Odpověď #9 kdy: 19. 08. 2021, 16:00:11 »
Jeste jsem to nezkousel ale bylo mi doporuceno toto:
https://www.consul.io/docs/agent/options

Je to vlastne distribuovana key-value databaze s REST API plus DNS interface.
Bezici sluzby se zde mohou zaregistrovat pres REST API a ostatni je mohou najit pres DNS.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #10 kdy: 20. 08. 2021, 10:07:10 »
Tohle tema me taky docela zajima.

ohledne toho consulu - ostatni non-docker zarizeni je urcite out-of-box nenajdou pres dns. protoze ostatni non-docker zarizeni se budou dotazovat na dns, co maji v systemu. takze musi byt pak nekde propojovak na urovni dns sluzeb...

To nekdo nema realnou zkusenost s provozem kontejnerizace a jak se mapuji dns? Ne kazdy ma totiz k dispozici takova dns, umoznujici bezpecne zasahovani do obsahu zon.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #11 kdy: 20. 08. 2021, 10:16:26 »
Já používal kdysi https://github.com/phensley/docker-dns.

Tohle tema me taky docela zajima.

ohledne toho consulu - ostatni non-docker zarizeni je urcite out-of-box nenajdou pres dns. protoze ostatni non-docker zarizeni se budou dotazovat na dns, co maji v systemu. takze musi byt pak nekde propojovak na urovni dns sluzeb...

To nekdo nema realnou zkusenost s provozem kontejnerizace a jak se mapuji dns? Ne kazdy ma totiz k dispozici takova dns, umoznujici bezpecne zasahovani do obsahu zon.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #12 kdy: 20. 08. 2021, 10:23:47 »
Já používal kdysi https://github.com/phensley/docker-dns.

Tohle tema me taky docela zajima.

ohledne toho consulu - ostatni non-docker zarizeni je urcite out-of-box nenajdou pres dns. protoze ostatni non-docker zarizeni se budou dotazovat na dns, co maji v systemu. takze musi byt pak nekde propojovak na urovni dns sluzeb...

To nekdo nema realnou zkusenost s provozem kontejnerizace a jak se mapuji dns? Ne kazdy ma totiz k dispozici takova dns, umoznujici bezpecne zasahovani do obsahu zon.

Tak ale tohle resi preklad dns v docker ekosystemu, neresi to preklad dns pro pristup ke kontejnerum z klientu, kteri nejsou soucasti docker ekosystemu.

Re:Lokální DNS server pro služby v dockeru
« Odpověď #13 kdy: 20. 08. 2021, 10:46:36 »
Na vice mistech resim dvemi zpusoby.

Starsi - jiz navrhovany nginx (balicek v OS + konfigurace), kdy je nastavene, ze nginx posloucha a podle toho, kam smeruje dotaz, tak presmeruje na localhost:port.

Kód: [Vybrat]
sluzba0.doma.lan => localhost:8080
sluzba1.doma.lan => localhost:8081
sluzba2.doma.lan => localhost:8082

Pouzivam vlastni RootCA a certifikaty mam pro kazdou sluzbu.

Novejsi je pro me Traefik v docker. Vyhodou je, ze je to vse v docker a nemusim vystavovat porty jednotlivych kontejneru na localhost, vystavim jen https Traefiku a ten posloucha.

Kód: [Vybrat]
sluzba0.doma.lan => Traefik => kontejner0
sluzba1.doma.lan => Traefik => kontejner1
sluzba2.doma.lan => Traefik => kontejner2

Opet pouzivam vlastni RootCA a certifikaty pro jednotlive sluzby jsou podhozene Traefiku, ktery je pak pouziva.

DNS resim na pfSense, kdy si dam jednotlive zaznamy do DNS resolveru.

SB

  • ****
  • 330
    • Zobrazit profil
    • E-mail
Re:Lokální DNS server pro služby v dockeru
« Odpověď #14 kdy: 20. 08. 2021, 13:46:16 »
K původnímu dotazu:
Místo výše uvedených rovnáků na ohýbáky je řešením v dockeru vytvořit pomocí „docker network“ vlastní vyhrazenou podsíť a veškeré kontejnery spouštět (pomocí volby --network) napojené na tuto síť, každý kontejner tak bude mít svoji adresu. Tuto síť je třeba buďto ohlašovat routeru pomocí ndppd nainstalovaného na hostiteli dockeru, nebo je třeba přidat na routeru route této podsítě na rozhraní dockeru. Výhodou je čisté řešení a funkčnost i na jiné věci než přiblblý web, TCP atd. Mapování portu kontejneru na společnou adresu dockeru pak není nutné. Použití je možné jak pro soukromé, tak veřejné adresy, IPv4 i IPv6.