Przewodniki

Jak dodać wtórny DNS do panelu hostingowego cPanel/WHM

Dlaczego serwer cPanel potrzebuje wtórnego DNS

Wtórny serwer DNS dla cPanel — usługa wtórnego DNS przez REST API

Serwery cPanel/WHM obsługują dziesiątki, a nawet setki domen na jednym serwerze nazw. Jeśli ten serwer przejdzie w stan offline — z powodu konserwacji, awarii sprzętu albo ataku DDoS — każda hostowana domena staje się nieosiągalna. Odwiedzający otrzymują błędy DNS, poczta przestaje docierać, a usługi przekraczają limit czasu.

Wtórny serwer DNS przechowuje zsynchronizowaną kopię wszystkich stref przez AXFR (autorytatywny transfer strefy). Gdy serwer podstawowy jest niedostępny, serwer wtórny nadal odpowiada na zapytania DNS o domeny. Witryny, poczta i usługi pozostają dostępne.

Większość rejestratorów domen wymaga co najmniej dwóch serwerów nazw, a RFC 2182 zaleca trzy dla środowisk produkcyjnych. Dodanie wtórnego DNS to nie tylko dobra praktyka — to warunek konieczny dla niezawodności w środowisku produkcyjnym.

Nie masz jeszcze wtórnego serwera nazw? SecondDNS udostępnia go w bezpłatnym 3-miesięcznym okresie próbnym, bez karty — zacznij tutaj, a potem wykonaj kroki poniżej.

Wtórny DNS a klastrowanie DNS dla cPanel

cPanel ma wbudowaną funkcję klastra DNS (WHM > Clusters > DNS Cluster), która synchronizuje strefy między własnymi serwerami WHM. Jest przydatna, ale to nie to samo, co niezależny wtórny DNS:

- Klaster DNS przechowuje kopie na serwerach, którymi sam zarządzasz, często w tej samej sieci lub centrum danych. Jeśli ta infrastruktura ulegnie awarii, wszystkie węzły mogą paść jednocześnie. - Zewnętrzny serwer wtórny, taki jak SecondDNS, działa na osobnej infrastrukturze z własną siecią i zasięgiem anycast. Gdy serwer cPanel — lub całe jego centrum danych — jest niedostępny, serwer wtórny nadal odpowiada.

Możesz korzystać z obu rozwiązań: klastra DNS dla własnej redundancji oraz SecondDNS jako zewnętrznego autorytatywnego serwera wtórnego, na który przełączają się rejestratorzy i resolwery. Ten przewodnik konfiguruje zewnętrzny serwer wtórny przez AXFR.

Jak działa integracja wtórnego DNS

Integracja SecondDNS dla cPanel wykorzystuje system Standardized Hooks w cPanel — ten sam mechanizm, którego cPanel używa wewnętrznie do obsługi zdarzeń wtyczek:

1. Gdy zostaje utworzone konto cPanel — program obsługi zdarzeń rejestruje strefę domeny głównej w SecondDNS przez API 2. Gdy zostaje dodana domena addon — program obsługi zdarzeń rejestruje strefę domeny addon 3. SecondDNS pobiera pełną kopię każdej strefy z serwera przez AXFR 4. Gdy konto cPanel lub domena addon zostaje usunięte — program obsługi zdarzeń usuwa strefę z SecondDNS

Domena główna każdego konta cPanel oraz każda domena addon ma własną strefę DNS, więc każda jest rejestrowana osobno. Wszystkie zmiany w strefach rozchodzą się automatycznie dzięki mechanizmowi DNS NOTIFY. Bez kroków ręcznych, bez zadań crona, bez nieaktualnych rekordów.

Obsługa BIND i PowerDNS

cPanel obsługuje dwa backendy DNS: BIND (named) oraz PowerDNS, który jest domyślny w bieżących wersjach cPanel. Instalator automatycznie wykrywa, który z nich działa na serwerze, i odpowiednio go konfiguruje.

BIND: Instalator dodaje allow-transfer oraz also-notify do bloku options w pliku /etc/named.conf. Ponieważ cPanel przebudowuje deklaracje stref w named.conf, trwałym miejscem dla tych dyrektyw jest globalny blok options, który cPanel zachowuje między przebudowami (zobacz Krok 2).

PowerDNS: Instalator ustawia disable-axfr=no, allow-axfr-ips oraz also-notify, a także primary=yes (w PowerDNS 4.5+; starsze wersje używają master=yes). Aby cPanel ich nie naruszał, znajdują się one w pliku drop-in dołączanym z katalogu /etc/pdns/pdns.d/, a nie w głównym pdns.conf.

