Як додати вторинний DNS до хостинг-панелі DirectAdmin
Навіщо вашому серверу DirectAdmin потрібен вторинний DNS

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.shAXFR відхилено (BIND) Перевірте named.conf на наявність allow-transfer з вашим IP SecondDNS:
grep -A3 'allow-transfer' /etc/named.confЗміна allow-transfer — це зміна конфігурації, тож застосуйте її через reconfig (rndc reload лише перечитує дані зон):
rndc reconfigAXFR відхилено (PowerDNS) Перевірте allow-axfr-ips у pdns.conf:
grep allow-axfr-ips /etc/pdns/pdns.confПісля змін перезапустіть PowerDNS:
systemctl restart pdnsTCP-порт 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перед видаленням, якщо хочете очистити вторинний сервер.
Пов'язані інструкції
Якщо ви керуєте іншими хостинг-панелями або хочете розширити резервування DNS, перегляньте:
- Як додати вторинний DNS до CyberPanel - Як додати вторинний DNS до cPanel/WHM - Як додати вторинний DNS до Plesk - Моніторинг вторинного DNS через Nagios - Моніторинг вторинного DNS через Zabbix - Як налаштувати вторинний DNS-сервер - Як працюють трансфери зон AXFR - Резервування DNS: чому це важливо і як його забезпечити