bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Налаштування PowerDNS з

calendar_month Aug 23, 2026 schedule 18 хв. читання visibility 19 переглядів
Настройка PowerDNS с Poweradmin на VPS: создание собственного авторитативного DNS-сервера
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Налаштування PowerDNS з Poweradmin на VPS: створення власного авторитативного DNS-сервера

TL;DR

У цьому докладному посібнику ми крок за кроком налаштуємо власний авторитативний DNS-сервер, використовуючи PowerDNS Authoritative Server та веб-інтерфейс Poweradmin, на базі операційної системи Ubuntu Server 24.04 LTS. Ви дізнаєтеся, як підготувати VPS, встановити та сконфігурувати всі необхідні компоненти, включно з базою даних MariaDB, веб-сервером Nginx та PHP-FPM, а також забезпечити безпеку та відмовостійкість вашої DNS-інфраструктури.

  • Встановлення та налаштування PowerDNS Authoritative Server для керування доменними зонами.
  • Розгортання Poweradmin – зручного веб-інтерфейсу для керування записами DNS.
  • Використання MariaDB як бекенду для зберігання даних DNS.
  • Захист сервера за допомогою брандмауера UFW, Fail2ban та TLS-сертифікатів Let's Encrypt.
  • Рекомендації щодо вибору оптимального VPS-конфігу, бекапів та усунення несправностей.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

Сьогодні ми займемося розгортанням власного авторитативного DNS-сервера. Авторитативний DNS-сервер — це сервер, який зберігає офіційні записи для одного або кількох доменних імен (наприклад, example.com) і відповідає на запити щодо них. На відміну від рекурсивних DNS-серверів (які просто пересилають запити та кешують відповіді), авторитативний сервер є "джерелом істини" для ваших доменів.

Як основу ми будемо використовувати PowerDNS Authoritative Server – високопродуктивний та гнучкий DNS-сервер, який підтримує різні бекенди для зберігання даних, включно з базами даних. Для зручного керування доменними зонами та записами ми встановимо Poweradmin – веб-інтерфейс, який значно спрощує роботу з PowerDNS через браузер, позбавляючи від необхідності ручного редагування файлів зон.

У підсумку ви отримаєте повністю функціональний, відмовостійкий та легко керований DNS-сервер, на якому зможете розміщувати доменні зони для своїх сайтів, сервісів або проєктів. Це дозволяє повністю контролювати свої DNS-записи, швидко вносити зміни, інтегрувати DNS з іншими системами та не залежати від сторонніх DNS-провайдерів, що критично важливо для багатьох розробників, стартапів та ентузіастів.

Існують альтернативи, такі як хмарні DNS-сервіси (Cloudflare DNS, AWS Route 53, Google Cloud DNS) або DNS-сервери, вбудовані в панель керування хостингом. Хмарні сервіси пропонують високу доступність та продуктивність, але часто мають обмеження щодо кастомізації та можуть бути дорогими для великої кількості зон або специфічних запитів. Самостійне розміщення DNS на VPS дає повний контроль над конфігурацією, даними та безпекою, а також може бути більш економічним у довгостроковій перспективі для проєктів з певними вимогами до приватності або інтеграції. Вибираючи self-hosted рішення, ви отримуєте гнучкість та суверенітет над своєю DNS-інфраструктурою.

Який VPS-конфіг потрібен для цього завдання

Схема: Який VPS-конфіг потрібен для цього завдання
Схема: Який VPS-конфіг потрібен для цього завдання

Для авторитативного DNS-сервера, особливо якщо він обслуговує не дуже велику кількість зон (до кількох сотень) і не піддається DDoS-атакам, вимоги до ресурсів досить скромні. PowerDNS дуже ефективний.

