PowerDNS: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «= Установка и настройка = {{Note|Авторитарный сервер будет разворачиваться с PostgreSQL. Подробнее о настройке и работе — на отдельной странице.}} == Установка PostgreSQL == Обновляем индексы пакетов: <pre># apt-get update</pre> Устанавливаем сервер PostgreSQL: {{Note|Для пример...»)
 
мНет описания правки
Строка 15: Строка 15:


Устанавливаем пакеты:
Устанавливаем пакеты:
<pre>
<syntaxhighlight lang="bash"># apt-get install pdns pdns-backend-postgresql</syntaxhighlight>
# apt-get install pdns pdns-backend-postgresql
</pre>


== Создание БД и пользователя в 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