Проблема решения домена с помощью стандартного Debian

Проблема решения домена с помощью стандартного Debian

У меня простая установка с Debian в качестве гостя в Virtualbox. Я установил пакет resolvconf. Файл resolv.conf такой:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x

Я добавил серверы имен через графический интерфейс (Приложения/Системные инструменты/Сетевые инструменты).

8.8.8.8 — это DNS Google, и я хочу использовать его для разрешения интернет-адресов. 10.3.xx и 10.219.xx нужны для разрешения внутренних доменов, таких как teleportal.company.intra.

Когда у меня есть эти серверы имен в resolv.conf (и 8.8.8.8 является первым), я получаю ошибку при запросе внутреннего адреса:

> host teleportal.company.intra           
Host teleportal.company.intra not found: 3(NXDOMAIN)

Однако если я явно укажу nameserverадрес второго в качестве сервера имен для nslookup, то это сработает:

» nslookup teleportal.company.intra 10.3.x.x
Server:     10.3.x.x
Address:    10.3.x.x#53

teleportal.company.intra    canonical name = proxy.dummy1.dummy2.private.
Name:   proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name:   proxy.dummy1.dummy2.private
Address: 172.27.x.x

В документации resolv.conf указано, что nameserverзаписи будут опробованы по порядку, если одна из них не может разрешить запрос. Однако если я включаю отладку при использовании, nslookupя вижу, что nslookupона даже не пробует другие записи, только первую.

Если я изменю порядок nameservers, то внутренние адреса будут разрешены правильно (nslookup по-прежнему будет использовать только первую запись).

Как настроить 3 сервера имен, чтобы утилиты использовали их все по порядку?

решение1

Список resolv.confсерверов имен подключается один за другим только в случае тайм-аута. Не тогда, когда один сервер имен авторитетно заявляет "такого домена нет" ( NXDOMAIN). В вашем случае DNS, 8.8.8.8по-видимому, не знает об этом, teleportal.company.intraи резолвер остановился, когда получил NXDOMAIN.

Если возможно, вам следует настроить один DNS-сервер и использовать его для всех ваших разрешений, а DNS-серверу следует решить, как разрешить имя. Если 10.3.x.xэто ваш интрасетевой DNS-сервер, он, скорее всего, сможет разрешать и имена хостов в Интернете.

Тем не менее, если вы действительно хотите ретранслировать запросы на разные DNS-серверы на основе имен, вы можете попробоватьпднсд. Это кэширующая программа DNS-прокси, которую можно запустить локально. Установите ее ( apt-get install pdnsd) и добавьте свой localhost ( 127.0.0.1) в resolv.conf. В pdnsd.confфайле конфигурации вы можете указать, к каким DNS-серверам следует обращаться на основе сопоставления имен. Пример абзаца для вашего /etc/pdnsd.conf:

server {
    label= "google";
    exclude = ".company.intra";
    ip = 8.8.8.8;
}

server {
    label= "intra";
    include = ".company.intra";
    ip = 10.3.x.x;
}

Я вырезал много других параметров из файла выше. Вам следует следовать документации и примеру файла конфигурации, который поставляется с пакетом Debian, чтобы настроить ваш pdnsd.conf.

решение2

ядуматьчто резолвер возвращается к вторичному (или третичному или ...) DNSтолько если первое (или второе или ...) не удается.

В этом случае запросне подводит, он правильно возвращает NXDOMAIN, т.е. доменное имя не существует.

Если вы действительно хотите использовать DNS Google (или любой другой DNS) для разрешения внешних доменов (вместо ваших внутренних серверов имен), вы можете настроить свои серверы 10.3.x.xтак, 10.219.x.xчтобы они были authoritativeтолько для ваших внутренних имен и перенаправляли все остальные запросы на внешний DNS, а затем использовать ваши внутренние серверы имен в качестветолькосерверы имен на ваших внутренних компьютерах.

Связанный контент