Посібники

Як додати вторинний DNS до хостинг-панелі DirectAdmin

Навіщо вашому серверу DirectAdmin потрібен вторинний DNS

Вторинний DNS сервер для DirectAdmin — сервіс вторинного DNS через REST API

DirectAdmin зазвичай використовує BIND (named) або PowerDNS як DNS-сервер. За замовчуванням усі домени залежать від одного неймсервера. Якщо він виходить з ладу — під час обслуговування, апаратного збою або DDoS-атаки — кожен домен стає недоступним. Відвідувачі стикаються зі збоями DNS — сайти недоступні, пошта не доставляється, сервіси не відповідають.

Вторинний DNS-сервер зберігає синхронізовану копію всіх зон через AXFR (повний трансфер зони). Коли основний недоступний, вторинний продовжує відповідати на DNS-запити. Ваші сайти, пошта та сервіси залишаються онлайн.

Більшість реєстраторів вимагають щонайменше два неймсервери, RFC 2182 рекомендує три для продакшн-середовищ. Вторинний DNS — не просто найкраща практика, а необхідна умова надійності.

Ще не маєте вторинного неймсервера? SecondDNS дає його на безкоштовному 3-місячному пробному періоді, без картки — почніть тут, а потім виконайте кроки нижче.

Як працює DNS у DirectAdmin

DirectAdmin підтримує два DNS-бекенди: BIND (named) і PowerDNS. Підхід до налаштування для них різний.

BIND (named): Зони зберігаються у файлах зон у /etc/named/ або /var/named/. Трансфери налаштовуються в named.conf: allow-transfer дозволяє вторинному серверу завантажувати зону, а also-notify змушує BIND надсилати NOTIFY, щоб вторинний одразу оновлювався.

PowerDNS: Дані DNS зберігаються в базі даних. Трансфери контролюються через allow-axfr-ips у pdns.conf. Інсталятор SecondDNS автоматично визначає, який бекенд використовується, і налаштовує потрібні директиви.

В обох випадках DirectAdmin керує DNS через hook-скрипти. При створенні або видаленні домену DirectAdmin викликає скрипти в /usr/local/directadmin/scripts/custom/. Інтеграція SecondDNS встановлює власні хуки за цим шляхом, щоб автоматично реєструвати та видаляти зони — керувати зонами вручну не потрібно.

Як працює інтеграція вторинного DNS

Інтеграція SecondDNS для DirectAdmin використовує hook-скрипти, які DirectAdmin викликає автоматично після DNS-подій:

1. Коли створюється домен або domain pointer — хук реєструє зону в SecondDNS через API 2. SecondDNS завантажує повну копію зони з вашого сервера через AXFR 3. Коли домен видаляється — хук видаляє його з SecondDNS

Всі зміни зон поширюються автоматично через механізм NOTIFY BIND/PowerDNS. Жодних ручних дій, cron-задач чи застарілих записів.

Вимоги до вторинного DNS для DirectAdmin

Перед початком переконайтеся, що маєте:

- DirectAdmin 1.6 або новіше з BIND/named або PowerDNS - Root (sudo) доступ до сервера - API-ключ SecondDNS (отримайте на seconddns.com/dashboard/api-key) - IP-адресу вашого неймсервера SecondDNS (знайдіть у панелі у розділі Settings > Nameservers) - відкриті вхідні з'єднання на TCP-порт 53 вашого сервера з IP-адрес SecondDNS

Протокол трансферу зон AXFR використовує TCP-порт 53, а не UDP. Якщо TCP 53 заблоковано, трансфери зон мовчки провалюватимуться, без жодного повідомлення про помилку — навіть якщо звичайні DNS-запити працюють нормально.

Відкрийте TCP-порт 53 для трансферу зон DNS

Перед запуском інсталятора відкрийте TCP-порт 53 для сервера SecondDNS. Знайдіть IP вашого неймсервера в панелі у розділі Settings > Nameservers, замініть SECONDARY_IP у командах нижче.

Якщо використовуєте UFW:

ufw allow from SECONDARY_IP to any port 53 proto tcp
ufw reload

Якщо використовуєте iptables:

iptables -I INPUT -s SECONDARY_IP -p tcp --dport 53 -j ACCEPT

Якщо використовуєте nftables:

nft add rule inet filter input ip saddr SECONDARY_IP tcp dport 53 accept

Щоб перевірити, що TCP-порт 53 відкритий ззовні:

nmap -p 53 -sT YOUR_SERVER_IP

Інсталятор сам налаштовує allow-transfer (BIND) або allow-axfr-ips (PowerDNS) — достатньо вказати API-ключ.

Встановлення вторинного DNS на DirectAdmin

Виконайте команду від root:

curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/directadmin/install.sh | bash -s -- --api-key=YOUR_API_KEY

Інсталятор: - Перевірить ваш API-ключ через SecondDNS API - Визначить IP-адресу сервера (IPv4 та IPv6) - Запитає, який протокол використовувати, якщо доступні обидва - Визначить DNS-бекенд (BIND або PowerDNS) - Автоматично налаштує трансфер зон (allow-transfer надає дозвіл, also-notify вмикає NOTIFY для BIND; allow-axfr-ips для PowerDNS) - Встановить hook-скрипти до /usr/local/directadmin/scripts/custom/ - Запропонує синхронізувати існуючі домени