Мінімальні вимоги:

  • CPU: 1 ядро (x64 архітектура). Сучасні процесори з тактовою частотою від 2 ГГц більш ніж достатні.
  • RAM: 1 ГБ. Цього вистачить для операційної системи, PowerDNS, MariaDB, Nginx та PHP-FPM. Якщо планується дуже багато зон (тисячі) або високе навантаження, можна розглянути 2 ГБ.
  • Диск: 20-30 ГБ SSD. PowerDNS та база даних займають мало місця. Основний обсяг потрібен для операційної системи, логів та бекапів. SSD критичний для швидкої роботи бази даних.
  • Сеть: 100 Мбіт/с або 1 Гбіт/с. Для DNS-запитів пропускна здатність не є вузьким місцем, оскільки запити дуже легкі. Головне — стабільність з'єднання та низька затримка.

Конкретний VPS-план для завдання:

Для більшості сценаріїв, включно з розробниками, соло-фаундерами та невеликими командами, оптимальним буде VPS з такими характеристиками:

  • 2 vCPU
  • 2 ГБ RAM
  • 50 ГБ SSD
  • 1 Гбіт/с мережевий інтерфейс
  • Виділена IPv4-адреса (мінімум 2, якщо ви хочете запустити два NS-сервери на різних IP)

Такий конфіг забезпечить комфортну роботу, достатній запас продуктивності та місце для зростання. Ви можете розглянути VPS із зазначеними характеристиками від надійного провайдера.

Коли потрібен dedicated, а не VPS:

Dedicated-сервер (виділений сервер) може знадобитися в таких випадках:

  • Дуже високе навантаження: Якщо ви плануєте обслуговувати сотні тисяч або мільйони DNS-запитів за секунду, або керувати десятками тисяч доменних зон.
  • Критичні застосунки: Для інфраструктур, де будь-яка затримка або потенційна проблема з "сусідами" на VPS неприпустима.
  • Вимоги до безпеки та ізоляції: Повна фізична ізоляція від інших клієнтів.
  • Специфічні апаратні вимоги: Наприклад, для використання апаратних модулів безпеки (HSM) або дуже великого обсягу RAM/швидких NVMe-дисків.

Для більшості завдань авторитативного DNS-сервера, особливо на початковому етапі, VPS є більш ніж достатнім та економічно вигідним рішенням.

Локація: на що впливає

Вибір локації VPS для DNS-сервера важливий з двох причин:

  1. Затримка (Latency): Чим ближче фізично ваш DNS-сервер до основної аудиторії ваших доменів, тим нижчою буде затримка при розв'язанні доменних імен. Це впливає на швидкість завантаження сайтів та чутливість сервісів.
  2. Юрисдикція: У деяких випадках місце розташування сервера може бути важливим з точки зору законодавства та правових аспектів зберігання даних.

Ідеально мати щонайменше два авторитативні DNS-сервери (один первинний, один вторинний) у різних географічних локаціях та у різних провайдерів для максимальної відмовостійкості.

Підготовка сервера

Схема: Підготовка сервера
Схема: Підготовка сервера

Перш ніж приступити до встановлення PowerDNS, необхідно виконати базову підготовку сервера. Ми будемо використовувати Ubuntu Server 24.04 LTS, оскільки це актуальна та стабільна версія для 2026 року.

1. Підключення по SSH

Підключіться до вашого нового VPS як користувач root або користувач, наданий провайдером:


ssh root@ВАШ_IP_АДРЕС_VPS

2. Оновлення системи

Завжди починайте з оновлення пакетного менеджера та встановлених пакетів до останніх версій:


sudo apt update && sudo apt upgrade -y

Оновлює список пакетів та встановлює всі доступні оновлення.

3. Створення нового користувача з правами sudo

Робота під root небезпечна. Створимо нового користувача та надамо йому права sudo:


sudo adduser username # Замініть 'username' на бажане ім'я користувача

Додає нового користувача до системи. Дотримуйтесь інструкцій для створення пароля та інформації про користувача.


sudo usermod -aG sudo username

Додає нового користувача до групи sudo, надаючи йому права адміністратора.


su - username

Перемикається на нового користувача. Тепер усі команди виконуватимуться від його імені.

4. Налаштування SSH-ключів (рекомендовано)

Для підвищення безпеки рекомендовано використовувати SSH-ключі замість паролів. Згенеруйте ключі на локальній машині (якщо ще немає):


