Przewodniki

Jak dodać wtórny DNS do panelu hostingowego DirectAdmin

Dlaczego Twój serwer DirectAdmin potrzebuje wtórnego DNS

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

DirectAdmin używa BIND (named) jako serwera DNS. Domyślnie wszystkie domeny polegają na jednym serwerze nazw. Jeśli ten serwer zawiedzie — podczas konserwacji, awarii sprzętu lub ataku DDoS — każda domena staje się nieosiągalna. Odwiedzający otrzymują błędy rozwiązywania nazw DNS, poczta przestaje być dostarczana, a uslugi przekraczają limity czasu oczekiwania.

Wtórny serwer DNS utrzymuje zsynchronizowana kopie wszystkich stref przez AXFR (autorytatywny transfer strefy). Gdy serwer główny jest niedostępny, wtórny nadal odpowiada na zapytania DNS dla Twoich domen. Twoje strony internetowe, poczta i uslugi działają dalej.

Większość rejestratorów 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 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.

Jak działa DNS w DirectAdmin

DirectAdmin zapisuje strefy dla BIND (named); innego backendu DNS nie ma.

BIND (named): Strefy są przechowywane jako pliki stref tekstowych w /etc/named/ lub /var/named/. Transfery stref konfiguruje się w named.conf: allow-transfer nadaje serwerowi wtórnemu uprawnienie do pobrania strefy, a also-notify sprawia, że BIND wysyła NOTIFY, aby serwer wtórny od razu się zaktualizował. To tradycyjne podejście opisywane w większości poradników.

W obu przypadkach DirectAdmin zarządza DNS przez skrypty hook. Gdy tworzysz lub usuwasz domenę, DirectAdmin wywołuje skrypty w /usr/local/directadmin/scripts/custom/. Integracja SecondDNS instaluje własne skrypty Hook w tej lokalizacji, które automatycznie rejestrują i wyrejestrowują strefy — nie musisz zarządzać strefami ręcznie.

Jak działa integracja wtórnego DNS

Integracja SecondDNS dla DirectAdmin używa skryptów Hook, które DirectAdmin wywołuje automatycznie w reakcji na zdarzenia DNS:

1. Gdy tworzysz domenę lub domain pointer — Hook rejestruje strefę w SecondDNS przez API 2. SecondDNS pobiera pełna kopie strefy z Twojego serwera przez AXFR 3. Gdy usuwasz domenę — hook usuwa ja z SecondDNS

Wszystkie zmiany stref rozchodzą się automatycznie dzięki mechanizmowi NOTIFY w BIND. Żadnych ręcznych kroków, zadań crona ani przestarzałych rekordów.

Wymagania wtórnego DNS dla DirectAdmin

Zanim zaczniesz, upewnij się, że masz:

- DirectAdmin 1.6 lub nowszy z BIND/named - Dostęp root (sudo) do serwera - Klucz API SecondDNS (na seconddns.com/dashboard/api-key) - IP Twojego serwera nazw SecondDNS (w panelu pod Settings > Nameservers) - Port TCP 53 otwarty na połączenia przychodzące z IP serwera SecondDNS

Protokół transferu stref AXFR używa portu TCP 53, a nie UDP. Wiele konfiguracji zapory sieciowej otwiera tylko UDP 53 dla zwyklych zapytań DNS. Jeśli TCP 53 jest zablokowany, transfery stref będą zawodzić bez ostrzeżenia, nawet jeśli normalne 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ź IP w panelu pod Settings > Nameservers i zastąp SECONDARY_IP w poleceniach.

Jeśli używasz UFW:

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

Jeśli używasz iptables:

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

Jeśli używasz nftables:

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

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

nmap -p 53 -sT YOUR_SERVER_IP

Instalator automatycznie konfiguruje allow-transfer na Twój IP SecondDNS po podaniu klucza API.

Zainstaluj wtórny DNS na DirectAdmin

Uruchom jako root:

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

Instalator: - Weryfikuje klucz API przez API SecondDNS - Wykrywa IP serwera (IPv4 i IPv6) - Pyta, którego protokołu użyć, jeśli oba są dostępne - Znajduje named.conf i tworzy kopię przed edycją - Konfiguruje transfery stref automatycznie (allow-transfer nadaje uprawnienie, also-notify włącza NOTIFY dla BIND) - Instaluje skrypty hook w /usr/local/directadmin/scripts/custom/ - Proponuje synchronizację istniejących domen

Zastąp YOUR_API_KEY kluczem z Twojego panelu SecondDNS. Instalator zwraca niezerowy kod wyjścia, jeśli któryś z kroków się nie powiedzie.

Skonfiguruj serwery nazw w DirectAdmin

Po instalacji zarejestruj wtórny serwer nazw w DirectAdmin.

Opcja 1: Przez panel DirectAdmin (zalecane) Zaloguj się jako Admin → Server Manager → Name Servers. Ustaw NS2 na hostname Twojego serwera nazw SecondDNS (w panelu pod Settings > Nameservers). Z dodatkiem Personalized NS użyj swojego brandowanego hostname (np. ns2.yourdomain.com). Ustawienie jest automatycznie stosowane do wszystkich nowych domen.

