Criar um Site Grátis Fantástico
Bind regarder en ligne 4K

DNS - Domain Name System

DNS jest systemem hierarchicznym. Na samym szczycie owej hierarchii stoją tzw. TLD (Top Level Domains), czyli domeny najwyższego rzędu. Zaliczają się do nich takie domeny jak .com (komercyjne). pl (krajowe). net (sieci) i inne. Są to domeny powstałe na podstawie odpowiednich postanowień, opisane w specjalnych dokumentach. Każda z wymienionych (lub też nie wymienionych) tutaj TLD's posiada swoje subdomeny, np. pld-linux.org. Z kolei każda powstała w wyniku rejestracji danej nazwy domena może mieć swoje poddomeny, np. www .pld-linux.org. W ten sposób można tworzyć bardzo zagęszczone hierarchie w obrębie danej domeny. Niniejszy rozdział dotyczy implementacji Bind określanego czasem jako named - jednego z najpopularniejszych serwerów DNS.

Każda domena (zwana również strefą) musi mieć co najmniej dwa serwery DNS, jest to wymóg registrarów, czyli instytucji oferujących możliwość rejestracji domen. Jeden z serwerów określa się jako podstawowy (również master lub primary) a drugi jako zapasowy (slave lub secondary).

Bind w PLD dziala w środowisku chroot, w katalogu /var/lib/named . musimy o tym pamiętać, przy niektórych operacjach diagnostycznych. Głównym plikiem konfiguracyjnym jest /etc/named.conf . który jest symlinkiem do /var/lib/named/etc/named.conf . Struktura katalogu /var/lib/named wygląda następująco:

Podobnie jak w normalnym Е›rodowisku, jest obecny tutaj katalog /dev . w ktГіrym znajdujД… siД™ urzД…dzenia konieczne do dziaЕ‚ania demona: /dev/null oraz /dev/urandom . Katalog /etc jak zapewne siД™ domyЕ›lasz, przechowuje pliki konfiguracyjne. U nas znajduje siД™ w nim jedynie named.conf . Kolejne katalogi: M oraz S zostaЕ‚y przeznaczone do przechowywania plikГіw stref, odpowiednio master i slave. Plik named.pid przechowuje numer procesu systemowego. Ostatni plik na liЕ›cie - root.hint zawiera wpisy z adresami tzw. root serwerГіw, czyli gЕ‚Гіwnych serwerГіw DNS. Jest on konieczny do przeszukiwania serwerГіw DNS w poszukiwaniu ЕјД…danych nazw, ktГіrych nie utrzymuje nasz serwer.

Dodawanie stref DNS polega na definiowaniu obsЕ‚ugiwanych domen w pliku /etc/named.conf . oraz tworzenia plikГіw konfiguracji stref.

Podstawowa konfiguracja

GЕ‚Гіwnym plikiem konfiguracyjnym serwera Bind jest /etc/named.conf . ZnajdujД… siД™ w nim podstawowe opcje usЕ‚ugi oraz informacje na temat obsЕ‚ugiwanych stref. PoniЕјej zamieszczono domyЕ›lne wpisy, ktГіre znajdujД… siД™ w tym pliku

Na samym początku pliku konfiguracyjnego znajduje się sekcja options . Najbardziej istotną opcją jest tutaj directory . Wskazuje ona na główny katalog przechowywania plików stref. Być może zdziwi Cię nieco parametr powyższej opcji. Jak już wcześniej wspominałem Bind w PLD posiada własne chrootowane środowisko, dlatego można taki zapis zastosować.

Zanim przejdę do omawiania pozostałych wpisów, należy się jeszcze słowo wyjaśnienia na temat konstrukcji samego pliku. Na pierwszy rzut oka poszczególne wpisy są podzielone na sekcje. Te z kolei ograniczone są klamrami. Znak ; również pełni tutaj rolę ogranicznika dla poszczególnych opcji jak i całych sekcji ujętych w klamry. Warto o tym wiedzieć ze względu na ewentualne szukanie błędów powstałych na skutek edycji tego pliku.

Poniżej mamy zdefiniowane trzy sekcje stref zaczynających się słowem kluczowym zone . W powyższym przykładzie przedstawione są wpisy określające localhosta. Są one typu master. Plik strefy w każdej z nich wskazany jest opcją file . Strefa nie musi być aktualizowana, ani synchronizowana z serwerem slave, więc dwie pozostałe opcje mają parametr none oraz any . Ostatnia strefa służy do komunikacji naszego binda z Root serwerami o których była mowa we wstępie. Bez tej strefy nie mógłby on wyszukiwać nazw w internecie. Mówiąc w przenośni byłby ślepy.