ssh-keygen -t ed25519 -C "[email protected]"

Скопіюйте публічний ключ на сервер:


ssh-copy-id username@ВАШ_IP_АДРЕС_VPS

Вимкніть вхід за паролем для root та нового користувача у файлі /etc/ssh/sshd_config. Знайдіть рядки:


#PermitRootLogin prohibit-password
#PasswordAuthentication yes

І змініть їх на:


PermitRootLogin no
PasswordAuthentication no

Перезапустіть SSH-сервіс:


sudo systemctl restart sshd

5. Встановлення та налаштування брандмауера (UFW)

Брандмауер необхідний для обмеження доступу до сервера. Дозволимо лише SSH, HTTP, HTTPS та DNS-порти.


sudo apt install ufw -y

Встановлює Uncomplicated Firewall (UFW).


sudo ufw allow ssh # Дозволити SSH (порт 22 за замовчуванням)
sudo ufw allow http # Дозволити HTTP (порт 80) для Poweradmin та Let's Encrypt
sudo ufw allow https # Дозволити HTTPS (порт 443) для Poweradmin
sudo ufw allow 53/tcp # Дозволити TCP-трафік для DNS
sudo ufw allow 53/udp # Дозволити UDP-трафік для DNS
sudo ufw enable

Вмикає брандмауер та застосовує правила. Підтвердіть дію, ввівши y.


sudo ufw status verbose

Перевіряє поточний статус та правила UFW.

6. Встановлення Fail2ban

Fail2ban захищає сервер від атак методом підбору паролів, блокуючи IP-адреси, з яких були помічені невдалі спроби входу.


sudo apt install fail2ban -y

Встановлює Fail2ban.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Створює локальний файл конфігурації, який не буде перезаписаний при оновленні пакета.

Відредагуйте /etc/fail2ban/jail.local, щоб посилити захист. Наприклад, змініть bantime (час блокування) та maxretry (кількість спроб).


sudo nano /etc/fail2ban/jail.local

Знайдіть секцію [DEFAULT] та змініть значення:


[DEFAULT]
bantime  = 1h # Блокувати на 1 годину
findtime = 10m # Сканувати за останні 10 хвилин
maxretry = 3 # Блокувати після 3 невдалих спроб

Перезапустіть Fail2ban, щоб застосувати зміни:


sudo systemctl restart fail2ban

Ваш сервер тепер базово підготовлений та захищений.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Тепер, коли сервер підготовлено, приступимо до встановлення основних компонентів: MariaDB, PowerDNS Authoritative Server, Nginx та PHP-FPM, а також Poweradmin.

1. Встановлення MariaDB Server (версія 11.x)

MariaDB використовуватиметься як бекенд для PowerDNS та Poweradmin. Ubuntu 24.04 LTS постачається з MariaDB Server 11.x.


sudo apt install mariadb-server -y # Встановлює сервер MariaDB

Запустіть скрипт безпечного встановлення MariaDB:


sudo mysql_secure_installation # Скрипт для підвищення безпеки встановлення MariaDB

Дотримуйтесь інструкцій: встановіть пароль для користувача бази даних root, видаліть анонімних користувачів, забороніть віддалений вхід root та видаліть тестову базу даних.

Створіть базу даних та користувача для PowerDNS:


sudo mysql -u root -p # Підключитися до MariaDB від імені root

Введіть пароль, який ви встановили раніше. Всередині консолі MariaDB виконайте:


CREATE DATABASE powerdns; # Створює базу даних 'powerdns'
CREATE USER 'pdns_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD'; # Створює користувача 'pdns_user'
GRANT ALL PRIVILEGES ON powerdns. TO 'pdns_user'@'localhost'; # Надає всі привілеї на базу даних 'powerdns' користувачу 'pdns_user'
FLUSH PRIVILEGES; # Оновлює привілеї
EXIT; # Вихід з консолі MariaDB

Замініть YOUR_STRONG_PASSWORD на надійний пароль.

2. Встановлення PowerDNS Authoritative Server (версія ~4.8-4.9)