Opcja 2: Edycja szablonu DNS bezposrednio

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

Jeśli katalog nie istnieje, utwórz go:

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

Dodaj rekord NS wskazujący na hostname Twojego serwera nazw SecondDNS. Dla istniejących domen skorzystaj z menedżera DNS w DirectAdmin lub z funkcji masowej aktualizacji DNS.

Zsynchronizuj istniejące domeny z wtórnym DNS

Jeśli miałeś domeny w DirectAdmin przed instalacją, zsynchronizuj je z serwerem wtórnym:

seconddns sync

Polecenie porównuje Twoje lokalne strefy z SecondDNS i dodaje brakujące. Polecenie jest idempotentne — można je uruchamiać wielokrotnie bez tworzenia duplikatów.

Aby sprawdzić konkretną strefę:

seconddns status example.com

Aby wylistować wszystkie strefy na serwerze wtórnym:

seconddns list

Usuwanie jest osobno: `seconddns sync` tylko dodaje. Aby usunąć także strefy, których panel już nie obsługuje, uruchom `seconddns sync --prune` — polecenie odmówi, gdy miałoby usunąć ponad połowę stref tego serwera, bo tak właśnie wygląda panel, którego nie udało się odczytać.

Zweryfikuj konfigurację wtórnego DNS w DirectAdmin

Utwórz testową domenę w DirectAdmin i obserwuj log skryptów Hook:

tail -f /var/log/seconddns.log

Powinieneś zobaczyć:

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

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

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

Oba powinny zwracać ten sam numer seryjny SOA w formacie YYYYMMDDNN. Jeśli serwer wtórny pokazuje niższy numer lub zwraca SERVFAIL, sprawdź dostęp do portu TCP 53 i log skryptów Hook.

Obsługiwane typy domen

Integracja obsługuje wszystkie typy domen DirectAdmin:

- Domeny główne (create:domain) - Strefy DNS (create:zone) - Domain pointer (create:pointer) - Zmienione nazwy domen (`domain_change_post`) — DirectAdmin nie wywołuje zdarzenia utworzenia DNS przy zmianie nazwy, więc osobny hook usuwa starą strefę i rejestruje nową

Każdy typ automatycznie uruchamia skrypt Hook przy tworzeniu lub usuwaniu przez panel albo API DirectAdmin. Hook otrzymuje nazwę domeny, nazwę użytkownika i typ wywołania (caller) od DirectAdmin i przekazuje je do SecondDNS.

Gdy SecondDNS jest niedostępny

Zmiany stref nigdy nie trafiają wprost do API. Każdy hook zapisuje operację do lokalnej kolejki, a proces w tle dostarcza ją po kolei, ponawiając próby z rosnącym opóźnieniem, dopóki SecondDNS jest niedostępny — okno serwisowe albo problem z siecią nic nie kosztuje, a nic z tego, co robią Twoi klienci w panelu, nie ginie.

Stan kolejki możesz sprawdzić w każdej chwili:

seconddns status
pending=0 failed=0 oldest_age_seconds=0 last_error=

Niezerowe `pending` razem z `last_error` znaczy, że dostarczenie czeka, a nie że coś przepadło. `failed` to operacje odrzucone przez SecondDNS; `seconddns-queue retry --all` wstawia je z powrotem do kolejki.

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

Strefa nie pojawia się na serwerze wtórnym Sprawdź log hooków /var/log/seconddns.log. Upewnij się że hooki są zainstalowane i mają ustawiony bit wykonywalności:

ls -la /usr/local/directadmin/scripts/custom/{dns_create_post,dns_delete_post,domain_change_post}.sh

Jeśli brakuje plików, uruchom instalator ponownie. Jeśli istnieją ale nie mają ustawionego bitu wykonywalności:

chmod +x /usr/local/directadmin/scripts/custom/{dns_create_post,dns_delete_post,domain_change_post}.sh

AXFR odrzucony (BIND) Sprawdź named.conf dla allow-transfer z IP SecondDNS:

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

Zmiana allow-transfer to zmiana konfiguracji; wprowadź ja poleceniem reconfig (rndc reload tylko ponownie wczytuje dane stref):

rndc reconfig

Port TCP 53 zablokowany Uruchom test nmap z sekcji zapory. Użytkownicy CSF: sprawdź, czy IP SecondDNS jest w /etc/csf/csf.allow.

Testowanie hooka ręcznie:

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

Hook nie jest wyzwalany Sprawdź, czy system skryptów Hook w DirectAdmin jest włączony. W starszych wersjach może być konieczne ręczne włączenie katalogu skryptów niestandardowych.

Deinstalacja

Aby usunąć integrację:

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

Usuwa skrypty Hook i plik konfiguracyjny. Strefy na serwerze wtórnym nie są usuwane automatycznie — usuń je przez panel SecondDNS lub uruchom:

seconddns remove-all

przed deinstalacją, jeśli chcesz wyczyścić serwer wtórny.

Polecenie pokazuje, co usunie, i prosi o wpisanie adresu IP mastera jako potwierdzenie; w skrypcie pomija to flaga `--yes`.