Рейтинг:0

Как внести в черный список частное разрешение DNS внутри докера?

флаг mm

Проблема

Я хочу заблокировать разрешения DNS, которые возвращают IP-адреса частного диапазона. Что я нашел до сих пор, так это то, что для этого вам нужно настроить кеш/рекурсивный DNS-сервер. Однако, поскольку я хочу использовать его внутри докера, я натыкаюсь на трудности.

Самый простой способ, который я нашел, это использовать dnsmasq (как объясняется в этом другом отвечать). С другой стороны, просто нужно запустить один процесс, поэтому узнал о надзиратель который решает эту проблему. Тем не менее, создал образец образа докера, и когда я использую DNS-сервер localhost (dnsmasq), добавив флаг --dns 127.0.0.1 или замена /etc/resolv.conf изнутри контейнера я получаю сообщение об ошибке ** сервер не может найти google.com: REFUSED , что имеет смысл после предупреждения, которое я получаю во время запуска контейнера:

ПРЕДУПРЕЖДЕНИЕ. Настройка DNS Localhost (--dns=127.0.0.1) может привести к сбою в контейнерах.

Среда

Образец докера:

ОТ убунту: последняя

ЗАПУСТИТЬ обновление &&\
    подходящее обновление -y

ВЫПОЛНИТЬ apt install -y супервизор \
    DNS-маска \
    днсутилс \
    iputils-пинг \
    нано

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

КОПИРОВАТЬ supervisor.conf /etc/supervisor.conf

ТОЧКА ВХОДА ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]

супервизор.конф:

[руководитель]
нодемон=истина
logfile=/dev/stdout
logfile_maxbytes=0

[программа:dnsmasq]
команда = dnsmasq --no-daemon
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

Строить:

судо докер сборка. -t выборка nsmasq

Бег:

sudo docker run -it --dns 127.0.0.1 --rm samplednsmasq: последний

Это выполнимо?

Я хотел бы знать, есть ли способ заставить его работать (без использования нескольких контейнеров, таких как docker-compose) и dnsmasq, я также открыт для других альтернатив, которые не включают сервер кэширования DNS.

Решение: Изменено supervisor.conf к:

[руководитель]
нодемон=истина
logfile=/dev/stdout
logfile_maxbytes=0

[программа:dnsmasq]
command=dnsmasq --no-daemon --interface=lo --stop-dns-rebind
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

Также обновил Dockerfile

ОТ убунту: последняя

ЗАПУСТИТЬ обновление &&\
    подходящее обновление -y

ВЫПОЛНИТЬ apt install -y супервизор \
    DNS-маска \
    днсутилс \
    iputils-пинг \
    нано \
    сетевые инструменты

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

КОПИРОВАТЬ supervisor.conf /etc/supervisor.conf

ТОЧКА ВХОДА ["/usr/bin/supervisord", "-c", "/etc/supervisor.conf"]

Рейтинг:1
флаг jp

сервер не может найти google.com: REFUSED означает, что DNS-сервер не прослушивает указанный адрес. По умолчанию dnsmasq не буду слушать 127.0.0.1 адрес.

itasahobby avatar
флаг mm
Это может быть причиной, однако, когда я использую `netstat`, он показывает, что он действительно прослушивает (отредактировал сообщение, чтобы включить эту информацию)
флаг jp
«0.0.0.0» — это не то же самое, что «127.0.0.1».
itasahobby avatar
флаг mm
О, мой плохой, я думал, что использование 0/0 также будет включать локальный хост, сейчас попробую принудительно использовать локальный хост

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.