Обратный поиск в Linux — пробую следующий сервер на NXDomain

Обратный поиск в Linux — пробую следующий сервер на NXDomain

У меня есть приложение на Linux-компьютере, которое использует обратный просмотр для разрешения имен хостов. Проблема в том, что у меня есть два набора DNS-серверов в моем resolve.conf (всего 4 сервера), каждый из которых соответствует разному диапазону IP-адресов. Он отлично работает для одного диапазона IP-адресов, независимо от того, какой из них находится на первом указанном сервере, но если я попытаюсь выполнить nslookup для другого диапазона, он сообщит not found: 3(NXDOMAIN). Если бы он просто попробовал следующий сервер в списке, он бы успешно выполнил поиск... есть ли способ заставить его это сделать? DNS-серверы являются авторитетными только для своих соответствующих диапазонов.

решение1

Я бы установил dnsmasq, сделал бы его (127.0.0.1) единственным сервером имен и настроил бы его на запрос того или иного сервера для того или иного домена с помощью директивы «server» dnsmasq.conf.

Если есть способ попробовать другой сервер на NXDOMAIN с DNS-сервера, то это будет использование локального DNS-сервера с такой функциональностью. Linux-резолвер не позволяет этого. PowerDNS можно настроить на запуск команд для каждого запроса, так что в крайнем случае вы всегда можете это сделать.

решение2

Ответ @cstamas, просто чтобы прояснить, как решить проблему VPN с помощью dnsmasq.

Допустим, ваш компьютер находится в домене homenetwork.test с IP-адресами 10.1.0.0/16, а DNS-сервер — 10.1.0.1. Этот DNS-сервер может запрашивать только «внешние» доменные имена для домена worknetwork.test. Он является авторитетным (внутренним) для homenetwork.test и 1.10.in-addr.arp.

Теперь вы подключаете VPN для присоединения к worknetwork, и теперь у вас есть новый маршрут к 10.2.0.0/16 через этот интерфейс и новый DNS-сервер 10.2.0.1, который является полномочным для worknetwork.test и 2.10.in-addr.arpa. Если вы используете один или другой из этих серверов имен, вы сможете разрешить только один или другой из доменов worknetwork.test и homenetwork.test.

Если вы используете оба DNS-сервера (и RES_ROTATE), это не лучше, поскольку иногда вы сможете разрешить либо один, либо другой.

Теперь, если вы используете

dnsmasq --no-resolv --no-negcache --no-host --conf-file= \
   --server=/worknetwork.test/10.2.0.1 \
   --server=/2.10.in-addr.arpa/10.2.0.1 \
   --server=10.1.0.1

И если в resolv.conf указано «nameserver 127.0.0.1», то для разрешения IP-адресов worknetwork.test и 10.2.xx вы будете использовать 10.2.0.1, а для остальных — ваш домашний DNS-сервер.

решение3

Вы даете мало информации, поэтому трудно начать, но я попробую...

Прежде всего, серверы, о которых вы говорите, являются авторитетными серверами DNS (которые предоставляют информацию о зонах, которые вы настроили), верно? Если так, то вам следует настроить сервер в вашем resolv.conf, который является только рекурсивным (только разрешает имя DNS для вас, не предоставляя информацию). Вы можете установить его для прослушивания на localhost какщсказал.

С другой стороны, если сервер возвращает nxdomain, это означает: «Я знаю это имя, я являюсь авторизованным сервером для него, и это имя не существует». Стандартный алгоритм разрешения DNS останавливается здесь. Вот и все, обойти это невозможно. Вам следует настроить свои авторизованные DNS-серверы так, чтобы они не были авторизованными для этого имени.

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