Tutaj allow-transfer (lub allow-axfr-ips w PowerDNS) nadaje serwerowi SecondDNS uprawnienie do pobrania strefy, natomiast also-notify każe serwerowi DNS wysłać NOTIFY, dzięki czemu serwer wtórny odświeża się natychmiast po zmianie.

Wymagania wtórnego DNS dla cPanel

Zanim zaczniesz, upewnij się, że masz:

- Aktualną wersję cPanel/WHM (v102 lub nowszą) z BIND lub PowerDNS - Dostęp root do serwera - Klucz API SecondDNS (uzyskasz go na seconddns.com/dashboard/api-key) - Adres IP serwera nazw SecondDNS (znajdziesz go w panelu w sekcji Settings > Nameservers) - Otwarty port TCP 53 dla ruchu przychodzącego z adresu IP serwera SecondDNS

Protokół transferu strefy AXFR używa portu TCP 53, a nie UDP. Wiele konfiguracji zapory otwiera tylko UDP 53 dla zwykłych zapytań DNS. Jeśli TCP 53 jest zablokowany, transfery stref będą zawodzić po cichu, mimo że zwykłe rozwiązywanie nazw DNS działa.

Otwórz port TCP 53 dla transferów stref DNS

Przed uruchomieniem instalatora otwórz port TCP 53 dla serwera SecondDNS. Znajdź adres IP serwera nazw w panelu w sekcji Settings > Nameservers, a następnie zastąp SECONDARY_IP w poniższych poleceniach.

Jeśli zarządzasz zaporą za pomocą firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="SECONDARY_IP" port port="53" protocol="tcp" accept'
firewall-cmd --reload

Lub za pomocą iptables:

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

Jeśli serwer korzysta z zapory hosta zarządzanej w WHM, dodaj regułę przychodzącą zezwalającą na ruch na porcie TCP 53 z adresu SECONDARY_IP.

Aby sprawdzić, czy port TCP 53 jest osiągalny z zewnątrz:

nmap -p 53 -sT YOUR_SERVER_IP

Zainstaluj wtórny DNS na cPanel

Uruchom poniższe polecenie jako root:

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

Instalator: - Zweryfikuje klucz API względem API SecondDNS - Wykryje adres IP serwera (IPv4 oraz IPv6) - Zapyta, którego adresu IP użyć, jeśli dostępne są oba protokoły - Automatycznie wykryje backend DNS (BIND lub PowerDNS) i poprosi o potwierdzenie - Skonfiguruje AXFR dla wykrytego backendu - Doda serwer nazw SecondDNS do wszystkich szablonów stref w /var/cpanel/zonetemplates/, dzięki czemu każda nowa strefa automatycznie go uwzględnia - Zarejestruje 4 programy obsługi zdarzeń WHM przez manage_hooks - Zaproponuje synchronizację wszystkich istniejących kont cPanel

Zastąp YOUR_API_KEY kluczem z panelu SecondDNS.

Uwaga: ta integracja jest obecnie w fazie Beta. Przetestuj ją w środowisku staging, zanim wdrożysz ją na produkcję.

Zweryfikuj konfigurację transferu strefy

PowerDNS: Instalator dodaje dyrektywy AXFR jako plik drop-in dołączany z katalogu /etc/pdns/pdns.d/, więc cPanel nie nadpisuje ich podczas przebudowy. Zweryfikuj je:

grep -rE 'primary|master|disable-axfr|allow-axfr-ips|also-notify' /etc/pdns/pdns.conf /etc/pdns/pdns.d/

Po każdej zmianie zrestartuj PowerDNS:

systemctl restart pdns

BIND: cPanel przebudowuje deklaracje stref w pliku /etc/named.conf, ale zachowuje globalny blok options. Trwałym miejscem dla dyrektyw AXFR jest więc wnętrze options { ... }. Potwierdź, że tam się znajdują (zastąp SECONDARY_IP adresem IP serwera nazw z panelu):

allow-transfer { SECONDARY_IP; };
also-notify { SECONDARY_IP; };

Instalator dodaje je do bloku options automatycznie. Po edycji named.conf zastosuj zmianę poleceniem:

rndc reconfig

Jeśli transfery działają na początku, a przestają po przebudowie cPanel, dyrektywy zostały umieszczone w klauzuli zone zamiast w bloku options — przenieś je do options { }, aby przetrwały przebudowę.

Zsynchronizuj istniejące domeny z wtórnym DNS