Każdorazowe odpytywanie Root Servers może się okazać mało wydajne, ze względu na duże czasy odpowiedzi. Dlatego, jeżeli chcemy przyspieszyć ten proces powinniśmy sekcję option zmodyfikować o wpis taki jak poniżej

Oczywiście nie musimy posługiwać się takimi adresami jak w przykładzie. Możemy sobie wybrać takie serwery DNS, które będą nam odpowiadały najszybciej np. serwery naszego ISP.

W PLD zaleca siД™, aby wszystkie pliki stref w zaleЕјnoЕ›ci od typu domeny byЕ‚y przechowywane w katalogach /var/lib/named/M oraz /var/lib/named/S . Tak naprawdД™ o Е›cieЕјce do tych katalogГіw decydujД… wpisy w named.conf . Struktura plikГіw stref dla obu typГіw domen jest taka sama.

PrzykЕ‚adowa konfiguracja strefy typu primary

Zaczniemy od konfiguracji /etc/named.conf . budowa tego pliku byЕ‚a wyjaЕ›niona w poprzedniej czД™Е›ci tego rozdziaЕ‚u. PoniЕјej zostaЕ‚ zamieszczony przykЕ‚adowy wpis dla strefy na serwerze podstawowym:

PoszczegГіlne opcje tej sekcji zostaЕ‚y omГіwione juЕј na poczД…tku tego rozdziaЕ‚u. Podsumujmy wiД™c dostД™pne informacje skupiajД…c siД™ na powyЕјszym przykЕ‚adzie:

zone "example.net" - nazwa strefy

type master - rodzaj serwera

file "M/example.net" - nazwa pliku z konfiguracjД… strefy

allow-transfer < 123.45.67.89; > - adres serwera, który ma możliwość transferu całej strefy, Jeżeli posiadasz więcej niż jeden taki DNS, możesz je wpisać pomiędzy klamry pamiętając o tym, aby rozdzielić poszczególne adresy IP, znakiem '; '.

notify yes - opcja ta wЕ‚Д…cza powiadamianie zapasowego serwera DNS o zmianach w naszej domenie.

Musimy teraz utworzyć plik strefy dla domeny example.net wskazany przez opcję file . Poniżej zamieszczam treść przykładowego pliku strefy:

Plik strefy można podzielić na trzy odrębne sekcje. Pierwsza określa nazwę domeny oraz okres ważności wpisów. Druga, kto tą domeną zarządza. W trzeciej znajduje się cała jej zawartość. Bardziej szczegółowy opis znajduje się w poniższym wykazie. Kilka zdań o wyrażeniach stosowanych w plikach stref. Warto o nich pamiętać. Wszystkie wpisy poprzedzone ;; będą ignorowane i traktowane jak komentarz. Kolejnym ważnym znakiem jest znak kropki. Jego znaczenie omówię poniżej w przykładzie.

Jeżeli w powyższym wpisie pominęlibyśmy końcowy znak kropki, wówczas Bind dokleiłby na końcu nazwę domeny. Wówczas z ns1.example.net zrobiłby się wpis ns1.example.net.example.net, co oczywiście nie jest pożądane. następnym znakiem specjalnym na który warto zwrócić uwagę jest @. Otóż można go potraktować jako pewnego rodzaju zmienną, która przechowuje nazwę example.net. Jednym słowem, example.net i @ to to samo.

$TTL 86400 - czas waЕјnoЕ›ci rekordГіw w domenie wyraЕјony w sekundach; 86400 s. to jedna doba

$ORIGIN example.net. - domena jakД… bД™dzie opisywaЕ‚ bieЕјД…cy plik strefy.

@ IN SOA ns1.example.net. root.example.net. - Rekord typu SOA czyli Start Of Authority. Możemy się z niego dowiedzieć, kto zarządza domeną (root@example.net), jaki jest adres serwera primary DNS. Zwróć uwagę, że w adresie root@example.net zamiast znaku @ użyta została kropka. Rekord SOA posiada swoją własną strukturę o której poniżej. Zawarta jest ona pomiędzy znakami ( ) .

2004022300 ;; serial - numer seryjny domeny. Powinien on być zwiększany wraz z każdą jej modyfikacją. W dobrym tonie jest utrzymywanie go w formacie YYYYMMDDnn czyli rok, miesiąc, dzień oraz numer modyfikacji w danym dniu.

1200 ;; refresh - To pole rekordu SOA definiuje jak często serwery slave mają sprawdzać czy dane o domenie nie zmieniły się na masterze. Według RFC 1035 wartość ta powinna się zawierać pomiędzy 1200 a 43200 (czyli od dwudziestu minut do dwunastu godzin). W praktyce najlepsza wartość zawiera się między 3600 a 7200 sekund.

