PowerDNS — представляет собой высокопроизводительный DNS-сервер, написанный на C++ и лицензируемый под лицензией GPL. Разработка ведётся в рамках поддержки Unix-систем.
Сервер разработан в голландской компании PowerDNS.com Бертом Хубертом и поддерживается сообществом свободного программного обеспечения.
PowerDNS использует гибкую архитектуру хранения/доступа к данным, он может работать с следующими хранилищами данных:
PowerDNS по умолчанию настроен на обслуживание запросов из БД.
Распространяется в виде двух компонентов:
Традиционная схема работы серверов до версии 4.1.0:
Авторитетный | LDAP | |||||||||||||||||
ldap:1 | ||||||||||||||||||
ldap:2 | ||||||||||||||||||
BIND | ||||||||||||||||||
Рекурсивный | Внешние серверы (forward) | |||||||||||||||||
forward1 | ||||||||||||||||||
forward2 | ||||||||||||||||||
Рекурсия была удалена с авторитетного сервера в версии 4.1.0.
Примеры файлов для этой версии:
Схема работы серверов с версии 4.1.0:
Рекурсивный | Внешние серверы (forward) | |||||||||||||||||
forward1 | ||||||||||||||||||
forward2 | ||||||||||||||||||
Авторитетный | LDAP | |||||||||||||||||
ldap:1 | ||||||||||||||||||
ldap:2 | ||||||||||||||||||
BIND | ||||||||||||||||||
/var/lib/powerdns
— папка с файлами зон, например при использовании Bind
Для подобных подавления сообщений:
pdns_server: Could not retrieve security status update for '4.0.3-1+deb9u3.Debian' on 'auth-4.0.3-1_deb9u3.Debian.security-status.secpoll.powerdns.com.', RCODE = Non-Existent domain
Нужно установить «пустое» значение переменной security-poll-suffix
security-poll-suffix=
apt-get install pdns-server pdns-backend-ldap
Для Debian 7 (wheezy) нужно ставить из репозитория wheezy-backports
:
apt-get install -t wheezy-backports pdns-server pdns-backend-ldap
Для версии 4.1.0 и старше:
Важно, что поскольку все запросы должны идти через рекурсивный сервер, то этот должен использовать не основной порт, например:
local-port=5300
setgid=pdns setuid=pdns daemon=yes guardian=yes config-dir=/etc/powerdns include-dir=/etc/powerdns/pdns.d default-soa-name=ns.domain.ru security-poll-suffix= local-address=127.0.0.1,10.0.0.1 local-port=5300 allow-axfr-ips=10.0.1.5, 10.0.1.6 master=yes slave=yes launch=ldap:1,ldap:2
Состояние:
systemctl list-unit-files|grep pdns
пример вывода:
pdns.service enabled
Включение
systemctl enable pdns
Передача зоны DNS.
В переменной allow-axfr-ips
можно задать список адресов на которые разрешена передача зоны DNS.
Адрес сервера и порт задаются в поле recursor
.
В поле allow-recursion
нужно перечислить адреса с которых разрешены рекурсивные запросы.
dnsdomain2.ldif, источник схемы: пакет pdns-backend-ldap
, файл /etc/ldap/schema/dnsdomain2.schema
dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: associatedDomain pres,eq,sub - add: olcDbIndex olcDbIndex: aAAARecord pres,eq - add: olcDbIndex olcDbIndex: aRecord pres,eq
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dnsdomain2.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f olcDbIndex_dns.ldif
dnsdomain2.schema
pdns-backend-ldap_4.0.3-1+deb9u4_amd64.deb deb://CONTENTS/etc/ldap/schema/dnsdomain2.schema
ldap-1-host=127.0.0.1 ldap-1-basedn=ou=dns,dc=sub1,dc=domain ldap-1-binddn=cn=srvs,dc=domain ldap-1-secret=ПАРОЛЬ ldap-1-method=simple ldap-2-host=127.0.0.1 ldap-2-basedn=ou=dns,dc=sub2,dc=domain ldap-2-binddn=cn=srvs,dc=domain ldap-2-secret=ПАРОЛЬ ldap-2-method=simple
Пример файлов для импорта зон сервера BIND:
!/bin/sh - zone2ldap\ --basedn='ou=dns,dc=sub1,dc=domain,dc=ru'\ --named-conf=named.conf.local_1\ --resume > dns_1.ldif\
!/bin/sh - zone2ldap\ --basedn='ou=dns,dc=sub2,dc=domain,dc=ru'\ --named-conf=named.conf.local_2\ --resume > dns_2.ldif\
Поведение в стиле сервера BIND
Установка:
apt install pdns-server pdns-backend-bind
# Debian default: supermaster created zones are written here: include "/var/lib/powerdns/supermaster.conf"; zone "domain.ru" { file "/var/lib/powerdns/zones.slave.d/domain.ru"; type slave; masters { 10.0.1.1; }; };
apt-get install pdns-recursor
Пример настройки сервера:
Важно, что поскольку все запросы должны идти через этот сервер, он использовать основной порт:
local-port=53
Для версии 4.1.0 и старше:
config-dir=/etc/powerdns/ daemon=yes quiet=yes setgid=pdns setuid=pdns local-address=127.0.0.1,10.0.0.1 local-port=53 allow-from=127.0.0.0/8 forward-zones=.=8.8.8.8;8.8.4.4 forward-zones-recurse=.=8.8.8.8;8.8.4.4
Список адресов на которых будет работать сервер и номер порта задаются переменными:
Список адресов с которых разрешены запросы к серверу задаётся в переменной allow-from
Серверы на которые будет отправлен запрос, если в кэш нет данных.
Список серверов задаётся в переменных:
forward-zones
forward-zones-recurse
PowerDNS Authoritative Nameserver
All Authoritative Server settings
All PowerDNS Recursor Settings
https://wiki.debian.org/LDAP/PowerDNSSetup
How can i run several PowerDNS backends at once?
CentOS 7 PowerDNS installation guide
https://www.poweradmin.org/Poweradmin - a web-based control panel for PowerDNS