====== 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}}