1200 ;; retry - Czas po jakim secondary ma ponowić próbę kontaktu z masterem. gdy taka się nie powiedzie. Zalecana wartość pomiędzy 120 a 7200 sekund.

2419200 ;; expire - Ta wartość określa czas po jakim dane domeny mają zostać uznane za nieaktualne gdy serwer secondary nie będzie mógł się skontaktować z primary. Zalecana wartość zawiera się pomiędzy 1209600 a 2419200 sekund, czyli od dwóch do czterech tygodni.

86400 ;; TTL - Time To Live. Określa ile czasu informacja o danym rekordzie ma być ważna. Jest to okres przez jaki informacja o naszej domenie będzie przechowywana przez serwer DNS, który ją pobrał. Zalecana wartość zawiera się między 86400 a 432000 sekund, czyli przez okres od jednego do pięciu dni.

Bezpośrednio pod rekordem SOA definiujemy, które serwery DNS będą obsługiwały naszą domenę. Jeszcze raz przypominam aby właściwie zamknąć ten rekord. Bez tego nasza domena nie będzie działać. Do definiowania serwerów DNS służą wpisy typu IN NS .

Powyższy wpis mówi, że domenę example.net obsługuje serwer DNS ns1.example.net oraz ns2.example.net. Jeżeli obie nazwy dotyczą komputerów, które wcześniej nie pełniły roli serwerów DNS, powienieś dodać wpisy takie jak poniżej.

ns1 oczywiście może wskazywać na adres serwera DNS który zapewne konfigurujesz; ns2 powinien wskazywać na Twojego secondary. Zrobiliśmy to posługując się wpisami typu IN A . Jak zapewne pamiętasz, brak końcowej kropki powoduje doklejenie do wpisanej nazwy tego co znajduje się w zmiennej $ORIGIN . Możemy więc uznać to co widzisz w powyższym przykładzie za postać skróconą poniższego wpisu.

Wpisy typu IN A służą do określania, że właśnie ten adres IP ma przypisaną taką a nie inną nazwę. Oczywiście do jednego adresu IP możesz stworzyć kilka takich wpisów. Jeżeli posiadasz serwer poczty, powinieneś zrobić wpis mówiący o tym, że będzie on obsługiwał pocztę dla domeny example.net .

Dokładnie tak jak wcześniej wspomniałem, poczta, dla domeny example.net kierowana jest do serwera mail.example.net o priorytecie 10. Jest on tzw. MX'em. Rekord typu IN MX służy właśnie do definiowania w DNS serwera poczty. Priorytet przydaje się wtedy, kiedy posiadasz kilka serwerów poczty w swojej domenie. Służy on do ustalenia porządku; do którego serwera poczta ma trafić w pierwszej kolejności. Mniejszy priorytet zapewnia pierwszeństwo.

PozostaЕ‚e wpisy dotyczД… takich standardowych usЕ‚ug jak www czy ftp. Umieszczanie ich w pliku strefy nie jest obowiД…zkowe. Jednak domenД™ rejestruje siД™ zazwyczaj na potrzeby www, ftp czy poczty, dlatego zostaЕ‚y one wymienione w przykЕ‚adzie.

PowyЕјej umieszczono przykЕ‚ad rekordu typu IN CNAME . tworzy on dodatkowД… subdomenД™ dla hosta przypisanego juЕј do innej nazwy. SpecjaliЕ›ci radzД… by tego rodzaju rekordy wskazywaЕ‚y wyЕ‚Д…cznie na rekordy typu IN A .

Po zakończeniu konfiguracji musimy jeszcze uruchomić usługę.

PrzykЕ‚adowa konfiguracja strefy typu secondary

Konfiguracja serwera secondary sprowadza siД™ do dokonania poniЕјszego wpisu w pliku /etc/named.conf .

Jak widać wpis wygląda podobnie jak w przypadku serwera primary. Opcja type tym razem ma wartość slave. Musimy też wskazać serwer primary . Robimy to używając opcji masters . której wartość zawiera adres serwera primary DNS.

ObsЕ‚uga protokoЕ‚u IPv6

Podobnie jak większość usług w dystrybucji BIND posiada wsparcie dla protokołu IPv6 (IPng). Oczywiście wcześniej komputer musi być podłączony do tej sieci. W tej części rozdziału zostanie omówiona konfiguracja dla stref IN A oraz strefy odwrotnej. Narzędziem wspomagającym konfigurację będzie ipv6calc znajdujący się w pakiecie o tej samej nazwie. Jak sama nazwa wskazuje jest to kalkulator adresów IPv6.

