dnsmasq с двумя отдельными доменами AD

Вопрос или проблема

У меня есть VM с centOS, где я пытаюсь настроить dnsmasq для обращения к 2 DNS серверам. Эти DNS серверы обслуживают только запросы для доменов, в которых они находятся.

  • DNS1 – 10.10.10.10 – обрабатывает только запросы для *.domain1.com
  • DNS2 – 10.20.20.20 – обрабатывает только запросы для *.domain2.com
centOS# nmcli device show | grep DNS
IP4.DNS[1]:    127.0.0.1
centOS# tail -n 5 /etc/dnsmasq.conf
server=/domain1.com/10.10.10.10
server=/domain2.com/10.20.20.20
no-resolv

Проблема в том, что я продолжаю получать ошибку NXDOMAIN, когда запускаю nslookup.

  • nslookup 10.10.10.100 10.10.10.10, работает нормально — Ожидаемо
  • nslookup 10.10.10.100 10.20.20.20, ошибка NXDOMAIN — Ожидаемо
  • nslookup 10.10.10.100, ошибка NXDOMAIN — Почему это не работает основываясь на конфигурации?

Сделанные попытки:

  • Я пробовал использовать no-negcache. По какой-то причине, все запросы продолжают отправляться на второй DNS сервер (подтверждено через лог-запросы)
  • Также пробовал использовать strict-order. Опять же, все, что говорит второй DNS сервер, считается окончательным, в то время как первый игнорируется.

Ну, ни один из ваших примеров nslookup на самом деле не делает запросы для domain1.com или domain2.com. Во всех трех примерах вы делаете только ‘обратные DNS’ запросы для 10.10.10.100, что, конечно, не является ни одним из этих доменных имен.

Даже если бы он вернул PTR к чему-то.domain1.com, Dnsmasq не может этого знать заранее до того, как он сделает запрос!

Фактическое доменное имя, которое запрашивается, имеет специальный формат in-addr: в DNS нет настоящих обратных проверок, поэтому nslookup 10.10.10.100 делает запрос для 100.10.10.10.in-addr.arpa из отдельной обратной зоны. Поэтому, если вы хотите распределять запросы обратной зоны в дополнение к обычным запросам доменных имен, вам нужны дополнительные server= записи для этого:

server=/10.10.in-addr.arpa/10.10.10.10
server=/20.10.in-addr.arpa/10.20.20.20

или “удобные” опции rev-server=:

rev-server=10.10.0.0/16, 10.10.10.10
rev-server=10.20.0.0/16, 10.20.20.20

Ответ или решение

Конфигурирование dnsmasq для работы с двумя отдельными доменами Active Directory

Теоретическая часть

В современной IT-инфраструктуре часто возникает необходимость объединения и управления несколькими доменами, что актуально при наличии разных групп пользователей или серверов, требующих отдельного управления. В вашем случае на CentOS виртуальной машине используется dnsmasq для обращения к двум DNS-серверам, которые обслуживают разные домены Active Directory: .domain1.com и .domain2.com. Каждое имя домена обрабатывается соответствующим DNS-сервером, и необходимо, чтобы запросы корректно направлялись именно к нужным серверам.

Анализ задачи

Во-первых, ваша текущая конфигурация файлов dnsmasq включает следующие строки:

server=/domain1.com/10.10.10.10
server=/domain2.com/10.20.20.20
no-resolv

Эти строки указывают dnsmasq использовать 10.10.10.10 для домена domain1.com и 10.20.20.20 для домена domain2.com, при этом опция no-resolv отключает использование настроек резолвера из конфигурационного файла системного решателя (/etc/resolv.conf).

Проблема

Возникает ситуация, когда запросы на резолвер по умолчанию (например, nslookup 10.10.10.100) приводят к ошибке NXDOMAIN. Это связано с тем, что такие запросы являются обратными DNS-запросами (reverse DNS lookup), которые требуют дополнительных настроек для обработки. Dnsmasq по умолчанию не знает, к какому серверу отправлять PTR-запросы, поскольку такие запросы используют не стандартные доменные записи, а специальные обратные адреса в формате in-addr.arpa.

Практическая реализация

Чтобы обеспечить правильную работу обратных DNS-запросов, необходимо указать серверы, обрабатывающие соответствующие зоны in-addr.arpa. Пример конфигурации:

server=/10.10.in-addr.arpa/10.10.10.10
server=/20.10.in-addr.arpa/10.20.20.20

Либо, как альтернатива, можно использовать директиву rev-server, которая автоматически распределяет зоны обратного разрешения адресов:

rev-server=10.10.0.0/16, 10.10.10.10
rev-server=10.20.0.0/16, 10.20.20.20

Эти настройки обеспечат правильную маршрутизацию запросов PTR к нужным сервером, что позволит корректно обрабатывать запросы на обратное разрешение IP-адресов.

Завершение и тестирование

После внесения изменений необходимо перезапустить сервис dnsmasq для применения новых настроек:

sudo systemctl restart dnsmasq

Теперь вы можете протестировать работу конфигурации:

  1. Выполнить прямой запрос для проверки резолвинга доменных имен.
  2. Провести тестовые запросы на обратное разрешение адресов (например, nslookup 10.10.10.100) для проверки, что сервер обрабатывает их корректно.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...