Замініть YOUR_API_KEY на ключ з вашої панелі SecondDNS. Якщо якийсь крок не вдасться, інсталятор завершується з кодом помилки.

Налаштуйте неймсервери в DirectAdmin

Після встановлення зареєструйте вторинний неймсервер у DirectAdmin.

Варіант 1: Через панель DirectAdmin (рекомендовано) Увійдіть як Admin → Server Manager → Name Servers. У полі NS2 вкажіть хостнейм вашого неймсервера SecondDNS (відображається в панелі у розділі Settings > Nameservers). Якщо у вас є Personalized NS, використовуйте ваш брендований хостнейм (наприклад, ns2.yourdomain.com). Налаштування автоматично пошириться на всі нові домени.

Варіант 2: Редагування DNS-шаблону

vi /usr/local/directadmin/data/templates/custom/dns_zone.conf

Якщо директорія не існує, створіть її:

mkdir -p /usr/local/directadmin/data/templates/custom
cp /usr/local/directadmin/data/templates/dns_zone.conf /usr/local/directadmin/data/templates/custom/

Додайте NS-запис, що вказує на хостнейм вашого неймсервера в SecondDNS або персональне ім'я, якщо ви замовили цю послугу. Для існуючих доменів скористайтеся керуванням DNS у DirectAdmin або функцією масового оновлення DNS.

Синхронізуйте існуючі домени з вторинним DNS

Якщо домени в DirectAdmin вже існували до встановлення, синхронізуйте їх із вторинним сервером:

seconddns sync

Ця команда порівнює ваші локальні зони з SecondDNS і додає відсутні. Домени, видалені локально, прибираються з вторинного сервера. Команда ідемпотентна — її можна безпечно запускати кілька разів, дублікати не створюються.

Щоб перевірити конкретну зону:

seconddns status example.com

Щоб побачити всі зони на вторинному сервері:

seconddns list

Перевірте налаштування вторинного DNS DirectAdmin

Створіть тестовий домен у DirectAdmin і стежте за логом хуків:

tail -f /var/log/seconddns.log

У виводі має з'явитися:

Zone created: testdomain.com (caller=create:domain, user=admin)
[+] Zone testdomain.com added to SecondDNS

Потім зробіть наступні запити на обидва неймсервери. Замініть SECONDARY_IP на IP вашого неймсервера з панелі:

dig @YOUR_SERVER_IP testdomain.com SOA +short
dig @SECONDARY_IP testdomain.com SOA +short

Обидва мають повернути однаковий серіал SOA у форматі YYYYMMDDNN. Якщо вторинний показує менший серіал або повертає SERVFAIL, перевірте доступність TCP-порту 53 та лог хуків.

Підтримувані типи доменів

Інтеграція обробляє всі типи доменів DirectAdmin:

- Основні домени (create:domain) - DNS-зони (create:zone) - Domain pointers (create:pointer)

Кожен тип автоматично запускає хук під час створення або видалення через панель чи API DirectAdmin. Хук отримує ім'я домену, ім'я користувача та тип виклику від DirectAdmin і передає їх до SecondDNS.

Усунення несправностей вторинного DNS DirectAdmin

Зона не з'являється на вторинному сервері Перевірте лог хуків /var/log/seconddns.log. Переконайтеся, що хуки встановлені та мають права на виконання:

ls -la /usr/local/directadmin/scripts/custom/dns_*_post.sh

Якщо файли відсутні — перезапустіть інсталятор. Якщо є, але права на виконання відсутні:

chmod +x /usr/local/directadmin/scripts/custom/dns_*_post.sh

AXFR відхилено (BIND) Перевірте named.conf на наявність allow-transfer з вашим IP SecondDNS:

grep -A3 'allow-transfer' /etc/named.conf

Зміна allow-transfer — це зміна конфігурації, тож застосуйте її через reconfig (rndc reload лише перечитує дані зон):

rndc reconfig

AXFR відхилено (PowerDNS) Перевірте allow-axfr-ips у pdns.conf:

grep allow-axfr-ips /etc/pdns/pdns.conf

Після змін перезапустіть PowerDNS:

systemctl restart pdns

TCP-порт 53 заблоковано Запустіть тест nmap з розділу налаштування файрволу. Користувачі CSF: перевірте, що IP SecondDNS є в /etc/csf/csf.allow.

Запустити хук вручну:

domain=example.com username=admin caller=create:domain /usr/local/directadmin/scripts/custom/dns_create_post.sh

Хук не спрацьовує Перевірте, що система хуків DirectAdmin увімкнена. Деякі старіші збірки вимагають, щоб директорію кастомних скриптів було явно ввімкнено в конфігурації.

Видалення

Щоб видалити інтеграцію:

curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/directadmin/uninstall.sh | bash

Це видаляє hook-скрипти та конфігураційний файл. Ваші зони на вторинному DNS не видаляються автоматично — видаліть їх через панель SecondDNS або виконайте:

seconddns remove-all

перед видаленням, якщо хочете очистити вторинний сервер.