Посібники

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

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

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

Сервери 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 pdns

BIND: 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 інсталятор видалення не прибирає. Видаліть їх вручну, якщо вони вам більше не потрібні.