Встановимо PowerDNS та необхідні залежності для бекенду MariaDB.


sudo apt install pdns-server pdns-backend-mysql -y # Встановлює PowerDNS Authoritative Server та бекенд для MySQL/MariaDB

Імпортуйте схему бази даних PowerDNS. Схема знаходиться в документації PowerDNS або в пакеті.


sudo mysql -u pdns_user -p powerdns < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql # Імпортує схему бази даних PowerDNS

Введіть пароль для pdns_user.

3. Конфігурація PowerDNS

Відредагуйте основний конфігураційний файл PowerDNS /etc/powerdns/pdns.conf.


sudo nano /etc/powerdns/pdns.conf # Відкриває конфігураційний файл PowerDNS

Знайдіть або додайте наступні рядки, переконавшись, що вони відповідають вашим налаштуванням:


# /etc/powerdns/pdns.conf
launch=gmysql
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=pdns_user
gmysql-password=YOUR_STRONG_PASSWORD
default-soa-name=ns1.yourdomain.com # Замініть на ім'я вашого NS-сервера
allow-recursion=0.0.0.0/0 # Або обмежте до конкретних IP, якщо не бажаєте рекурсії
allow-axfr-ips=127.0.0.1 # IP-адреси, яким дозволено AXFR (передача зони)
setuid=pdns
setgid=pdns
log-level=4
daemon=yes
local-address=ВАШ_IP_АДРЕС_VPS # IP-адреса, на якій PowerDNS слухатиме запити

Замініть YOUR_STRONG_PASSWORD на пароль користувача бази даних PowerDNS, а ns1.yourdomain.com та ВАШ_IP_АДРЕС_VPS на свої значення.


sudo systemctl enable pdns # Вмикає автозапуск PowerDNS при старті системи
sudo systemctl start pdns # Запускає сервіс PowerDNS
sudo systemctl status pdns # Перевіряє статус PowerDNS

4. Встановлення Nginx та PHP-FPM (версії ~1.28 та ~8.3)

Nginx буде веб-сервером для Poweradmin, а PHP-FPM оброблятиме PHP-скрипти.


sudo apt install nginx php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl php8.3-xml php8.3-mbstring php8.3-intl -y # Встановлює Nginx, PHP-FPM та необхідні PHP-модулі

sudo systemctl enable nginx php8.3-fpm # Вмикає автозапуск Nginx та PHP-FPM
sudo systemctl start nginx php8.3-fpm # Запускає сервіси Nginx та PHP-FPM
sudo systemctl status nginx php8.3-fpm # Перевіряє статус сервісів

5. Встановлення Poweradmin (версія ~3.0)

Завантажимо Poweradmin з офіційного репозиторію GitHub. На 2026 рік орієнтуватимемося на стабільний реліз 3.0.


cd /var/www/ # Переходимо до директорії для веб-сайтів
sudo git clone https://github.com/PowerDNS/poweradmin.git html # Клонуємо репозиторій Poweradmin у теку 'html'
sudo chown -R www-data:www-data /var/www/html # Встановлюємо власника для файлів Poweradmin
sudo find /var/www/html -type d -exec chmod 755 {} \; # Встановлюємо права на директорії
sudo find /var/www/html -type f -exec chmod 644 {} \; # Встановлюємо права на файли

Перейдіть до директорії Poweradmin та скопіюйте файл конфігурації:


cd /var/www/html
sudo cp config-dist.inc.php config.inc.php # Копіює шаблон конфігурації

Тепер потрібно відредагувати config.inc.php. Вкажіть дані для підключення до бази даних, які ми створили раніше:


sudo nano config.inc.php # Відкриває конфігураційний файл Poweradmin

Знайдіть секції, що стосуються бази даних, та змініть їх:


// config.inc.php (фрагмент)
$db_host = 'localhost';
$db_user = 'pdns_user';
$db_pass = 'YOUR_STRONG_PASSWORD'; // Пароль користувача PowerDNS у MariaDB
$db_name = 'powerdns';
$db_type = 'mysql'; // Або 'pgsql' для PostgreSQL

