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

Получить VPS arrow_forward
eco Начальный Туториал

Настройка PowerDNS с Poweradmin на VPS: создание собственного авторитативного DNS-сервера

calendar_month Aug 23, 2026 schedule 18 мин. чтения visibility 13 просмотров
Настройка 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 "Dumping MariaDB database..."
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/powerdns_db_$DATE.sql"
if [ $? -eq 0 ]; then
    echo "Database dump created successfully: $BACKUP_DIR/powerdns_db_$DATE.sql"
else
    echo "Error creating database dump."
    exit 1
fi

# Архивирование конфигурационных файлов
echo "Archiving configuration files..."
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 "Configuration files archived successfully: $BACKUP_DIR/pdns_configs_$DATE.tar.gz"
else
    echo "Error archiving configuration files."
    exit 1
fi

# Удаление старых бэкапов (храним 7 дней)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -type f -name ".sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name ".tar.gz" -mtime +7 -delete
echo "Backup process completed."

Замените 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 # Перезагрузка сервера

Troubleshooting + 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.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

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.