Odpowiednikiem w IPv6 strefy IN A jest wpis IN AAAA . Każda z dotychczasowych stref stworzona do tej pory dla protokołu IPv4 może mieć swój odpowiednik w sieci IPv6. Możemy również stworzyć zupełnie nowe wpisy, które będą widoczne jedynie w tej sieci.

Umieszczenie powyższego wpisu w pliku strefy /var/lib/named/M/example.net spowoduje przypisanie nazwy moja.example.net adresowi 3ffe:1a:2b:3c::1. Aby wpis zaczął obowiązywać należy zrestartować usługę.

Konfigurację strefy odwrotnej zaczniemy od stworzenia odpowiedniego wpisu w pliku /etc/named.conf . Jak sama nazwa wskazuje będzie on przypominał lustrzane odbicie adresu w zwykłej postaci. Aby mieć pewność, że nasza strefa będzie poprawnie zapisana posłużymy się wspomnianym we wstępie narzędziem ipv6calc .

Uzyskaliśmy w ten sposób informacje, że dla sieci o adresie 3ffe:1a:2b:3c::/64. strefa odwrotna posiada postać taką jak na powyższym listingu. Wystarczy teraz to zapisać w pliku konfiguracyjnym BIND'a.

Jak widać na pierwszy rzut oka, konfiguracja niczym się praktycznie nie różni od konfiguracji strefy dla IPv4. Jako nazwę strefy podaliśmy to co nam zwrócił ipv6calc . Przyjrzyjmy się teraz jak powinien wyglądać plik dla tej strefy wskazany dyrektywą file .

Pierwszy parametr to omawiany już wcześniej okres ważności rekordów. Jak widać na listingu wynosi on jeden dzień. Drugi z nich to de facto nazwa tej strefy. Sama opcja $ORIGIN to swojego rodzaju zmienna, której wartość jest podstawiana w miejsce @ oraz doklejana do tych nazw które nie posiadają na końcu specjalnego znaku kropki.

Jak widać rekord IN SOA nie różni się niczym od tego dla domeny IPv4.

Określamy które serwery przechowują naszą domenę odwrotną. Również tutaj wszystko wygląda identycznie jak dla protokołu IPv4. Możemy teraz przystąpić do konfigurowania strefy odwrotnej.

Dlaczego tyle zer? Odpowiedź na to znajdziesz obliczając przy użyciu programu ipv6calc adres odwrotny dla 3ffe:1a:2b:3c::1. Robimy to w sposób identyczny do poprzedniego przykładu jego użycia. W wyniku obliczeń będzie on wyglądał tak: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.c.3.0.0.b.2.0.0.a.1.0.0.e.f.f.3. Jak łatwo zauważyć, po ostatnim zerze w listingu nie postawiliśmy kropki, a więc zostanie doklejona po nim zawartość $ORIGIN .

Narzędziem pomocnym w odpytywaniu serwerów DNS, jest program host . Można nim również odpytywać o nazwy skonfigurowane dla protokołu IPv6. Jak by wyglądało zapytanie o nazwę moja.example.net ?

PrzeЕ‚Д…cznik -n oznacza, Ејe bД™dziemy odpytywali strefД™ odwrotnД…, natomiast -i . Ејe jest to adres typu int. DomyЕ›lnie host szuka nazw typu arpa.

Rejestracja

Zanim zarejestrujemy domenę musimy mieć skonfigurowany podstawowy i zapasowy serwer nazw. Mamy możliwość zarejestrowania własnej domeny, bądź skorzystać z usług darmowego oddelegowania nam subdomeny zarejestrowanej już domeny. Ceny rejestracji domen spadły w ostatnich latach tak bardzo, że używanie "obcej" domeny stało się mało profesjonalne i warto zarejestrować własną.

Jeżeli nie posiadasz serwera secondary. możesz poszukać firmy lub organizacji, która za darmo utrzymuje zapasowe DNS-y. Możemy też umówić się z administratorem innej firmy na wzajemne prowadzenie serwerów secondary.

Diagnostyka

Jeśli chcemy przetestować poprawność składni pliku strefy, powinniśmy skorzystać z narzędzia named-checkzone . Program sprawdzi poprawność pliku strefy i poda w której linii wystąpił błąd np.

Named generuje logi typu daemon. domyślnie syslogd umieszcza takie wpisy w pliku /var/log/daemon . Jeśli jednak nastąpił problem z uruchomieniem demona, uniemożliwiający mu pisanie do logów, to możemy sprawdzić co się dzieje uruchamiając go bez przejścia w tło i z wypisaniem komunikatów na standardowe wyjście:

Aby ostatecznie sprawdzić poprawność konfiguracji możemy odpytać nasz serwer za pomocą protokołu DNS. Użyjemy do tego programu host z pakietu bind-utils np.