Вкажіть також домени для NS-серверів:


// config.inc.php (фрагмент)
$primary_ns = 'ns1.yourdomain.com'; // Замініть на ім'я вашого першого NS
$secondary_ns = 'ns2.yourdomain.com'; // Замініть на ім'я вашого другого NS (якщо є)

Створіть користувача-адміністратора Poweradmin. Перейдіть у браузері за адресою http://ВАШ_IP_АДРЕС_VPS/install/. Дотримуйтесь інструкцій майстра встановлення: створіть адміністратора, видаліть директорію install.


sudo rm -rf /var/www/html/install # Видаляє директорію встановлення після завершення

Тепер Poweradmin готовий до використання.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Після встановлення компонентів необхідно провести їх остаточну конфігурацію, особливо для Nginx, щоб він правильно обслуговував Poweradmin, та налаштувати TLS/HTTPS.

1. Конфігурація Nginx для Poweradmin

Створіть новий файл конфігурації Nginx для Poweradmin. Видаліть дефолтний конфіг Nginx, якщо він існує, або просто створіть новий.


sudo nano /etc/nginx/sites-available/poweradmin.conf # Створює новий файл конфігурації Nginx

Вставте наступний вміст:


# /etc/nginx/sites-available/poweradmin.conf
server {
    listen 80;
    server_name your_poweradmin_domain.com ВАШ_IP_АДРЕС_VPS; # Замініть на ваш домен або IP
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Переконайтеся, що це відповідає вашій версії PHP-FPM
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Створіть символічне посилання на цей файл у sites-enabled та перевірте конфігурацію Nginx:


sudo ln -s /etc/nginx/sites-available/poweradmin.conf /etc/nginx/sites-enabled/ # Створює символічне посилання
sudo nginx -t # Перевіряє синтаксис конфігурації Nginx

Якщо тест успішний, перезапустіть Nginx:


sudo systemctl restart nginx # Перезапускає Nginx

Тепер ви зможете отримати доступ до Poweradmin за IP-адресою вашого VPS або за доменним ім'ям, якщо ви вже налаштували його (наприклад, http://poweradmin.yourdomain.com).

2. Налаштування TLS/HTTPS через Certbot (Let's Encrypt)

Вкрай важливо захистити веб-інтерфейс Poweradmin за допомогою HTTPS. Використовуємо Certbot для отримання безкоштовних SSL/TLS-сертифікатів від Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Встановлює Certbot та плагін для Nginx

Запустіть Certbot. Він автоматично виявить ваш домен (вказаний у Nginx server_name) та налаштує Nginx.


sudo certbot --nginx -d your_poweradmin_domain.com # Отримує та встановлює сертифікат для вашого домена

Дотримуйтесь інструкцій Certbot: введіть адресу електронної пошти, погодьтеся з умовами. Certbot запропонує перенаправляти HTTP-трафік на HTTPS, що рекомендується.

Перевірка автоматичного продовження сертифікатів:


sudo certbot renew --dry-run # Перевіряє можливість продовження сертифікатів без фактичного продовження

Якщо все успішно, ваш Poweradmin тепер доступний за HTTPS.

3. Перевірка працездатності PowerDNS

Після всіх налаштувань переконаємося, що PowerDNS працює коректно та відповідає на запити.


sudo systemctl status pdns # Переконайтеся, що PowerDNS запущено

Використовуйте утиліту dig для перевірки DNS-запитів. Спочатку додайте тестову зону через Poweradmin. Наприклад, створіть зону test.com з A-записом для www.test.com, що вказує на IP-адресу 192.0.2.1.


dig @ВАШ_IP_АДРЕС_VPS www.test.com A # Надсилає DNS-запит на ваш PowerDNS-сервер

У відповіді ви повинні побачити IP-адресу 192.0.2.1. Якщо PowerDNS відповідає, значить, він працює правильно.

Перевірте, що Poweradmin доступний за HTTPS:


curl -v https://your_poweradmin_domain.com # Перевіряє доступність Poweradmin за HTTPS та відображає інформацію про сертифікат

Ви повинні побачити успішне з'єднання та деталі SSL-сертифіката.

4. Налаштування секрету для Poweradmin

У файлі config.inc.php Poweradmin є змінна $session_key. Вона використовується для шифрування сесій. Згенеруйте випадковий рядок і помістіть його туди. Ніколи не залишайте значення за замовчуванням.


head /dev/urandom | tr -dc A-Za-z0-9_ | head -c 32 ; echo # Генерує випадковий 32-символьний рядок

Відредагуйте config.inc.php:


sudo nano /var/www/html/config.inc.php

І вставте згенерований рядок:


// config.inc.php (фрагмент)
$session_key = 'ВАША_СЛУЧАЙНАЯ_32_СИМВОЛЬНАЯ_СТРОКА';

Резервні копії та обслуговування

Схема: Резервні копії та обслуговування
Схема: Резервні копії та обслуговування

Регулярне резервне копіювання та своєчасне обслуговування є критично важливими для будь-якого production-сервера, включно з DNS. Втрата DNS-записів може призвести до недоступності всіх ваших сервісів.

Що резервувати

  1. База даних PowerDNS (MariaDB): Це найважливіший компонент, що містить усі ваші доменні зони та записи.
  2. Конфігураційні файли PowerDNS: /etc/powerdns/pdns.conf та будь-які інші кастомні конфіги.
  3. Конфігураційні файли Nginx: /etc/nginx/sites-available/poweradmin.conf, /etc/nginx/nginx.conf.
  4. Конфігураційні файли Poweradmin: /var/www/html/config.inc.php.
  5. Сертифікати Let's Encrypt: Хоча їх і можна перевипустити, збереження резервної копії прискорить відновлення. Вони зберігаються в /etc/letsencrypt/.

Простий скрипт авторезервування

Створимо простий скрипт для щоденного резервування бази даних та ключових конфігураційних файлів. Ми будемо використовувати mysqldump для бази даних та tar для файлів. Для зберігання можна використовувати зовнішній S3-сумісний сервіс.


sudo mkdir -p /opt/backup/pdns # Створюємо директорію для резервних копій
sudo nano /opt/backup/pdns/backup_pdns.sh # Створюємо скрипт резервування

Вміст /opt/backup/pdns/backup_pdns.sh:


#!/bin/bash

# Налаштування бази даних
DB_USER="pdns_user"
DB_PASS="YOUR_STRONG_PASSWORD" # Використовуйте env-змінну або файл .my.cnf для продакшену
DB_NAME="powerdns"

# Директорія для резервних копій
BACKUP_DIR="/opt/backup/pdns"
DATE=$(date +%Y%m%d%H%M%S)

# Створення дампу бази даних
echo "Створення дампу бази даних MariaDB..."
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/powerdns_db_$DATE.sql"
if [ $? -eq 0 ]; then
    echo "Дамп бази даних успішно створено: $BACKUP_DIR/powerdns_db_$DATE.sql"
else
    echo "Помилка при створенні дампу бази даних."
    exit 1
fi

# Архівація конфігураційних файлів
echo "Архівація конфігураційних файлів..."
tar -czvf "$BACKUP_DIR/pdns_configs_$DATE.tar.gz" \
    /etc/powerdns/pdns.conf \
    /etc/nginx/sites-available/poweradmin.conf \
    /etc/nginx/nginx.conf \
    /var/www/html/config.inc.php \
    /etc/letsencrypt/live/your_poweradmin_domain.com/ # Вкажіть ваш домен
if [ $? -eq 0 ]; then
    echo "Конфігураційні файли успішно заархівовано: $BACKUP_DIR/pdns_configs_$DATE.tar.gz"
else
    echo "Помилка при архівації конфігураційних файлів."
    exit 1
fi

# Видалення старих резервних копій (зберігаємо 7 днів)
echo "Очищення старих резервних копій..."
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete
echo "Процес резервування завершено."

Замініть YOUR_STRONG_PASSWORD і your_poweradmin_domain.com на актуальні значення. Встановіть права на виконання:


sudo chmod +x /opt/backup/pdns/backup_pdns.sh # Робить скрипт виконуваним

Додайте скрипт до cron для щоденного виконання (наприклад, о 3 годині ночі):


sudo crontab -e # Відкриває crontab для редагування

Додайте наступний рядок у кінець файлу:


0 3 * * * /opt/backup/pdns/backup_pdns.sh >> /var/log/pdns_backup.log 2>&1

Це запускатиме скрипт щодня о 03:00 та записуватиме вивід у лог-файл.

Куди зберігати

Ніколи не зберігайте резервні копії на тому ж сервері! Якщо сервер вийде з ладу, ви втратите і дані, і резервні копії. Рекомендовані місця для зберігання:

  • Зовнішній S3-сумісний об'єктний сторадж: AWS S3, DigitalOcean Spaces, Backblaze B2, Yandex Object Storage. Це надійне та масштабоване рішення. Для автоматичного завантаження можна використовувати утиліти на кшталт s3cmd або rclone.
  • Окремий VPS: Недорогий VPS в іншій локації, що використовується виключно для зберігання резервних копій. Можна синхронізувати за допомогою rsync або scp.
  • Локальний NAS/сервер: Якщо у вас є власна інфраструктура.

Оновлення: rolling vs maintenance window

Оновлення ПЗ — важлива частина обслуговування. Для DNS-сервера, який має бути максимально доступним, це особливо актуально.

  • Rolling updates (ковзні оновлення): Якщо у вас налаштовані два (або більше) DNS-сервери (первинний та вторинний NS) у різних локаціях, ви можете оновлювати їх по черзі. Оновіть один сервер, переконайтеся, що він працює коректно, потім оновіть наступний. Це забезпечує безперервну доступність.
  • Maintenance window (вікно обслуговування): Якщо у вас лише один DNS-сервер, або ви хочете мінімізувати ризики, плануйте оновлення на періоди низького навантаження (наприклад, глибокої ночі). Обов'язково попереджайте користувачів про можливе короткострокове переривання сервісу.

Завжди робіть резервну копію перед оновленням та тестуйте оновлення на тестовому сервері, якщо це можливо. Для оновлення системи та пакетів використовуйте:


sudo apt update && sudo apt upgrade -y # Оновлення всіх пакетів

Після великих оновлень ядра або системних бібліотек може знадобитися перезавантаження сервера:


sudo reboot # Перезавантаження сервера

Усунення несправностей + FAQ

У цьому розділі зібрано поширені проблеми та відповіді на часті запитання, які можуть виникнути при налаштуванні та експлуатації PowerDNS з Poweradmin.

PowerDNS не запускається або не відповідає на запити. Що робити?

Спочатку перевірте статус сервісу PowerDNS: sudo systemctl status pdns. Якщо він не запущений або видає помилки, перегляньте логи: sudo journalctl -u pdns --since "5 minutes ago". Часті причини: некоректна конфігурація в /etc/powerdns/pdns.conf (помилки в gmysql-host, gmysql-user, gmysql-password), проблеми з підключенням до MariaDB, або конфлікти портів. Переконайтеся, що MariaDB запущений і доступний, а користувач pdns_user має правильний пароль та привілеї до бази даних powerdns. Перевірте local-address, якщо вказано, що це IP-адреса вашого сервера.

Poweradmin не завантажується або видає помилку 500/404.

Перевірте конфігурацію Nginx: sudo nginx -t та перезапустіть його: sudo systemctl restart nginx. Переконайтеся, що Nginx слухає на порту 80/443 та правильно налаштована root директорія (/var/www/html) та fastcgi_pass для PHP-FPM (unix:/run/php/php8.3-fpm.sock). Перевірте логи Nginx (/var/log/nginx/error.log) та PHP-FPM (/var/log/php8.3-fpm.log). Помилки 500 часто вказують на проблеми з PHP, наприклад, невірні налаштування бази даних у /var/www/html/config.inc.php або відсутні PHP-модулі (php8.3-mysql).

DNS-записи, додані через Poweradmin, не розв'язуються.

Переконайтеся, що ви правильно налаштували NS-записи для вашого домену у вашого реєстратора доменних імен, які вказують на IP-адресу вашого VPS. Після зміни NS-записів може знадобитися до 48 годин для повного розповсюдження змін по всьому інтернету (DNS propagation). Перевірте, що зона додана в Poweradmin і містить коректні записи (SOA, NS, A, AAAA тощо). Використовуйте dig @ВАШ_IP_АДРЕС_VPS example.com, щоб безпосередньо перевірити ваш DNS-сервер.

Який VPS-конфіг мінімально підійде для PowerDNS?

Для невеликої кількості доменів та помірного навантаження мінімальний VPS з 1 vCPU, 1 ГБ RAM та 20-30 ГБ SSD буде достатнім. PowerDNS дуже ефективний. Однак, для більшої стабільності, запасу продуктивності та можливості запуску інших дрібних сервісів на тому ж VPS, рекомендується 2 vCPU, 2 ГБ RAM та 50 ГБ SSD. SSD-диск є ключовим для хорошої продуктивності бази даних.

Що обрати — VPS чи dedicated для цього завдання?

Для більшості користувачів, включно з розробниками, соло-фаундерами та малим бізнесом, VPS є оптимальним вибором через свою економічність, гнучкість та достатню продуктивність. Dedicated-сервери виправдані лише при дуже високому навантаженні (сотні тисяч запитів на секунду), суворих вимогах до ізоляції ресурсів або необхідності використання специфічного обладнання. Почніть з VPS, і якщо навантаження зросте до критичного рівня, ви завжди зможете мігрувати на dedicated.

Які ще заходи безпеки можна вжити?

Окрім SSH-ключів, Fail2ban та UFW, розгляньте наступні кроки: регулярні оновлення системи, використання складних та унікальних паролів, обмеження доступу до MariaDB лише з localhost, регулярний аудит логів, використання двофакторної автентифікації для Poweradmin (якщо доступно через сторонні модулі або обхідні шляхи), та налаштування другого DNS-сервера (secondary NS) в іншій локації для відмовостійкості та захисту від DDoS-атак.

Як працює SOA serial і чому він важливий?

Запис SOA (Start of Authority) містить важливу інформацію про зону, включно з серійним номером (serial). Серійний номер — це число, яке збільшується при кожній зміні зони. Вторинні DNS-сервери використовують цей номер, щоб визначити, чи потрібно їм запитувати оновлення зони (AXFR/IXFR) у первинного сервера. Якщо серійний номер на первинному сервері вищий, ніж на вторинному, вторинний сервер ініціює передачу зони. Poweradmin автоматично збільшує серійний номер при кожній зміні запису, забезпечуючи коректну синхронізацію.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно налаштували та запустили власний авторитативний DNS-сервер з PowerDNS та веб-інтерфейсом Poweradmin на вашому VPS. Тепер ви повністю контролюєте свої доменні імена, можете швидко вносити зміни та забезпечувати надійне розв'язання DNS для ваших проєктів. Це потужний інструмент, який дає незалежність та гнучкість.

Ось кілька наступних кроків, які ви можете зробити для подальшого розвитку вашої DNS-інфраструктури:

  1. Налаштування вторинного DNS-сервера: Для максимальної відмовостійкості та продуктивності розгорніть другий PowerDNS-сервер на іншому VPS (бажано в іншій географічній локації та в іншого провайдера) та налаштуйте його як вторинний (slave) NS-сервер.
  2. Моніторинг: Впровадьте систему моніторингу (наприклад, Prometheus, Zabbix, Grafana) для відстеження стану PowerDNS, MariaDB, Nginx та загального завантаження сервера.
  3. Оптимізація продуктивності: Для дуже високих навантажень вивчіть можливості кешування PowerDNS, оптимізацію запитів MariaDB та тонке налаштування Nginx/PHP-FPM.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

налаштування PowerDNS з PowerAdmin на VPS: створення власного авторитативного DNS-сервера
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.