Domena na własnych serwerach DNS

Osoby posiadające własną domenę internetową konfigurują ją z reguły w podstawowym zakresie, aby wskazywała na konkretny adres URL lub adres IP serwera, na którym umieszczona jest strona.

Źródłem do wydobycia drzemiących możliwości z wykorzystania domeny są serwery nazw DNS. Przekierowując domenę na własne serwery DNS, otrzymujemy pełną swobodę co do jej konfiguracji, możliwości przypisywania aliasów, przekierowywania części z nich na inne adresy sieciowe itp. Możliwości jest sporo, ale najpierw trzeba wiedzieć od czego zacząć.

Czym jest DNS, można poczytać w Wikipedii.

Aby domena mogła być poprawnie skonfigurowana i obsługiwana przez zewnętrzne serwery nazw, potrzebujemy postawić co najmniej ich parzystą ilość.

Pierwszy serwer, stanowi tzw. Primary, czyli Główny serwer nazw, gdzie wprowadzamy pożądane wartości, które następnie są przesyłane są do serwerów Podrzędnych.

Serwery podrzędne, czyli Secondary i dalsze, to każde kolejne, które pobierają wartości wpisów z serwera podstawowego i dalej komunikują się ze światowymi serwerami nazw. Serwery te, stanowią jednocześnie pewnego rodzaju kopię zapasową wpisów, na wypadek, gdyby podstawowy serwer nazw uległ awarii lub był niedostępny w sieci. Wówczas, gdy podstawowy serwer nie działa, domena która jest przez niego obsługiwana nadal funkcjonuje poprawnie, w oparciu o zastępcze serwery.

Postawienie serwerów DNS może być bardziej lub mnie złożone. Można postawić do w oparciu o własny lub użyczony serwer w oparciu czy to o Windowsa czy inny system tj. Linux (np. Debian i pakiet BIND). Jednakże, nie każdy ma takie rozwiązanie do dyspozycji, w związku z tym należało by posłużyć się innymi rozwiązaniami.

Poniżej opiszę pokrótce konfigurację domeny w BIND, jednakże skupię się głównie na rozwiązaniu nieco bardziej prostszym i co ważniejsze, darmowym.

Bind

Bind jest serwerem nazw na platformę tj. Linux. Dzięki niemu, można bez problemu uruchomić serwer nazw.

Posiadając uruchomiony serwer Bind wraz z możliwością komunikacji z internetem na porcie 53, pozostaje nam ustawienie w nim odpowiednich wpisów. Wpisy dotyczące domeny i wszystkich sub-domen ujęte są w tzw. strefie. Strefę dla domeny określamy w odrębnym pliku konfiguracyjnym. Dodatkowo, odniesienie do strefy, wraz informacją techniczną określamy w konfiguracji serwera Bind, z reguły w pliku named.conf.local.

Ale zacznijmy od początku.

Zainstalowany serwer BIND w systemie Debian za pomocą repozytoriów dostarczany jest w postaci skonfigurowanej i gotowej do działania. Jeżeli tak nie jest, to z reguły należy zmodyfikować odpowiednio plik named.conf.options umieszczony w katalogu /etc/bind/

Przedstawiając poniższą konfigurację, założyłem, że konfigurujemy BIND jako Primary DNS.

Przykładowa zawartość pliku named.conf.options

options { 
	directory "/var/cache/bind";
	listen-on { any; }; 
	listen-on-v6 { any; }; 
	auth-nxdomain yes; 
	query-source address \* port 53; 
	transfer-source \* port 53; 
	notify-source \* port 53; 
	version "Microsoft DNS Vista Server v6.5 (WinVista)";
	forwarders { 194.204.159.1; 194.204.152.34; }; 
	};

Krótkie wyjaśnienie powyższych zapisów:

directory "/var/cache/bind";

Powyższy wpis określa katalog roboczy serwera BIND, w którym to zapisywane są tymczasowe pliki, aktualnie przez niego używane w trakcie pracy.

listen-on { any; }; listen-on-v6 { any; };

Listen-on, dłuży do nasłuchiwania żądań kierowanych do serwera. Tutaj wprowadzamy wartości IP interfejsów sieciowych, na których ma nasłuchiwać, odpowiednio dla IPv4 i IPv6. W powyższej konfiguracji wartość any odpowiada za dowolny adres interfejsu.

auth-nxdomain yes;

Określa, czy odpowiedzi serwera uznane za negatywne mają mieć parametr autorytatywny czy też nie.

query-source address \* port 53;
transfer-source \* port 53;
notify-source \* port 53;

Te wpisy odpowiadają za porty, na których nasłuchiwać będzie żądań serwer BIND.

version "Microsoft DNS Vista Server v6.5 (WinVista)";

