====== PowerDNS ====== PowerDNS — представляет собой высокопроизводительный [[dns:dns|DNS]]-сервер, написанный на C++ и лицензируемый под лицензией GPL. Разработка ведётся в рамках поддержки Unix-систем. Сервер разработан в голландской компании PowerDNS.com Бертом Хубертом и поддерживается сообществом свободного программного обеспечения. PowerDNS использует гибкую архитектуру хранения/доступа к данным, он может работать с следующими хранилищами данных: * директории [[ldap:ldap|LDAP]]; * файлы зон [[bind:bind|BIND]]; * собственные файлы зон; * реляционные БД. PowerDNS по умолчанию настроен на обслуживание запросов из БД. Распространяется в виде двух компонентов: * [[#Авторитетный (Authoritative)|Авторитетный (Authoritative)]] * [[#Рекурсивный (Recursor)|Рекурсивный (Recursor)]] http://www.powerdns.com/ ====== Схема работы ====== Традиционная схема работы серверов до версии 4.1.0: {{anchor:before_410}} |Authoritative|v|LDAP|Authoritative=**[[#authoritative_410|Авторитетный]]**|LDAP=[[#LDAP|LDAP]] ||:||!||!| ||:||!||)|ldap:1| ||:||!||!| ||:||!||` |ldap:2| ||:||!|| ||:||`|BIND| |BIND=[[#BIND|BIND]] ||:|||| |Recursor|-|Forward|Recursor=**[[#recursor_410|Рекурсивный]]**|Forward=[[#forward|Внешние серверы (forward)]] ||||||!| ||||||)|forward1| ||||||!| ||||||` |forward2| {{anchor:after_410}} Рекурсия была удалена с авторитетного сервера в версии 4.1.0. Примеры файлов для этой версии: * [[#authoritative_4.1.0|pdns.conf]] * [[#recursor_4.1.0|recursor.conf]] * [[#after_410|Схема работы серверов с версии 4.1.0]] ---- [[https://doc.powerdns.com/authoritative/guides/recursion.html|Migrating from using recursion on the Authoritative Server to using a Recursor — PowerDNS Authoritative Server documentation]] Схема работы серверов с версии 4.1.0: |Recursor|-|Forward|Recursor=**[[#Рекурсивный (Recursor)|Рекурсивный]]**|Forward=[[#forward|Внешние серверы (forward)]] ||:||||!| ||:||||)|forward1| ||:||||!| ||:||||` |forward2| ||:| |Authoritative|v|LDAP|Authoritative=**[[#Авторитетный (Authoritative)|Авторитетный]]**|LDAP=[[#LDAP|LDAP]] ||||!||!| ||||!||)|ldap:1| ||||!||!| ||||!||` |ldap:2| ||||!|| ||||`|BIND| |BIND=[[#BIND|BIND]] |||||| ====== Настройка ====== ''/var/lib/powerdns'' — папка с файлами зон, например при использовании [[#Bind]] ===== security-poll-suffix ===== Для подобных подавления сообщений: 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= ---- [[https://blog.powerdns.com/2014/10/22/powerdns-security-status-polling/|PowerDNS Security Status Polling | PowerDNS Blog]] ====== Авторитетный (Authoritative) ====== ===== Установка ===== apt-get install pdns-server pdns-backend-ldap Для Debian 7 (wheezy) нужно ставить из репозитория ''wheezy-backports'': apt-get install -t wheezy-backports pdns-server pdns-backend-ldap ===== Настройка ===== {{anchor:authoritative_410}} Для версии 4.1.0 и старше: Важно, что поскольку все запросы должны идти через [[#recursor_410|рекурсивный сервер]], то этот должен использовать не основной порт, например: 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 setgid=pdns setuid=pdns daemon=yes guardian=yes config-dir=/etc/powerdns include-dir=/etc/powerdns/pdns.d default-soa-name=ns.domain.ru local-address=127.0.0.1,10.0.0.1 local-port=53 allow-axfr-ips=10.0.1.5, 10.0.1.6 master=yes slave=yes launch=ldap:1,ldap:2 recursor=127.0.0.1:5353 allow-recursion=127.0.0.1, 10.0.1.5, 10.0.1.6 ==== Сервис ==== Состояние: systemctl list-unit-files|grep pdns пример вывода: pdns.service enabled Включение systemctl enable pdns ==== axfr ==== FIXME Передача зоны DNS. В переменной ''allow-axfr-ips'' можно задать список адресов на которые разрешена передача зоны DNS. ==== recursor ==== FIXME Адрес сервера и порт задаются в поле ''recursor''. В поле ''allow-recursion'' нужно перечислить адреса с которых разрешены рекурсивные запросы. ==== LDAP ==== [[openldap:openldap|OpenLDAP]]. [[https://doc.powerdns.com/md/authoritative/backend-ldap/|LDAP backend]] {{:powerdns:dnsdomain2.ldif|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:bind|сервера 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 ==== Поведение в стиле сервера [[bind:bind|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; }; }; ====== Рекурсивный (Recursor) ====== ===== Установка ===== apt-get install pdns-recursor ===== Настройка ===== Пример настройки сервера: {{anchor:recursor_410}} Важно, что поскольку все запросы должны идти через этот сервер, он использовать основной порт: 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 config-dir=/etc/powerdns/ daemon=yes quiet=yes setgid=pdns setuid=pdns local-address=127.0.0.1,10.0.0.1 local-port=5353 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 ==== local ==== Список адресов на которых будет работать сервер и номер порта задаются переменными: * local-address * local-port ==== allow-from ==== Список адресов с которых разрешены запросы к серверу задаётся в переменной ''allow-from'' ==== forward ==== Серверы на которые будет отправлен запрос, если в кэш нет данных. Список серверов задаётся в переменных: * ''forward-zones'' * ''forward-zones-recurse'' ====== Ссылки ====== [[wpru>PowerDNS]] [[https://doc.powerdns.com/md/authoritative/|PowerDNS Authoritative Nameserver]] [[https://doc.powerdns.com/md/authoritative/settings/|All Authoritative Server settings]] [[https://doc.powerdns.com/md/recursor/|PowerDNS Recursor]] [[https://doc.powerdns.com/md/recursor/settings/|All PowerDNS Recursor Settings]] https://wiki.debian.org/LDAP/PowerDNSSetup [[https://answers.launchpad.net/powerdns/+faq/1229|How can i run several PowerDNS backends at once?]] [[https://habrahabr.ru/post/278153/|Часть 1. Установка и настройка авторитетного DNS сервера на основе решения PowerDNS // Базовая установка]] [[http://missingsmth.com/centos-7-powerdns-installation-guide/|CentOS 7 PowerDNS installation guide]] [[https://www.poweradmin.org/Poweradmin - a web-based control panel for PowerDNS]] **[[https://doc.powerdns.com/authoritative/guides/recursion.html|Migrating from using recursion on the Authoritative Server to using a Recursor — PowerDNS Authoritative Server documentation]]** {{tag>DNS}}