Puncte:0

Cum se pune pe lista neagră rezoluția dns privată în interiorul docker?

drapel mm

Problemă

Vreau să blochez rezoluțiile DNS care returnează adrese IP din intervale private. Ceea ce am descoperit până acum este că pentru a face așa ceva trebuie să configurați un server DNS cache/recursiv. Cu toate acestea, din moment ce vreau să-l folosesc în interiorul dockerului, acolo mă pot întâlni cu dificultăți.

Cel mai simplu mod pe care l-am găsit este folosirea dnsmasq (după cum este explicat în celălalt Răspuns). Pe de altă parte, trebuie doar să ruleze un singur proces, așa că am aflat despre supraveghetor care rezolvă această problemă. Cu toate acestea, am creat un exemplu de imagine Docker și când folosesc serverul localhost dns (dnsmasq) prin adăugarea steagului --dns 127.0.0.1 sau înlocuirea /etc/resolv.conf din interiorul containerului primesc o eroare ** serverul nu poate găsi google.com: REFUSAT , care are sens doar după avertismentul pe care îl primesc în momentul rulării containerului:

AVERTISMENT: Setarea DNS localhost (--dns=127.0.0.1) poate eșua în containere.

Mediu inconjurator

Exemplu de imagine docker:

DIN ubuntu:latest

RUN actualizare apt &&\
    apt upgrade -y

RUN apt install -y supervisor\
    dnsmasq \
    dnsutils \
    iputils-ping \
    nano

RUN echo "stop-dns-rebind" > /etc/dnsmasq.d/stop-rebinding

COPY supervisor.conf /etc/supervisor.conf

ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]

supervisor.conf:

[supraveghetor]
nodaemon=adevărat
logfile=/dev/stdout
logfile_maxbytes=0

[program:dnsmasq]
comandă=dnsmasq --no-daemon
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

Construi:

sudo docker build . -t samplednsmasq

Alerga:

sudo docker run -it --dns 127.0.0.1 --rm samplednsmasq:latest

Este realizabil?

Aș dori să știu dacă există vreo modalitate de a-l face să funcționeze (fără a folosi multi-container precum docker-compose) și dnsmasq, sunt, de asemenea, deschis către alte alternative care nu implică un server de cache DNS.

Soluţie: A schimbat supraveghetor.conf la:

[supraveghetor]
nodaemon=adevărat
logfile=/dev/stdout
logfile_maxbytes=0

[program:dnsmasq]
comandă=dnsmasq --no-daemon --interface=lo --stop-dns-rebind
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

De asemenea, a fost actualizat Dockerfile

DIN ubuntu:latest

RUN actualizare apt &&\
    apt upgrade -y

RUN apt install -y supervisor\
    dnsmasq \
    dnsutils \
    iputils-ping \
    nano \
    net-instrumente

RUN echo "listen-address=127.0.0.1\nbind-interfaces\nstop-dns-rebind" > /etc/dnsmasq.d/stop-rebinding &&\
    echo "\nserver=8.8.8.8\nserver=8.8.4.4\nno-resolv" >> /etc/dnsmasq.conf

COPY supervisor.conf /etc/supervisor.conf

ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]

Puncte:1
drapel jp

serverul nu poate găsi google.com: REFUSAT înseamnă că nu există niciun server DNS care ascultă la adresa specificată. În mod implicit dnsmasq nu va asculta 127.0.0.1 abordare.

itasahobby avatar
drapel mm
Acesta ar putea fi un motiv, cu toate acestea, când folosesc `netstat`, arată că într-adevăr ascultă (am editat postarea pentru a include acele informații)
drapel jp
`0.0.0.0` nu este același cu `127.0.0.1`.
itasahobby avatar
drapel mm
Oh, rău, m-am gândit că folosirea 0/0 ar include și localhost, voi încerca să forțez localhost, mulțumesc până acum

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.