Вопрос или проблема
Добрый день всем.
На данный момент наша компания использует 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
Разъяснения:
-
Настройка forward_zones:
- Здесь мы определяем зону
test.local
, которая будет использовать два сервера. Первый — это сам PowerDNS сервер (по адресу127.0.0.1:5300
), второй — ваш Windows DNS сервер (по адресу192.168.4.15
). - Важно установить
recurse: true
. Это позволяет Recursor выполнять рекурсивные запросы. Если на PowerDNS не будет найден ответ, он автоматически сделает запрос к следующему серверу в списке (в данном случае к Windows DNS серверу).
- Здесь мы определяем зону
-
Incoming настройки:
- Опция
listen
предполагает, что Recursor будет слушать на порту 53 всех интерфейсов (IP-адресах). allow_from
определяет, какие IP-адреса имеют право делать запросы к Recursor.
- Опция
-
Кеширование:
- Опция
recordcache
с указаниемmax_ttl
позволяет контролировать время жизни кэшированных записей, что может помочь в снижении нагрузки на DNS-серверы и улучшении времени ответа.
- Опция
После внесения изменений:
- После редактирования файла конфигурации необходимо перезапустить службу PowerDNS Recursor, чтобы применить изменения. Это можно сделать с помощью команды:
sudo systemctl restart pdns-recursor
или
sudo service pdns-recursor restart
Заключение:
Теперь ваш PowerDNS Recursor будет выполнять DNS-запросы сначала к местному PowerDNS серверу, а в случае отсутствия ответа будет запрашивать Windows сервер. Убедитесь, что настройки и доступы на обоих серверах корректные для успешного взаимодействия.