Назад | Перейти на главную страницу

Сервер пересылки DNS, который всегда разрешает

Я хотел бы настроить базовый сервер пересылки DNS, который выполняет две функции.

Во-первых, он просто перенаправляет запросы DNS вверх по течению. Во-вторых, если вышестоящие DNS-серверы не могут разрешить имя хоста, этот DNS-сервер пересылки должен вернуть мусорный IP-адрес, например 127.255.255.255 или 100::.

Результатом этого может быть то, что все имена хостов всегда должны разрешаться, но имена хостов, которые обычно не разрешаются, разрешаются в мусорный IP-адрес.

Например, если бы у меня было два имени хоста: resolvable который, как известно вышестоящему DNS-серверу, находится на 1.2.3.4; и notresolvable для которого вышестоящий DNS-сервер не знает IP-адрес. Если я затем запрошу DNS, перенаправленный с этими двумя именами хостов, resolvable вернется 1.2.3.4 и notresolvable вернется 127.255.255.255 (а не не нашел).

Hostname:            resolvable              notresolvable
                    |         / \            |          / \
                    |          |             |           |_________
                   \ /         |            \ /                    |
DNS Forwarder:   forward      found       forward      not  __\  use garbage ip
                 upstream   ip=1.2.3.4    upstream    found   /  ip=127.255.255.255
                    |        / \               |      / \
                    |         |                |       |
                   \ /        |               \ /      |
Upstream DNS     found ip=1.2.3.4              not found
server:

Ближе всего к созданию этой системы я смог использовать dnsmasq. dnsmasq по умолчанию отправляет DNS-запросы вверх по течению, поэтому он работает для моего первого требования.

Я также могу добавить address=/#/127.255.255.255 до конца /etc/dnsmasq.conf который затем преобразует все имена хостов в мусорный IP-адрес. Однако это также разрешает имена хостов, которые может разрешить вышестоящий DNS-сервер, что мне не нужно.

После прочтения страница руководства dnsmasq Я нашел это в разделе адресов:

Запросы в доменах никогда не пересылаются

что говорит мне, что то, что мне нужно, невозможно с dnsmasq.

Итак, мой вопрос: какая программа лучше всего подходит для такой настройки и как мне это сделать?

Изменить: контекст

У меня есть приложение, работающее внутри контейнера докеров, которое использует сеть докеров для подключения к другим контейнерам докеров с использованием имен хостов.

Проблема, которую я пытаюсь решить, заключается в том, что приложение не запускается или не продолжает работу, если имя хоста не разрешается (что происходит, если контейнер, на который оно ссылается, не запущен).

Таким образом, DNS-сервер, о котором я упоминал выше, будет сервером, который работает вместе с приложением внутри контейнера докеров.

Я также удалил ссылку на resolv.conf так как не кажется необходимым, чтобы это работало. DNS-сервер просто должен перенаправить на внутренний DNS-сервер докера, который просто случайно указан в resolv.conf.