Ten wpis jest swojego rodzaju zmyłką, a służy do przedstawiania się na prośbę identyfikacji z zewnątrz (Internetu). Mając na uwagę próby włamań, które będą dobierane w zależności od odpowiedzi version lepiej jest wpisać coś, co utrudni możliwość łatwej identyfikacji.

forwarders { 194.204.159.1; 194.204.152.34; };

Tutaj wpisujemy serwery, do których kierowane będą zapytania, głównie z naszej sieci lokalnej odnośnie nazw. Mimo tego, wszystko będzie przechodziło przez BIND i przy braku odpowiedniego wpisu, kierowane do forwarderów.

Jeżeli mamy to już ustawione, musimy ustawić pliki stref, w których to będą zapisane wartości dla naszej domeny.

Pliki stref ustawiamy w named.conf.local.

I tak dla przykładu plik strefy dla domeny przykladowa-domena.pl:

zone "przykladowa-domena.pl" {
	type master;
	file "/etc/bind/strefa.przykladowa-domena-pl";
	allow-transfer { slaves; };
	};

Gdzie:

zone "przykladowa-domena.pl" {

Odpowiada za nazwę domeny, jaką konfigurujemy.

type master;

Określamy czy serwer ma być master czy slave (tutaj Primary DNS i master).

file "/etc/bind/strefa.przykladowa-domena-pl";

Określenie pliku, w którym zapisane będą wartości dla domeny.

allow-transfer { slaves; }; 

Dopuszczenie wymiany zawartości pliku strefy dla konkretnych serwerów DNS - zapasowych typu Slave.

W moim przypadku, jako Secondary DNS korzystam z usługi Xname, stąd dalej w pliku named.conf.local dopisuję odpowiednią definicję dla wartości slaves.

Xname posiada trzy główne serwery nazw:

ns0.xname.org, adres IP 195.234.42.1
ns1.xname.org, adres IP 87.98.164.164
ns2.xname.org, adres IP 88.191.64.64

I dla nich dopisujemy:

acl slaves {
	195.234.42.0/24;
	193.218.105.144/28;
	87.98.164.164;
	88.191.64.64;
	92.243.14.172;
};

Dla usługi opartej o FreeDNS, serwery nazw są następujące:

fns1.42.pl, adres IP 79.98.145.35
fns2.42.pl, adres IP 195.80.237.194

I dla nich dopisujemy:

acl slaves {
	79.98.145.35;
	195.80.237.194;
};

Warto dodać zezwolenia dla Xname i FreeDNS, oraz zastosować jako Secondary DNS wpisy na obu portalach jednocześnie. Dalej przechodzimy do konfiguracji pliku strefy konkretnej domeny. Odnosząc się do wcześniejszego przykładu, oto zawartość przykładowa pliku strefa.przykladowa-domena-pl.

; przykladowa-domena.pl
$TTL 3600
@       IN      SOA     ns1.server.pl. root.server.pl. (
2008112301  ; Serial
86400       ; Refresh
3600        ; Retry
3600000     ; Expire
10800)      ; Negative Cache TTL
;
IN      NS              ns1.server.pl.
IN      NS              ns0.xname.org.
IN      NS              ns1.xname.org.
;
@               IN      A               195.000..10 
www             IN      CNAME           @

Powyższy plik składa się z kilku zmiennych, a domeny - co ważne! - kończą się kropką "." I tak:

$TTL 3600

Wartość określa czas w sekundach, przez jaki poszczególne wartości wpisów są buforowane.

@       IN      SOA     ns1.server.pl. root.server.pl. (

Określa nasz serwer, który konfigurujemy jako Primary DNS pod nazwą ns1.server.pl.

Wartość Serial określa indywidualny numer, który należy zmienić po każdej aktualizacji pliku na wyższy. Z reguły składa się on z RRRRMMDDNN.

R - rok (np. 2008) M - miesiąc (11 - listopad) D - dzień (23) N - numer zmiany w danym dniu w pliku.

Refresh odpowiada za częstotliwość odświeżania wpisów w zapasowych serwerach nazw. Po tym czasie następuje ponowne sprawdzenie czy nie zaszły zmiany w strefach, i jeżeli zaszły, następuje ich odświeżenie i odpowiednie rozesłanie.

Retry określa częstotliwość ponownego zapytania o zawartość pliku stref, jeżeli nie można było tego zrobić w odpowiednim czasie, określonym zmienną Refresh.

Expire to czas wygaśnięcia wpisów w DNS, jeżeli nie udało się pobrać nowych danych. Po tym czasie usuwane są stare wpisy w serwerach nazw.

Negative Cache TTL odpowiada za kontrolowanie czasu buforowania przez inne serwery odpowiedzi, mówiącej, że dana domena nie istnieje.

IN      NS              ns1.server.pl. 
IN      NS              ns0.xname.org. 
IN      NS              ns1.xname.org.

IN NS odpowiedzialny jest za określenie nazwy serwera DNS w domenie. Dalsze wpisy określają serwery typu Secondary.

@               IN      A               195.000..10 
www             IN      CNAME           @

Powyższy wpis pokarzę na przykładzie:

Jeżeli ktoś wprowadzi w przeglądarce domenę przykladowa-domena.pl to odnosić się będzie ona do adresu/serwera IP 195.000..10 na którym to może znajdować się strona WWW.

Natomiast drugi wpis odnosi się do aliasu www, czyli, jak ktoś wpisze www.przykladowa-domena.pl zostanie odniesiony do tej samej strony/adresu/serwera.

Należy pamiętać, że konfigurację aliasów należy dokonać również po stronie serwera, np. Apache, gdyż inaczej, wszystkie będą odnosiły się do adresu IP wskazującego na jedną lokalizację.

Dalej pozostaje nam konfiguracja serwerów zapasowych. O tym piszę dalej, na przykładzie Xname oraz polski FreeDNS oparty na skrypcie Xname.

Jeżeli jednak dysponujemy innym serwerem BIND, możemy wykorzystać go jako zapasowy - secondary. Wówczas konfiguracja jest podobna, z tym że, w named.conf.local podajemy np.:

zone "przykladowa-domena.pl" IN {
type slave;
masters { 213.162.0.23; };
file "/etc/bind/strefa.secondary-przykladowa-domena-pl";
};

Tutaj, master określa adres IP serwera BIND pracującego jako Primary DNS.

Dalej należy utworzyć plik strefa.secondary-przykladowa-domena-pl i nadać mu odpowiednie prawa.

touch /etc/bind/strefa.secondary-przykladowa-domena-pl
chown bind /etc/bind/strefa.secondary-przykladowa-domena-pl 
chmod 644 /etc/bind/strefa.secondary-przykladowa-domena-pl

Tyle, jeżeli chodzi o BIND - wystarczy jego przeładowanie.

Przejdźmy dalej do Xname i Free DNS.

Xname i FreeDNS

Aby skorzystać z usługi darmowych serwerów DNS trzeba się poważnie zastanowić co wybrać. W tym przypadku nie możemy sobie pozwolić na takie, które często siadają lub mają inne problemy. Mając to na uwadze, mój wybór padł na Xname.org jako dość stabilny i darmowy serwer DNS - FreeDNS::42.

Konfiguracja Xname i FreeDNS jest identyczna, więc odwołam się jedynie do jednego serwisu. Zaawansowane opcje postaram się przedstawić w innych artykułach.

Uwaga na wstępie do zawartości stref! Jeżeli chodzi o BINDa, to aby ograniczyć sobie konieczności przepisywania naszej podstawowej domeny (np.: wieckiewicz.org.jpg) stosuje się symboliczną “małpę” (@). Niestety, w przypadku Xname i FreeDNS, takiego udogodnienia nie możemy zastosować, gdyż powoduje to wystąpienie błędu. Pozostaje nam wprowadzanie całej nazwy domeny z “kropką” na końcu. Znajduje to zastosowanie tylko dla rekordu A i PTR.

Na początku musimy sobie założyć konto na stronie xname.org korzystając z odnośnika po lewej stronie create a new user (utwórz nowego użytkownika).

Mając już konto i będąc zalogowanym wybieramy Create zone (Utwórz strefę).

Jeżeli chcemy utworzyć Secondary DNS, zone wpisujemy naszą domenę. Zaznaczamy typ jako secondary (zapasowe) i klikamy przycisk Create (Utwórz).

Tak mamy utworzoną naszą strefę na zapasowym serwerze DNS.

W konfiguracji serwera BIND należy pamiętać, aby wpisać odpowiednie odniesienie do serwerów DNS w wartości acl slaves, o którym pisałem wcześniej.

Aby masz serwer komunikował się z Secondary DNS, wchodzimy w View zones (Lista stref) i wybieramy naszą domenę.

Dalej w:

primary name server IP(s) (use ';' as separator)

wpisujemy adres IP naszego serwera Primary DNS - nie adres ns1.server.pl tylko adres IP!

Wybieramy Modify (Modyfikuj) i czekamy aż serwery się skomunikują i pobiorą odpowiednie dane. Przy pierwszym pobraniu otrzymamy stosowną wiadomość na maila podanego podczas rejestracji na stronie.

Tyle wystarczy.

Innym rozwiązaniem, jeżeli nie mamy własnego serwera, możemy całkowicie wykorzystać Xname/FreeDNS jako serwer Primary DNS (podstawowe) i Secondary DNS (zapasowe). Dla osób mniej zaawansowanych, lub skupiających się na ustawieniu Primary DNS, polecam wybranie FreeDNS.

W takim przypadku, wybieramy Create zone (Utwórz strefę).

W zone (Nazwa strefy) wpisujemy nazwę naszej domeny, wybieramy typ primary (podstawowy) i klikamy Create (Utwórz).

Możemy również, podczas tworzenia strefy, pobrać odpowiednie wpisy z naszego serwera DNS aby, w dalszym etapie oszczędzić dobie przepisywania konfiguracji. Wówczas w polu Import zone from following authoritative server (Importuj strefy z autorytatywnego serwera) wpisujemy adres IP naszego serwera DNS.

Przechodzimy do View zones (Lista stref) i klikamy na naszą domenę aby odpowiednio skonfigurować strefę, tak jak to robiliśmy w przypadku serwera BIND.

Większość wartości jest domyślnie ustawiona, jednakże niektóre z nich musimy wprowadzić.

Główne - podstawowe wartości do wprowadzenia znajdują się w Address (A) records i tam dopisujemy:

Name: przykladowa-domena.pl. <— pamiętajmy o kropce na końcu! IP: XXX.xxx.XXX.xxx /nasz IP serwera

W przypadku dodawania aliasu do domeny, robimy to w Canonical Name (CNAME) records i wygląda to tak:

Alias: www Name: przykladowa-domena.pl. IP: XXX.xxx.XXX.xxx /nasz IP serwera

Można też zrobić to w Address (A) records i wygląda następująco:

Alias: www IP: XXX.xxx.XXX.xxx /nasz IP serwera

Powyższe wpisy odniosą się do www.przykladowa-domena.pl na podanym IP.

Na koniec klikamy w Generate zone configuration (Utwórz konfigurację strefy)

Jak wejdziemy ponownie do View zones (Lista stref) zobaczymy, że mamy skonfigurowaną naszą domenę dla dwóch serwerów nazw xname.org, z czego pierwszy odpowiada za Primary DNS, a drugi za Secondary DNS.

Jeżeli korzystamy tylko z serwerów DNS w oparciu o FreeDNS/Xname, dla naszej domeny przypisane będą dwa serwery DNS. Warto na jednym (np. FreeDNS) utworzyć strefę podstawową (Primary) dla naszej domeny, a na innym (np. Xname) dla tej samej domeny strefę zapasową (Secondary). Czynność ta umożliwi szybsze rozgłoszenie naszej domeny oraz umożliwi ciągłe jej działanie, w przypadku gdy np. serwery FreeDNS będą miały problemy. Wówczas, gdy serwery FreeDNS będą niedostępne, zapytania do domeny nie zostaną bez odpowiedzi i w najgorszym wypadku nie zostaną usunięte ze światowych serwerów DNS (wpisy), tylko przejmą ich funkcjonalność serwery DNS Xname do czasu powrotu do pełnej funkcjonalności.

Aby tego dokonać, należy wykonać jeszcze jedną czynność.

Wybierając naszą domenę z listy domen (na Primary DNS), przechodzimy do jej konfiguracji. Na samym dole strony znajduje się sekcja Komputery, którym wolno transferować całe strefy. W tym miejscu wpisujemy adresy IP serwerów DNS, z którymi będą wymieniane informacje. Nie będę się rozpisywał, lecz zachęcam do cofnięcia się o kilka stron w niniejszym Artykule i przeczytanie części o acl slaves dla BINDa, gdyż to jest to samo.

Wracając do sedna sprawy, w tym miejscu wpisujemy adresy IP.

Jeżeli jako Primary DNS używamy FreeDNS a jako Secondary będziemy Xname, wówczas wpisujemy następujące wartości:

195.234.42.1; 87.98.164.164; 88.191.64.64

Teraz, tworzymy strefę Secondary na Xname.

Jako serwery, które służą jako Primary DNS (primary name server IP(s)), w konfiguracji strefy na Xname wpisujemy:

79.98.145.34; 195.80.237.194

Co nam jeszcze zostało do zrobienia?

Otóż należy przekierować naszą domenę na nasze serwery DNS. Dokonać tego możemy u usługodawcy, u którego wykupiliśmy domenę. W przypadku nazwa.pl po zalogowaniu się do panelu administracyjnego, dokonujemy tego w opcjach domeny.

To by było na tyle. W razie pytań proszę pisać i komentować.

Jak tylko czas pozwoli, postaram się dodać kilka wpisów odnośnie możliwości wykorzystania domeny na własnych serwerach DNS do konfiguracji poczty Gmail we własnej domenie itp.

Pozdrawiam.

Dołącz do dyskusji