PowerDNS: различия между версиями
Servz (обсуждение | вклад) (Новая страница: «= Установка и настройка = {{Note|Авторитарный сервер будет разворачиваться с PostgreSQL. Подробнее о настройке и работе — на отдельной странице.}} == Установка PostgreSQL == Обновляем индексы пакетов: <pre># apt-get update</pre> Устанавливаем сервер PostgreSQL: {{Note|Для пример...») |
мНет описания правки |
||
Строка 15: | Строка 15: | ||
Устанавливаем пакеты: | Устанавливаем пакеты: | ||
< | <syntaxhighlight lang="bash"># apt-get install pdns pdns-backend-postgresql</syntaxhighlight> | ||
# apt-get install pdns pdns-backend-postgresql | |||
</ | |||
== Создание БД и пользователя в PostgreSQL == | == Создание БД и пользователя в PostgreSQL == |
Версия от 10:29, 9 июня 2025
Установка и настройка
Примечание: Авторитарный сервер будет разворачиваться с PostgreSQL. Подробнее о настройке и работе — на отдельной странице.
Установка PostgreSQL
Обновляем индексы пакетов:
# apt-get update
Устанавливаем сервер PostgreSQL:
Примечание: Для примера возьмём версию PostgreSQL 14.
# apt-get install postgresql14-server
Установка PowerDNS
Обновляем индексы пакетов:
# apt-get update
Устанавливаем пакеты:
# apt-get install pdns pdns-backend-postgresql
Создание БД и пользователя в PostgreSQL
Подключаемся к PostgreSQL:
# psql -U postgres
Создаём пользователя и БД:
CREATE USER pdns WITH PASSWORD 'Очень_надёжный_пароль_пользователя_БД'; CREATE DATABASE pdns_db WITH OWNER pdns;
Импорт схемы PowerDNS
Загружаем схему:
# psql -U pdns -d pdns_db < /usr/share/doc/pdns/schema.pgsql.sql
Настройка PowerDNS
Основной конфигурационный файл: /etc/pdns/pdns.conf
Пример конфигурации для сервера (192.168.0.1) и двух клиентов (192.168.0.2, 192.168.0.3):
launch=gpgsql gpgsql-host=localhost gpgsql-user=pdns gpgsql-password=Очень_надёжный_пароль_пользователя_БД gpgsql-dbname=pdns_db local-address=192.168.0.1 allow-axfr-ips=192.168.0.2, 192.168.0.3 local-port=53 setgid=pdns setuid=pdns api=yes api-key=Очень_надёжный_пароль_API webserver=yes webserver-address=192.168.0.1 webserver-port=8081 webserver-allow-from=192.168.0.1, 192.168.0.2, 192.168.0.3
Перезапускаем и добавляем в автозагрузку:
# systemctl restart pdns
# systemctl enable pdns
Добавление тестовых зон
Создаём зону в БД:
# psql -U pdns -d pdns_db pdns_db=> INSERT INTO domains (name, type) VALUES ('test.alt', 'NATIVE');
Добавляем DNS-записи:
pdns_db=> INSERT INTO records (domain_id, name, type, content, ttl) VALUES (1, 'test.alt', 'SOA', 'ns1.test.alt mail.test.alt 1 10800 3600 604800 3600', 3600), (1, 'test.alt', 'NS', 'ns1.test.alt', 3600), (1, 'ns1.test.alt', 'A', '192.168.0.1', 3600), (1, 'client1.test.alt', 'A', '192.168.0.2', 3600);
Добавляем второго клиента через API:
curl -X PATCH -H "X-API-Key: Очень_надёжный_пароль_API" \
-H "Content-Type: application/json" \
-d '{
"rrsets": [{
"name": "client2.test.alt.",
"type": "A",
"ttl": 3600,
"changetype": "REPLACE",
"records": [{"content": "192.168.0.3", "disabled": false}]
}]
}' \
http://192.168.0.1:8081/api/v1/servers/localhost/zones/test.alt
Проверяем записи в БД:
# psql -U pdns -d pdns_db -c "SELECT * FROM records;"
Вывод:
Примечание: Таблица видоизменена для удобного представления на странице.
id | domain_id | name | type | content | ttl | prio | disabled | ordername | auth
----+-----------+------------------+------+----------------+------+------+----------+-----------+------
1 | 1 | test.alt | SOA | ns1.test.alt | 3600 | | f | | t
| | | | mail.test.alt | | | | |
| | | | 1 10800 3600 | | | | |
| | | | 604800 3600 | | | | |
2 | 1 | test.alt | NS | ns1.test.alt | 3600 | | f | | t
3 | 1 | ns1.test.alt | A | 192.168.0.1 | 3600 | | f | | t
4 | 1 | client1.test.alt | A | 192.168.0.2 | 3600 | | f | | t
5 | 1 | client2.test.alt | A | 192.168.0.3 | 3600 | | f | | t
(5 строк)
Проверка работы
- На client1:
dig @192.168.0.1 client1.test.alt +short
Ожидаемый вывод: 192.168.0.2
- На client2:
dig @192.168.0.1 client2.test.alt +short
Ожидаемый вывод: 192.168.0.3