Как настроить pdns-рекурсор для выполнения запросов к нескольким DNS-серверам

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

Добрый день всем.
На данный момент наша компания использует DNS-сервер Windows, который обслуживает зону test.local, и мы хотели бы плавно перейти на powerDNS. В настоящее время есть необходимость в том, чтобы рекурсор pdns при обращении клиентов сначала проверял запись на powerDNS, а затем на сервере Windows и давал ответ. Как это можно сделать?

recursor.conf

#dnssec:
  # validation: process # по умолчанию
#  trustanchorfile: /usr/share/dns/root.key
recursor:
  hint_file: /usr/share/dns/root.hints
  include_dir: /etc/powerdns/recursor.d
  setgid: pdns
  setuid: pdns
  #forward_zones_file: /etc/powerdns/recursor-forward.zones
  forward_zones:
    - zone: test.local
      forwarders:
        - 127.0.0.1:5300 #авторитетный сервер powerdns
        - 192.168.4.15 #сервер dns Windows
      recurse: false

    - zone: 10.in-addr.arpa
      forwarders:
        - 127.0.0.1:5300
      recurse: true
incoming:
  listen:
   - 0.0.0.0:53 # по умолчанию
  allow_from:
   - 0.0.0.0/0
   - 10.0.0.0/8
   - 127.0.0.1
#outgoing:
 # source_address:
 # - 0.0.0.0 # по умолчанию
#packetcache:
  #ttl: 600
#logging:
recordcache:
 max_ttl: 100

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

Для того чтобы настроить PowerDNS Recursor для выполнения запросов к нескольким DNS-серверам, вам необходимо изменить файл конфигурации recursor.conf в соответствии с вашими требованиями. В вашем случае, вы хотите, чтобы PowerDNS Recursor сначала проверял записи на самом PowerDNS сервере, а затем обращался к Windows DNS серверу.

Ниже представлен пример конфигурации, который подходит для вашей ситуации:

# dnssec:
#   validation: process # default
#   trustanchorfile: /usr/share/dns/root.key

recursor:
  hint_file: /usr/share/dns/root.hints
  include_dir: /etc/powerdns/recursor.d
  setgid: pdns
  setuid: pdns

forward_zones:
  - zone: test.local
    forwarders:
      - 127.0.0.1:5300 # PowerDNS authoritative server
      - 192.168.4.15 # Windows DNS server
    recurse: true # Здесь установлено значение true для рекурсивного запроса

  - zone: 10.in-addr.arpa
    forwarders:
      - 127.0.0.1:5300
    recurse: true

incoming:
  listen:
    - 0.0.0.0:53 # слушать на всех интерфейсах
  allow_from:
    - 0.0.0.0/0
    - 10.0.0.0/8
    - 127.0.0.1

recordcache:
  max_ttl: 100

# logging:
# packetcache:
#   ttl: 600

Разъяснения:

  1. Настройка forward_zones:

    • Здесь мы определяем зону test.local, которая будет использовать два сервера. Первый — это сам PowerDNS сервер (по адресу 127.0.0.1:5300), второй — ваш Windows DNS сервер (по адресу 192.168.4.15).
    • Важно установить recurse: true. Это позволяет Recursor выполнять рекурсивные запросы. Если на PowerDNS не будет найден ответ, он автоматически сделает запрос к следующему серверу в списке (в данном случае к Windows DNS серверу).
  2. Incoming настройки:

    • Опция listen предполагает, что Recursor будет слушать на порту 53 всех интерфейсов (IP-адресах).
    • allow_from определяет, какие IP-адреса имеют право делать запросы к Recursor.
  3. Кеширование:

    • Опция recordcache с указанием max_ttl позволяет контролировать время жизни кэшированных записей, что может помочь в снижении нагрузки на DNS-серверы и улучшении времени ответа.

После внесения изменений:

  • После редактирования файла конфигурации необходимо перезапустить службу PowerDNS Recursor, чтобы применить изменения. Это можно сделать с помощью команды:
sudo systemctl restart pdns-recursor

или

sudo service pdns-recursor restart

Заключение:

Теперь ваш PowerDNS Recursor будет выполнять DNS-запросы сначала к местному PowerDNS серверу, а в случае отсутствия ответа будет запрашивать Windows сервер. Убедитесь, что настройки и доступы на обоих серверах корректные для успешного взаимодействия.

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

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