Як додати вторинний DNS до панелі керування хостингом cPanel/WHM
Навіщо вашому серверу cPanel вторинний DNS

Сервери cPanel/WHM обслуговують десятки чи сотні доменів на одному nameserver. Якщо цей сервер вийде з ладу — через технічне обслуговування, збій обладнання чи DDoS-атаку — кожен розміщений домен стає недоступним. Відвідувачі отримують помилки DNS, пошта перестає доставлятися, а час очікування сервісів вичерпується.
Вторинний DNS-сервер зберігає синхронізовану копію всіх ваших зон через AXFR (авторитетне перенесення зони). Коли первинний сервер недоступний, вторинний далі відповідає на DNS-запити для ваших доменів. Сайти, пошта та сервіси лишаються онлайн.
Більшість реєстраторів доменів вимагають щонайменше два nameserver, а RFC 2182 рекомендує три для продакшн-середовищ. Додати вторинний DNS — це не просто гарна практика, а необхідна умова надійної роботи в продакшні.
Ще не маєте вторинного неймсервера? SecondDNS дає його на безкоштовному 3-місячному пробному періоді, без картки — почніть тут, а потім виконайте кроки нижче.
Вторинний DNS проти кластеризації DNS для cPanel
У cPanel є вбудована функція DNS Cluster (WHM > Clusters > DNS Cluster), яка синхронізує зони між вашими власними серверами WHM. Вона корисна, але це не те саме, що незалежний вторинний DNS:
- DNS-кластер зберігає копії на серверах, якими ви керуєте, часто в одній мережі чи дата-центрі. Якщо в цій інфраструктурі стається збій, усі вузли можуть відмовити разом. - Зовнішній вторинний сервер на кшталт SecondDNS працює на окремій інфраструктурі з власною мережею та anycast-покриттям. Коли ваш сервер cPanel — чи цілий його дата-центр — недоступний, вторинний сервер усе одно відповідає.
Ви можете використовувати обидва підходи: DNS-кластер для власного резервування та SecondDNS як зовнішній авторитетний вторинний сервер, на який спираються реєстратори й резолвери. Цей гайд налаштовує зовнішній вторинний сервер через AXFR.
Як працює інтеграція вторинного DNS
Інтеграція SecondDNS для cPanel використовує систему cPanel Standardized Hooks — той самий механізм, який cPanel застосовує всередині для подій плагінів:
1. Коли створюється акаунт cPanel — хук реєструє зону основного домену в SecondDNS через API 2. Коли додається addon-домен — хук реєструє зону addon-домену 3. SecondDNS забирає повну копію кожної зони з вашого сервера через AXFR 4. Коли акаунт cPanel або addon-домен видаляється — хук прибирає зону із SecondDNS
Основний домен кожного акаунта cPanel і кожен addon-домен мають власну DNS-зону, тому кожен реєструється окремо. Усі зміни зон поширюються автоматично через механізм DNS NOTIFY. Жодних ручних кроків, жодних cron-завдань, жодних застарілих записів.
Підтримка BIND і PowerDNS
cPanel підтримує два DNS-бекенди: BIND (named) і PowerDNS, який є типовим у поточних версіях cPanel. Інсталятор автоматично визначає, який із них запущено на вашому сервері, і налаштовує його відповідно.
BIND: Інсталятор додає allow-transfer і also-notify до блоку options у /etc/named.conf. Оскільки cPanel перебудовує оголошення зон у named.conf, надійним місцем для цих директив є глобальний блок options, який cPanel зберігає під час перебудов (див. Крок 2).
PowerDNS: Інсталятор задає disable-axfr=no, allow-axfr-ips і also-notify, а також primary=yes (на PowerDNS 4.5+; старіші версії використовують master=yes). Щоб cPanel їх не чіпав, їх розміщують у drop-in include у /etc/pdns/pdns.d/, а не в основному pdns.conf.
Тут allow-transfer (або allow-axfr-ips у PowerDNS) дає серверу SecondDNS дозвіл забирати зону, а also-notify наказує вашому DNS-серверу надсилати NOTIFY, щоб вторинний сервер оновлювався одразу після зміни.
Вимоги до вторинного DNS для cPanel
Перш ніж починати, переконайтеся, що у вас є:
- Актуальна версія cPanel/WHM (v102 або новіша) з BIND або PowerDNS - Root-доступ до сервера - API-ключ SecondDNS (отримайте його на seconddns.com/dashboard/api-key) - IP вашого nameserver SecondDNS (знайдіть його в панелі в розділі Settings > Nameservers) - Відкритий вхідний TCP-порт 53 для IP сервера SecondDNS
Протокол перенесення зон AXFR використовує TCP-порт 53, а не UDP. Багато конфігурацій фаєрвола відкривають лише UDP 53 для звичайних DNS-запитів. Якщо TCP 53 заблоковано, перенесення зон не спрацюють без жодного повідомлення про помилку, навіть попри те, що звичайні DNS-запити працюють.
Відкрийте TCP-порт 53 для трансферу зон DNS
Перш ніж запускати інсталятор, відкрийте TCP-порт 53 для сервера SecondDNS. Знайдіть IP вашого nameserver у панелі в розділі Settings > Nameservers, а потім замініть SECONDARY_IP у командах нижче.
Якщо ви керуєте фаєрволом через firewalld:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="SECONDARY_IP" port port="53" protocol="tcp" accept'
firewall-cmd --reloadАбо через iptables:
iptables -I INPUT -s SECONDARY_IP -p tcp --dport 53 -j ACCEPTЯкщо ваш сервер використовує хостовий фаєрвол, яким керують у WHM, додайте вхідне правило, що дозволяє TCP-порт 53 з SECONDARY_IP.
Щоб перевірити, що TCP-порт 53 доступний ззовні:
nmap -p 53 -sT YOUR_SERVER_IPВстановлення вторинного DNS на cPanel
Запустіть однорядкову команду від root:
curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/cpanel/install.sh | bash -s -- --api-key=YOUR_API_KEYІнсталятор: - Перевірить ваш API-ключ через API SecondDNS - Визначить IP-адресу вашого сервера (IPv4 та IPv6) - Запитає, який IP використати, якщо доступні обидва протоколи - Автоматично визначить ваш DNS-бекенд (BIND або PowerDNS) і попросить підтвердити - Налаштує AXFR для визначеного бекенда - Додасть nameserver SecondDNS до всіх шаблонів зон у /var/cpanel/zonetemplates/, щоб кожна нова зона включала його автоматично - Зареєструє 4 хуки WHM через manage_hooks - Запропонує синхронізувати всі наявні акаунти cPanel
Замініть YOUR_API_KEY на ключ із вашої панелі SecondDNS.
Зверніть увагу: ця інтеграція наразі в стадії Beta. Протестуйте її в staging-середовищі, перш ніж розгортати в продакшн.
Перевірте конфігурацію трансферу зон
PowerDNS: Інсталятор додає директиви AXFR як drop-in include у /etc/pdns/pdns.d/, щоб cPanel не перезаписав їх під час перебудови. Перевірте їх:
grep -rE 'primary|master|disable-axfr|allow-axfr-ips|also-notify' /etc/pdns/pdns.conf /etc/pdns/pdns.d/Після будь-якої зміни перезапустіть PowerDNS:
systemctl restart pdnsBIND: cPanel перебудовує оголошення зон у /etc/named.conf, але зберігає глобальний блок options. Тож надійним місцем для директив AXFR є середина options { ... }. Переконайтеся, що вони там (замініть SECONDARY_IP на IP вашого nameserver із панелі):
allow-transfer { SECONDARY_IP; };
also-notify { SECONDARY_IP; };Інсталятор додає їх до блоку options автоматично. Після редагування named.conf застосуйте зміну командою:
rndc reconfigЯкщо перенесення спочатку працюють, а після перебудови cPanel ламаються — директиви потрапили в зонну секцію, а не в блок options. Перенесіть їх у options { }, щоб вони збереглися.
Синхронізуйте наявні домени з вторинним DNS
Інсталятор пропонує синхронізувати всі наявні акаунти cPanel під час встановлення. Якщо ви пропустили цей крок, запустіть синхронізацію пізніше:
seconddns syncЦе порівнює ваші локальні зони із SecondDNS і додає всі, яких бракує. Команда ідемпотентна — її безпечно запускати кілька разів. Щоб перевірити одну зону або вивести все на вторинному сервері:
seconddns status example.com
seconddns listЗміна шаблону зони (додавання NS-запису вторинного сервера) впливає лише на нові зони, створені після встановлення. Для наявних доменів додайте NS-запис вручну через WHM > DNS Functions > Edit DNS Zone або дайте синхронізації зареєструвати зони на вторинному сервері.
Перевірте налаштування вторинного DNS cPanel
Створіть тестовий акаунт у WHM і стежте за логом хука:
tail -f /var/log/seconddns.logВи маєте побачити:
Zone created: testdomain.com (cpanel hook)
[+] Zone testdomain.com added to SecondDNSПотім надішліть запит до обох nameserver. Замініть SECONDARY_IP на IP вашого nameserver із панелі:
dig @YOUR_SERVER_IP testdomain.com SOA +short
dig @SECONDARY_IP testdomain.com SOA +shortОбидва мають повернути той самий серійний номер SOA у форматі YYYYMMDDNN. Якщо вторинний сервер показує менший серійний номер або повертає SERVFAIL, перевірте доступ до TCP-порту 53 і лог хука.
Підтримувані події DNS cPanel
Інтеграція реєструє хуки для таких подій cPanel:
- Створення акаунта (зона основного домену акаунта) - Видалення акаунта - Створення addon-домену - Видалення addon-домену
Основний домен кожного акаунта cPanel і кожен addon-домен мають власну DNS-зону. Субдомени та припарковані домени існують як записи всередині зони батьківського домену, тому вони поширюються на вторинний сервер разом із перенесенням батьківської зони — окремо їх не реєструють.
Усунення несправностей вторинного DNS cPanel
Зона не з'являється на вторинному сервері Перевірте лог у /var/log/seconddns.log. Переконайтеся, що хуки зареєстровано:
/usr/local/cpanel/bin/manage_hooks listВи маєте побачити 4 хуки SecondDNS (Accounts::Create, Accounts::Remove, AddonDomain::addaddon, AddonDomain::deladdondomain). Якщо їх немає, запустіть інсталятор повторно.
AXFR відхилено (BIND) Переконайтеся, що allow-transfer розміщено всередині блоку options у /etc/named.conf, а не в окремій зонній секції. Саме блок options переживає перебудову cPanel. Застосуйте зміни командою rndc reconfig.
AXFR відхилено (PowerDNS) Перевірте allow-axfr-ips у /etc/pdns/pdns.conf і перезапустіть PowerDNS:
grep allow-axfr-ips /etc/pdns/pdns.conf
systemctl restart pdnsТаймаут з'єднання Переконайтеся, що TCP-порт 53 відкрито між вашим сервером і SecondDNS. AXFR використовує TCP, а не UDP. Найпоширеніша причина невдалих перенесень — TCP 53 заблоковано на фаєрволі, тоді як UDP 53 відкрито.
Перевірте хук вручну
echo '{"domain":"example.com"}' | bash /usr/local/bin/seconddns-cpanel-domain_create.shВидалення
Щоб видалити інтеграцію:
curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/cpanel/uninstall.sh | bashЦе видаляє хуки WHM, скрипти та файл конфігурації. Також прибирає NS-запис SecondDNS із шаблонів зон. Ваші зони на вторинному DNS не видаляються автоматично — приберіть їх через панель SecondDNS або запустіть:
seconddns remove-allперед видаленням, якщо хочете очистити їх із вторинного сервера.
Зверніть увагу: директиви allow-transfer / also-notify у блоці options файлу named.conf (BIND) або drop-in у /etc/pdns/pdns.d/ (PowerDNS) із Кроку 2 інсталятор видалення не прибирає. Видаліть їх вручну, якщо вони вам більше не потрібні.
Пов'язані гайди
Якщо ви керуєте іншими панелями хостингу або хочете розширити своє налаштування DNS-резервування, перегляньте:
- Як додати вторинний DNS до DirectAdmin - Як додати вторинний DNS до Plesk - Як додати вторинний DNS до CyberPanel - Моніторинг вторинного DNS із Nagios - Моніторинг вторинного DNS із Zabbix - Як налаштувати вторинний DNS-сервер - Як працюють трансфери зон AXFR - Резервування DNS: чому це важливо і як його забезпечити