Instalator proponuje synchronizację wszystkich istniejących kont cPanel podczas instalacji. Jeśli pominąłeś ten krok, uruchom synchronizację później:

seconddns sync

Polecenie porównuje lokalne strefy z SecondDNS i dodaje brakujące. Polecenie jest idempotentne — można je bezpiecznie uruchamiać wielokrotnie. Aby sprawdzić jedną strefę lub wyświetlić wszystko na serwerze wtórnym:

seconddns status example.com
seconddns list

Zmiana szablonu strefy (dodanie wtórnego rekordu NS) dotyczy wyłącznie nowych stref utworzonych po instalacji. W przypadku istniejących domen dodaj rekord NS ręcznie przez WHM > DNS Functions > Edit DNS Zone albo pozwól, by synchronizacja zarejestrowała strefy na serwerze wtórnym.

Zweryfikuj konfigurację wtórnego DNS w cPanel

Utwórz konto testowe w WHM i obserwuj log programu obsługi zdarzeń:

tail -f /var/log/seconddns.log

Powinieneś zobaczyć:

Zone created: testdomain.com (cpanel hook)
[+] Zone testdomain.com added to SecondDNS

Następnie odpytaj oba serwery nazw. Zastąp SECONDARY_IP adresem IP serwera nazw z panelu:

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

Oba powinny zwrócić ten sam numer seryjny SOA w formacie YYYYMMDDNN. Jeśli serwer wtórny pokazuje niższy numer seryjny lub zwraca SERVFAIL, sprawdź dostęp do portu TCP 53 oraz log programu obsługi zdarzeń.

Obsługiwane zdarzenia DNS w cPanel

Integracja rejestruje programy obsługi (hooki) dla tych zdarzeń cPanel:

- Utworzenie konta (strefa domeny głównej konta) - Usunięcie konta - Utworzenie domeny addon - Usunięcie domeny addon

Domena główna każdego konta cPanel oraz każda domena addon ma własną strefę DNS. Subdomeny oraz domeny parkowane znajdują się jako rekordy wewnątrz strefy domeny nadrzędnej, więc rozchodzą się do serwera wtórnego razem z transferem strefy nadrzędnej — nie są rejestrowane osobno.

Rozwiązywanie problemów z wtórnym DNS w cPanel

Strefa nie pojawia się na serwerze wtórnym Sprawdź log w pliku /var/log/seconddns.log. Zweryfikuj, czy programy obsługi zdarzeń są zarejestrowane:

/usr/local/cpanel/bin/manage_hooks list

Powinieneś zobaczyć 4 programy obsługi zdarzeń SecondDNS (Accounts::Create, Accounts::Remove, AddonDomain::addaddon, AddonDomain::deladdondomain). Jeśli ich brakuje, uruchom instalator ponownie.

Odmowa AXFR (BIND) Upewnij się, że allow-transfer znajduje się wewnątrz bloku options w pliku /etc/named.conf, a nie w pojedynczej klauzuli zone. To blok options przetrwa przebudowę cPanel. Zastosuj zmiany poleceniem rndc reconfig.

Odmowa AXFR (PowerDNS) Sprawdź allow-axfr-ips w pliku /etc/pdns/pdns.conf i zrestartuj PowerDNS:

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

Przekroczenie limitu czasu połączenia Zweryfikuj, czy port TCP 53 jest otwarty między Twoim serwerem a SecondDNS. AXFR używa TCP, a nie UDP. Najczęstszą przyczyną nieudanych transferów jest zablokowany TCP 53 na zaporze, podczas gdy UDP 53 jest otwarty.

Przetestuj program obsługi zdarzeń ręcznie

echo '{"domain":"example.com"}' | bash /usr/local/bin/seconddns-cpanel-domain_create.sh

Odinstalowanie

Aby usunąć integrację:

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

Usuwa to programy obsługi zdarzeń WHM, skrypty oraz plik konfiguracyjny. Usuwa również wpis NS SecondDNS z szablonów stref. Strefy na wtórnym serwerze DNS nie są usuwane automatycznie — usuń je przez panel SecondDNS albo uruchom:

seconddns remove-all

przed odinstalowaniem, jeśli chcesz je wyczyścić z serwera wtórnego.

Uwaga: dyrektywy allow-transfer / also-notify w bloku options pliku named.conf (BIND) lub w pliku drop-in w /etc/pdns/pdns.d/ (PowerDNS) z Kroku 2 nie są usuwane przez deinstalator. Usuń je ręcznie, jeśli nie są Ci już potrzebne.