W dzisiejszym poradniku pokażę jak stworzyć własną strefę DNS dla domeny internetowej (tzw. nameserver). Wiele osób posiada strefę DNS dla swojej domeny w takich serwisach jak cloudflare ale jak z jakiś powodów chcemy aby strefa DNS była na VPS'ie to poradnik jest dla Ciebie.
Aby zrobić własną strefę DNS potrzebujemy:
- Domenę internetową
- Serwer dedykowany/VPS
- Trochę wolnego czasu
Na potrzeby poradnika zamówiłem darmową domenę z freenom.com. Aby stworzyć swój serwer nazw trzeba będzie dodać rekord glue. W freenom da się to zrobić z poziomu panelu, w przypadku niektórych rejestratorów to dopiero po kontakcie z supportem.
1. Instalacja:
Na początku trzeba zainstalować wymagany program, będzie to tylko bind9 , instalujemy bind9 poleceniem:
apt install bind9
2. Tworzenie rekordu glue:
Aby móc przekierować domenę na naszą strefę DNS to trzeba stworzyć rekord glue. W freenom wchodzimy w zakładkę Services, wybieramy My Domains i obok naszej domeny klikamy przycisk Manage domain. Następnie jest zakładka Management Tools i ją rozwijamy i wybieramy pozycję Register glue records. W polu hostname wpisujemy adres pierwszego serwera NS, np. ns1 a w polu IP Address wpisujemy adres IP naszego serwera VPS na którym będzie strefa DNS. Po zapisaniu rekordu tworzymy drugi rekord i nadajemy mu inną nazwę niż temu pierwszemu np. ns2 i wpisujemy ten sam adres IP co wyżej a następnie zapisujemy.
Mniej więcej powinno wyglądać to tak:

Potem klikamy przycisk Back i rozwijamy zakładkę Management Tools i wybieramy pozycję Nameservers, wybieramy Use custom nameserver i wpisujemy adresy które zostały zdefiniowane w rekordach glue. (Przyjmijmy że stworzyliśmy dwa rekordy glue o nazwie ns1 i ns2 czyli wpisujemy np. ns1.domena-testowa.ml i ns2.domena-testowa.ml).

3. Konfiguracja strefy DNS:
Jak stworzyliśmy rekord glue i ustawiliśmy serwery nazw to możemy zacząć tworzyć strefę DNS. Poleceniem
cd /etc/bind
przechodzimy do katalogu bind9. Teraz edytujemy plik o nazwie named.conf i dodajemy do jego strefę (ang. zone) Do pliku dodajemy następującą treść (domena-testowa.ml zastępujemy swoją domeną).
zone "domena-testowa.ml" IN { type master; file "/etc/bind/domena-testowa.ml.dns"; };
file to lokalizacja pliku gdzie będą znajdować się rekordy DNS. Można tutaj ustawić inną lokalizację.
Zapisujemy plik named.conf i zamykamy.
4. Tworzenie rekordów DNS:
Teraz tworzymy plik w którym będą rekordy DNS dla naszej domeny. Lokalizacja pliku musi być taka sama jaka została podana w punkcie powyższym w zmiennej file. W moim przypadku to będzie /etc/bind/domena-testowa.ml.dns. Więc przy pomocy edytora nano (Lub innego) tworzymy i edytujemy ten plik:
nano /etc/bind/domena-testowa.ml.dns
Do pliku dodajemy wartość $TTL oraz rekord SOA. Plik powinien wyglądać mniej więcej w taki sposób (domena-testowa.ml należy zastąpić nazwą swojej domeny).
https://pastebin.com/2efpDKNc
$TTL 3600
domena-testowa.ml. IN SOA ns1.domena-testowa.ml. ns2.domena-testowa.ml. ( 000000001 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 300) ; Negative Cache TTL ; domena-testowa.ml. IN NS ns1.domena-testowa.ml. domena-testowa.ml. IN NS ns2.domena-testowa.ml. ns1.domena-testowa.ml. IN A [Adres IP VPS] ns2.domena-testowa.ml. IN A [Adres IP VPS]
Zmienna Serial to jest numer seryjny rekordu DNS. Jeżeli wprowadzimy zmiany w strefie DNS i chcemy aby te zmiany były od razu zatwierdzone to zmieniamy wartość Serial na jakąkolwiek inną (Zawsze zmienna Serial musi mieć 10 cyfr).
Po utworzeniu rekordu SOA i NS możemy dodawać własne rekordy. Jeżeli chcemy wykonać przekierowanie do naszego serwera to dodajemy rekord A np.
domena-testowa.ml. IN A [Adres IP]
Trzeba pamiętać aby zawsze na końcu nazwy domeny dodać kropkę.
5. Restart serwera DNS: Aby zatwierdzić zmiany należy wykonać polecenie:
rndc reload
lub
service bind9 restart
Aby móc nawiązać połączenie z serwerem DNS a mamy firewalla to trzeba dodać odpowiedni rekord do zapory sieciowej poleceniem:
ufw allow bind9
Z mojej strony to wszystko, mam nadzieję że w jakiś sposób pomogłem.