DNS HOWTO Autor: Nicolai Langfeldt janl@math.uio.no v2.0.6, 22 Lipca 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v2.1, 4 Sierpnia 1998 Jak zostać małoetatowym administratorem DNS. Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/. ______________________________________________________________________ Table of Contents: 1. Preambuła 1.1. Legalność 1.2. Osoby pracujące nad tym dokumentem; prośba o pomoc 1.3. Dedykacja 2. Wprowadzenie 3. Serwer nazw z pamięcią podręczną (cache) 3.1. Uruchamianie named 4. (EM 4.1. Ale najpierw trochę czystej teorii 4.2. Własna domena 4.3. Strefa odwrotna 5. Prawdziwa domena 5.1. /etc/named.conf (lub /var/named/named.conf) 5.2. /var/named/root.hints 5.3. /var/named/zone/127.0.0 5.4. /var/named/zone/land-5.com 5.5. /var/named/zone/206.6.177 6. Nadzór 7. Przejście z wersji 4 na wersję 8 8. FAQ 9. Jak zostać pełnoetatowym administratorem DNS 10. Od tłumacza ______________________________________________________________________ 11.. PPrreeaammbbuułłaa Słowa kluczowe: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn, Internet, domain, name, hosts, resolving 11..11.. LLeeggaallnnoośśćć (C)opyright 1995 Nicolai Langfeldt. Nie zmieniać bez zachowania praw autorskich. Dokument ten może być dowolnie rozpowszechniany dotąd, dokąd zostanie zachowana wiadomość o prawach autorskich. 11..22.. OOssoobbyy pprraaccuujjąąccee nnaadd ttyymm ddookkuummeenntteemm;; pprroośśbbaa oo ppoommoocc Chciałbym podziękować Arntowi Gulbrandsenowi, który przeczytał szkice tej pracy niezliczoną ilość razy i dostarczył wielu przydatnych sugestii. Chcę też podziękować ludziom, którzy wysyłali mi e-mailem sugestie i uwagi. Ten dokument nigdy nie będzie ukończony - wysyłaj mi listy o twoich problemach i sukcesach, może to sprawić, że HOWTO będzie dokładniejsze. Pieniądze, komentarze i/lub pytania możesz wysyłać do janl@math.uio.no. Jeżeli wyślesz mi e-mail i będziesz żądał odpowiedzi, _u_p_e_w_n_i_j _s_i_ę, że adres zwrotny jest poprawny i działający. PPrroosszzęę, przeczytaj sekcję ``FAQ'' przed wysłaniem do mnie listu. Jeśi chcesz przetłumaczyć to HOWTO, zawiadom mnie, abym mógł śledzić, w jakich językach zostałem opublikowany, mogę też zawiadamiać cię, kiedy HOWTO będzie uaktualniane. 11..33.. DDeeddyykkaaccjjaa To HOWTO jest dedykuję dla Anne Line Norheim Langfeldt. Zresztą pewnie nigdy tego nie przeczyta, bo nie jest tego rodzaju dziewczyną. 22.. WWpprroowwaaddzzeenniiee CCzzyymm tteenn ddookkuummeenntt jjeesstt,, aa cczzyymm nniiee.. Dla początkujących: DNS to System Nazw Domen (Domain Name System). DNS przekształca nazwy maszyn na numery IP, które są ich adresami, mapuje z nazwy na adres i odwrotnie. To HOWTO opisuje, jak zdefiniować takie mapowanie używając systemu Linux. Mapowanie to po prostu związek jednej rzeczy z drugą, w tym przypadku nazwy maszyny, jak ftp.linux.org i jej adresu IP, 199.249.150.4. DNS jest dla początkujących (ciebie ;-)) jednym z najtrudniejszych zagadnień administracji sieci. To HOWTO wyjaśnia parę rzeczy - opisuje jak postawić _p_r_o_s_t_y serwer nazw DNS, zaczynając z serwerem cache i przechodząc do ustawiania podstawowego (primary) serwera DNS dla domeny. Żeby uzyskać informację o bardziej złożnonych konfiguracjach, zobacz sekcję ``FAQ'' tego dokumentu. Jeżeli i tam nie znajdziesz potrzebnego opisu, bedziesz musiał _p_r_z_e_c_z_y_t_a_ć Prawdziwą Dokumentację. Powrócę do jej składników w ``ostatnim rodziale''. Zanim zaczniesz, powinieneś tak skonfigurować swoją maszynę, żebyś mógł telnetować się na nią i z niej, oraz z powodzeniem przeprowadzić wszystkie rodzaje połączeń z siecią, a zwłaszcza móc wykonać telnet 127.0.0.1 i uzyskać połączenie z własnym komputerem (przetestuj to teraz!). Potrzebne będą też poprawne: /etc/nsswitch.conf (lub /etc/host.conf), /etc/resolv.conf i /etc/hosts, jako punkt startowy, ponieważ nie będę wyjaśniał tu ich funkcji. Jeśli nie masz tego wszystkiego ustawionego i działającego, NET-3 HOWTO i/lub PPP-HOWTO wyjaśniają jak to ustawić. Przeczytaj je. Kiedy mówię ,,twoja maszyna'', mam na myśli komputer, na którym chcesz ustawić DNS, a nie żadną inną maszynę, jaką możesz mieć, która jest związana z twoją siecią. Przyjmuję, że nie jesteś za żadnym rodzajem ściany ognia (firewall), która blokuje zapytania (queries) o nazwy. Jeżeli jesteś, będziesz potrzebował specjalnej konfiguracji, przeczytaj sekcję ``FAQ''. Serwerem nazw w Unixie jest program nazywany named. Jest on częścią pakietu bind, który jest koordynowana przez Paula Vixie z Internet Software Consortium. Named jest załączony w większości dystrybucji Linuxa i zazwyczaj zainstalowany jako /usr/sbin/named. Jeżeli masz już named, możesz go prawdopodobnie używać; jeśli nie, możesz wziąć binaria z jakiegoś Linuxowego serwera ftp, lub najnowsze i najlepsze źródła z ftp.isc.org/isc/bind/src/cur/bind-8/. To HOWTO opisuje wersję 8 bind'a. Stara wersja tego HOWTO (o bind 4) jest dostępna na http://www.math.uio.no/~janl/DNS/. Jeżeli strona man named'a mówi o named.conf masz bind'a 8, a jeżeli o named.boot, bind 4. Jeśli masz 4 i obchodzi cię bezpieczeństwo, naprawdę powinieneś dokonać rozszerzenia do nowego 8. DNS to baza danych szeroka jak sama sieć. Uważaj, co do niej wkładasz. Jeżeli włożysz do niej śmieci, ty i inni wyjmą także śmieci. Jeżeli utrzymasz swój DNS w czystości i ciągłości, będzie ci dobrze służył. Naucz się go używać, administrować i znajdować błędy, a zostaniesz kolejnym dobrym administratorem, utrzymującym sieć przed upadnięciem na kolana z powodu przeładowania niedobrym zarządzaniem. W tym dokumencie napisałem parę wyjaśnień, które nie są całkowicie prawdziwe (jednakże są przynajmniej w połowie prawdą). Wszystko w interesie uproszczenia. Wszystko będzie (prawdopodobnie ;-)) działać, jeżeli uwierzysz w to, co mówię. PPooddppoowwiieeddźź:: Zrób kopie zapasowe wszystkich plików, które będziesz zmieniać, żebyś mógł wrócić do starej, działającej konfiguracji, jeżeli nic się nie powiedzie. 33.. SSeerrwweerr nnaazzww zz ppaammiięęcciiąą ppooddrręęcczznnąą ((ccaacchhee)) PPiieerrwwsszzyy kkrrookk ww kkoonnffiigguurroowwaanniiuu DDNNSS''uu,, bbaarrddzzoo pprrzzyyddaattnnyy ddllaa kkoorrzzyyssttaajjąąccyycchh zz mmooddeemmuu.. Serwer z pamięcią podręczną będzie szukał odpowiedzi na zapytania o nazwy i pamiętał odpowiedź, żebyś mógł jej użyć następnym razem, kiedy będziesz jej potrzebował. To skróci czas oczekiwania za drugim razem kiedy będziesz potrzebował nazwy, zwłaszcza jeżeli korzystasz z wolnego połączenia. Po pierwsze, potrzebujesz pliku /etc/named.conf. Jest on czytany, kiedy named zostaje uruchamiany. Narazie powinien po prostu zawierać: ______________________________________________________________________ // Plik konfiguracyjny dla serwera nazw ,,caching'' options { directory "/var/named"; // Odkomentowanie tego może pomóc, jeżeli musisz przejść przez // ścianę ognia (firewall), a coś nie działa: // query-source address * port 53; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; ______________________________________________________________________ Linia directory mówi named'owi, gdzie szukać plików. Wszystkie pliki w podkatalogach będą odpowiadały tej zmiennej. A więc pz jest podkatalogiem w /var/named, czyli /var/named/pz. /var/named to odpowiedni katalog, zgodnie z _L_i_n_u_x _F_i_l_e _s_y_s_t_e_m _S_t_a_n_d_a_r_d. Plik o nazwie /var/named/root.hints jest zdefiniowany w named.conf. Powinien on zawierać następujące rekordy: ______________________________________________________________________ \&. 6D IN NS G.ROOT-SERVERS.NET. \&. 6D IN NS J.ROOT-SERVERS.NET. \&. 6D IN NS K.ROOT-SERVERS.NET. \&. 6D IN NS L.ROOT-SERVERS.NET. \&. 6D IN NS M.ROOT-SERVERS.NET. \&. 6D IN NS A.ROOT-SERVERS.NET. \&. 6D IN NS H.ROOT-SERVERS.NET. \&. 6D IN NS B.ROOT-SERVERS.NET. \&. 6D IN NS C.ROOT-SERVERS.NET. \&. 6D IN NS D.ROOT-SERVERS.NET. \&. 6D IN NS E.ROOT-SERVERS.NET. \&. 6D IN NS I.ROOT-SERVERS.NET. \&. 6D IN NS F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 ______________________________________________________________________ BBAARRDDZZOO WWAAŻŻNNEE:: W niektórych wersjach tego dokumentu zawartość powyższego pliku będzie posiadać kilka spacji albo tab przed pierwszym wypełnionym (non blank) znakiem. Nie powinny się one znaleźć w pliku. SSkkaassuujj kkaażżddąą ppoopprrzzeeddzzaajjąąccąą ssppaaccjjęę w plikach, które wycinasz i wklejasz z tego HOWTO. PPaammiięęttaajj,, ccoo ppoowwiieeddzziiaałłeemm oo ppoopprrzzeeddzzaajjąąccyycchh ssppaaccjjaacchh!! Plik opisuje główne serwery (root servers) na świecie. Dane zmieniają się z biegiem czasu i _m_u_s_z_ą być nadzorowane. Przeczytaj ``sekcję o nadzorze'', żeby uzyskać informacje o uaktualnianiu serwera. Następna linia w named.conf to linia primary. Wyjaśnię jej funkcję w następnym rozdziale, a teraz tylko utwórz plik 127.0.0 w podkatalogu pz: ______________________________________________________________________ @ IN SOA linux.bogus. hostmaster.linux.bogus. ( 1 ; Numer seryjny 8H ; Odświeżenie 2H ; Powtórzenie 1W ; Przedawnienie 1D) ; Minimalny TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Następnie, potrzebujesz pliku /etc/resolv.conf, wyglądającego następująco: ______________________________________________________________________ search poddomena.twoja-domena.edu twoja-domena.edu nameserver 127.0.0.1 ______________________________________________________________________ Linia ,,search'' ustala, które domeny powinny być przeszukane dla jakichkolwiek nazw węzłów, z jakimi chcesz się połączyć. Linia nameserver definiuje adres twojego serwera nazw, w tym przypadku twoją własną maszynę, ponieważ tu pracuje named (127.0.0.1 wystarczy, nie ma znaczenia, czy twój komputer ma inny adres). Jeśli chcesz wyznaczyć kilka serwerów nazw, wstaw oddzielną linię ,,nameserver'' dla każdego. (Zauważ: Named nigdy nie czyta tego pliku, robi to resolver, który używa named.) Żeby zilustrować, co ten plik robi: Jeśli klient próbuje znaleźć foo, wtedy jako pierwsze próbowane jest foo.poddomena.twoja-domena.edu, potem foo.twoja-domena.edu, a w końcu foo. Jeżeli klient próbuje szukać sunsite.unc.edu, najpierw próbowane jest sunsite.unc.edu.poddomena.twoja-domena.edu (tak, to jest głupie, ale w ten sposób działa), potem sunsite.unc.edu.twoja-domena.edu, a w końcu sunsite.unc.edu. Nie wpisuj za wielu domen w linii search, ponieważ zabiera to trochę czasu, żeby je wszystkie przeszukać. Przykład przyjmuje, że należysz do domeny poddomena.twoja-domena.edu, twój komputer jest wtedy prawdopodownie nazwany twój- komputer.poddomena.twoja-domena.edu. Linia search nie powinna zawierać twojej TLD (Top Level Domain, Domena Najwyższego Poziomu, w tym przypadku edu). Jeżeli często łączysz się z węzłami w innej domenie, możesz dodać tą domenę do linii search w ten sposób: ______________________________________________________________________ search poddomena.twoja-domena.edu twoja-domena.edu inna-domena.com ______________________________________________________________________ i tak dalej. Oczywiście musisz wpisać prawdziwe nazwy domen zamiast podanych. Zauważ brak kropek na końcach nazw domen. Następnie, zależnie od twojej wersji libc, musisz poprawiać albo /etc/nsswitch.conf, albo /etc/host.conf. Jeżeli już masz nsswitch.conf, będziemy poprawiać właśnie ten plik, a jeśli nie, host.conf. (NAPRAWDĘ zalecam poprawianie hhoosstt..ccoonnff we wszystkich systemach, w których istnieje, np. u mnie jest i jeden i drugi - przyp. tłum.) //eettcc//nnsssswwiittcchh..ccoonnff Jest to długi plik, który ustala, skąd wziąć różne rodzaje typów danych, z jakiego pliku lub bazy. Zazwyczaj zawiera on na górze pomocne komentarze, które powinieneś teraz przeczytać. Potem znajdź linię zaczynającą się na ,,hosts:'' - powinna zawierać: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ Jeżeli nie ma linii zaczynającej się na ,,hosts:'', wpisz powyższą. Mówi, że programy powinny najpierw spojrzeć do pliku /etc/hosts, potem sprawdzić DNS zgodnie z resolv.conf. //eettcc//hhoosstt..ccoonnff Prawdopodobnie zawiera kilka linii, jedna powinna zaczynać się na order i wyglądać następująco: ______________________________________________________________________ order hosts,bind ______________________________________________________________________ Jeżeli nie ma linii ,,order'' powinieneś ją dopisać. Mówi ona procedurom szukającym nazw, żeby najpierw zajrzeć do /etc/hosts, a potem spytać serwer nazw (który ustaliłeś w pliku resolv.conf jako 127.0.0.1). Te dwa pliki są omówione w podręczniku man resolv(8) (wykonaj polecenie ,,man 8 resolv'') w większości dystrybucji Linuxa. Ta strona man jest według mnie całkiem możliwa do zrozumienia, a każdy, zwłaszcza administratorzy DNS, powinni ją przeczytać. Zrób to teraz - jeżeli powiesz sobie ,,później'', nigdy nie będziesz miał okazji ich przeczytać. 33..11.. UUrruucchhaammiiaanniiee nnaammeedd Po tym wszystkim nadszedł czas, aby uruchomić named. Jeżeli używasz połączenia modemowego, połącz się najpierw. Wpisz ,,ndc start'', bez opcji, i naciśnij enter. Jeżeli to nie działa, spróbuj ,,/usr/sbin/ndc start''. Jeśli to też nie działa, zobacz sekcję ``FAQ''. Teraz możesz przetestować swoją konfigurację. Jeżeli obejrzysz plik z komunikatami sysloga (zazwyczaj /var/adm/messages, inny katalog w którym można ich szukać to /var/log, inną nazwą pliku jest syslog) kiedy uruchamiasz named (wykonaj tail -f /var/log/messages), powinieneś ujrzeć coś takiego: (linie kończące się na są kontynuowane w następnej linii) Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \ 00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0) Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \ (IN) loaded (serial 1) Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo) Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0) Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040 Feb 15 01:26:17 roke named[6092]: Ready to answer queries. Jeżeli pojawią się jakieś komunikaty o błędach, popełniłeś jakiś. Named powie, w którym pliku jest błąd (mam nadzieję, że jest to named.conf albo root.hints :-)). Zabij named i sprawdź plik. (jest też bardziej ,,humanitarny'' :-) od zabijania sposób - napisz ,,ndc stop'', odczekaj dłuższą chwilę i nameserver zostanie wyłączony - przyp. tłum.) Teraz uruchom nslookup, żeby sprawdzić twoje robótki ręczne. $ nslookup Default Server: localhost Address: 127.0.0.1 > Jeżeli otrzymałeś takie coś, to znaczy, że działa. Miejmy nadzieję. Jeśli co innego, sprawdź wszystko od początku. Za każdym razem, kiedy zmienisz plik named.conf musisz ponownie uruchomić named komendą ndc restart. Teraz możesz wprowadzić zapytanie. Spróbuj poszukać jakiegoś komputera blisko ciebie. pat.uio.no jest blisko mnie, na Uniwersytecie w Oslo: > pat.uio.no Server: localhost Address: 127.0.0.1 Name: pat.uio.no Address: 129.240.130.16 Nslookup poprosił twojego named'a o poszukanie maszyny pat.uio.no. Połączył się wtedy z jednym z serwerów nazw w twoim pliku root.hints i zapytał stamtąd o drogę. Może to zająć troszeczkę czasu, zanim otrzymasz wynik, ponieważ szuka we wszystkich domenach, które wymieniłeś w /etc/resolv.conf. Jeżeli zapytasz znowu o to samo, otrzymasz coś takiego: > pat.uio.no Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: pat.uio.no Address: 129.240.2.50 Zwróć uwagę na linię ,,Non-authoritative answer:'', która pojawiła się tym razem. Znaczy to, że named nie szukał nazwy w sieci, tylko popatrzył w swojej pamięci podręcznej i tam ją znalazł. Ale informacja z pamięci podręcznej _m_o_ż_e być przedawniona. Zostajesz więc poinformowany o tym (bardzo niewielkim) niebezpieczeństwie, poprzez komunikat ,,Non-authorative answer:''. Kiedy nslookup mówi to za drugim razem, kiedy pytasz o komputer, jest to pewny znak, że named zapamiętuje informacje i działa. Możesz wyjść z nslookup wydając komendę exit. Teraz już wiesz, jak postawić przyspieszający (caching) named. Wypij piwo, mleko, lub cokolwiek innego, żeby to uczcić. 44.. _P_r_o_s_t_a ddoommeennaa JJaakk sskkoonnffiigguurroowwaaćć wwłłaassnnąą ddoommeennęę.. 44..11.. AAllee nnaajjppiieerrww ttrroocchhęę cczzyysstteejj tteeoorriiii Zanim _n_a_p_r_a_w_d_ę zaczniemy ten rozdział, zamierzam podać ci trochę teorii o działaniu DNSu. A ty to przeczytasz, ponieważ jest to przydatne. Jeśli nie chcesz, powinieneś przynajmniej przejść przez to bardzo szybko. Przestań przeglądać, kiedy dojdziesz do opisu, mówiącego co powinieneś wstawić do pliku named.conf. DNS to system hierarchiczny. Najwyższa pozycja to ,,.'', nazywa się ,,root''. Pod . istnieje kilka Domen Najwyższego Poziomu (Top Level Doamins, TLD), najpopularniejsze to ORG, COM, EDU i NET, ale jest jeszcze wiele innych. (np. MIL, GOV, ART, NOM, PRIV - przyp. tłum.) Kiedy poszukiwany jest komputer, zapytanie jest przeprowadzane rekursywnie, zgodnie z hierarchią, począwszy od góry. Jeżeli chcesz znaleźć adres komputera prep.ai.mit.edu, twój serwer nazw musi znaleźć serwer obsługujący domenę edu. Pyta serwer . (zna już serwery . - po to jest plik root.hints), serwer . zwraca listę serwerów edu: $ nslookup Default Server: localhost Address: 127.0.0.1 Zacznij pytać server root: > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Ustaw typ zapytania na NS (rekordy serwerów nazw): %gt; set q=ns Spytaj o edu: > edu. Końcowa kropka jest wymagana, mówi serwerowi, że edu jest pod . (to zawęża obszar poszukiwań). edu nameserver = A.ROOT-SERVERS.NET edu nameserver = H.ROOT-SERVERS.NET edu nameserver = B.ROOT-SERVERS.NET edu nameserver = C.ROOT-SERVERS.NET edu nameserver = D.ROOT-SERVERS.NET edu nameserver = E.ROOT-SERVERS.NET edu nameserver = I.ROOT-SERVERS.NET edu nameserver = F.ROOT-SERVERS.NET edu nameserver = G.ROOT-SERVERS.NET A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17 F.ROOT-SERVERS.NET internet address = 192.5.5.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4 Wynik mówi nam, że *.root-servers.net podaje edu., możemy więc dalej pytać c. Teraz chcemy wiedzieć, kto obsługuje następny poziom nazwy domeny: mit.edu.: > mit.edu. Server: c.root-servers.net Address: 192.33.4.12 Non-authoritative answer: mit.edu nameserver = W20NS.mit.edu mit.edu nameserver = BITSY.mit.edu mit.edu nameserver = STRAWB.mit.edu Authoritative answers can be found from: W20NS.mit.edu internet address = 18.70.0.160 BITSY.mit.edu internet address = 18.72.0.3 STRAWB.mit.edu internet address = 18.71.0.151 STRAWB, W20NS i BITSY obsługują mit, wybierz jeden i pytaj o ai.mit.edu: > server W20NS.mit.edu. Serwery nazw nie rozróżniają wielkości liter, ale używam myszki do wycinania i wklejania, więc kopiuje wynik prosto z ekranu. Server: W20NS.mit.edu Address: 18.70.0.160 > ai.mit.edu. Server: W20NS.mit.edu Address: 18.70.0.160 Non-authoritative answer: ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU ai.mit.edu nameserver = TRIX.AI.MIT.EDU ai.mit.edu nameserver = MUESLI.AI.MIT.EDU ai.mit.edu nameserver = LIFE.AI.MIT.EDU ai.mit.edu nameserver = BEET-CHEX.AI.MIT.EDU ai.mit.edu nameserver = MINI-WHEATS.AI.MIT.EDU ai.mit.edu nameserver = COUNT-CHOCULA.AI.MIT.EDU ai.mit.edu nameserver = MINTAKA.LCS.MIT.EDU Authoritative answers can be found from: AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU AI.MIT.EDU nameserver = LIFE.AI.MIT.EDU AI.MIT.EDU nameserver = BEET-CHEX.AI.MIT.EDU AI.MIT.EDU nameserver = MINI-WHEATS.AI.MIT.EDU AI.MIT.EDU nameserver = COUNT-CHOCULA.AI.MIT.EDU AI.MIT.EDU nameserver = MINTAKA.LCS.MIT.EDU ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5 GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4 TRIX.AI.MIT.EDU internet address = 128.52.37.6 MUESLI.AI.MIT.EDU internet address = 128.52.39.7 LIFE.AI.MIT.EDU internet address = 128.52.32.80 BEET-CHEX.AI.MIT.EDU internet address = 128.52.32.22 MINI-WHEATS.AI.MIT.EDU internet address = 128.52.54.11 COUNT-CHOCULA.AI.MIT.EDU internet address = 128.52.38.22 MINTAKA.LCS.MIT.EDU internet address = 18.26.0.36 A więc muesli.ai mit.edu jest serwerem nazw dla ai.mit.edu: > server MUESLI.AI.MIT.EDU Default Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 Teraz zmieniamy typ zapytania - znaleźliśmy serwer nazw, więc teraz zapytajmy go o wszystko, co wie o prep.ai.mit.edu. > set q=any > prep.ai.mit.edu. Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix prep.ai.mit.edu inet address = 18.159.0.42, protocol = tcp ftp telnet smtp finger prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu prep.ai.mit.edu internet address = 18.159.0.42 ai.mit.edu nameserver = beet-chex.ai.mit.edu ai.mit.edu nameserver = alpha-bits.ai.mit.edu ai.mit.edu nameserver = mini-wheats.ai.mit.edu ai.mit.edu nameserver = trix.ai.mit.edu ai.mit.edu nameserver = muesli.ai.mit.edu ai.mit.edu nameserver = count-chocula.ai.mit.edu ai.mit.edu nameserver = mintaka.lcs.mit.edu ai.mit.edu nameserver = life.ai.mit.edu gnu-life.ai.mit.edu internet address = 128.52.32.60 beet-chex.ai.mit.edu internet address = 128.52.32.22 alpha-bits.ai.mit.edu internet address = 128.52.32.5 mini-wheats.ai.mit.edu internet address = 128.52.54.11 trix.ai.mit.edu internet address = 128.52.37.6 muesli.ai.mit.edu internet address = 128.52.39.7 count-chocula.ai.mit.edu internet address = 128.52.38.22 mintaka.lcs.mit.edu internet address = 18.26.0.36 life.ai.mit.edu internet address = 128.52.32.80 Zaczynając od ., znaleźliśmy sukcesywne serwery nazw dla następnych poziomów w nazwie domeny. Jeżeli używałbyś własnego serwera DNS zamiast wszystkich innych, twój named zapisałby wszystkie informacje w czasie poszukiwań, nie musiałbyś więc znowu ich pytać przez jakiś czas. O wiele mniej mówi się o, tak samo ważnej domenie in-addr.arpa. Jest ona też podzielona jak normalne domeny. in-addr.arpa pozwala otrzymywać nazwy maszyn kiedy posiadamy ich adresy. Ważne: numery IP w domenie in-addr.arpa są pisane w odwrotnej kolejności. Jeżeli adres maszyny to 192.128.52.43, named poszukuje tak, jak dla przykładu z prep.ai.mit.edu: znaleźć serwery arpa.. Znaleźć seerwery in- addr.arpa., znaleźć serwery 192.in-addr.arpa., znaleźć serwery 128.192.in-addr.arpa., znaleźć serwery 52.128.192.in-addr.arpa.. Znaleźć potrzebne rekordy dla 43.52.128.192.in-addr.arpa.. Sprytne, no nie? (Powiedz ,,tak''.) Odwracanie numerów IP może sprawiać kłopoty przez pierwsze dwa lata. Właśnie skłamałem. DNS nie działa dokładnie tak jak przedstawiłem. Ale byłem wystarczająco blisko. 44..22.. WWłłaassnnaa ddoommeennaa Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją _l_i_n_u_x_._b_o_g_u_s (,,bogus'', to po angielsku coś fałszywego, bzdurnego - przyp. tłum.) i zdefiniujemy w niej maszyny. Używam całkowicie bzdurnej (bogus) nazwy domeny, żeby upenić się, że nie przeszkadzamy nikomu Gdzieś Tam. Jeszcze jedna rzecz zanim zaczniemy: Nie wszystkie znaki mogą wchodzić w skład nazw komputerów. Jesteśmy ograniczeni do znaków angielskiego alfabetu, tzn. a-z, numerów 0-9 i znaku ,,-'' (łącznika). Trzymajmy się tych znaków. Wielkie i małe litery nie są rozróżniane przez DNS, a więc pat.uio.no jest identyczne z Pat.UiO.No. Już zaczeliśmy część z linią 0.0.127 w pliku named.conf: ______________________________________________________________________ zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; ______________________________________________________________________ Zauważ brak kropki na końcu nazw domen w tym pliku - definiujemy strefę 0.0.127.in-addr.arpa, że jesteśmy głównym jej serwerem i jest zapisana w pliku pz/127.0.0. Mamy już ten plik, zawiera on: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Zauważ znak ,,.'' na końcu wszystkich pełnych nazw domen w tym pliku, kontrastuje to z plikiem named.conf powyżej. Niektórzy ludzie lubią rozpocząć każdą strefę z dyrektywą $ORIGIN, ale to już ekstrawagancja. Origin (pochodzenie - gdzie znajduje się w hierarchii DNS), pliku strefy jest zdefiniowany w linii strefy w pliku named.conf, w tym przypadku 0.0.127.in-addr.arpa. Ten ,,plik strefy'' zawiera 3 ,,rekordy zasobów'' (resource records, RR): RR SOA, RR NS i RR PTR. SOA to skrót od Start of Authority. Znak ,,@'' jest specjalną notacją znaczącą pochodzenie (origin), a jeżeli kolumna domeny dla tego pliku to ,,0.0.127.in-addr.arpa'', pierwsza linia tak naprawdę znaczy 0.0.127.in-addr.arpa. IN SOA ... NS to RR Name Server - rekord serwera nazw. _N_i_e _j_e_s_t potrzebne ,,@'' na końcu tej linii, ponieważ ostatnia linia zaczęła sie na ,,@''. Oszczędza to trochę pisania. A więc linia NS tak naprawdę znaczy 0.0.127.in-addr.arpa. IN NS ns.linux.bogus Mówi DNS'owi, która maszyna jest serwerem nazw domeny 0.0.127.in- addr.arpa - jest to ns.linux.bogus. ,,ns'' to zazwyczaj stosowana nazwa serwera nazw, ale skoro serwery www są nazywane www._c_o_ś_t_a_m, nazwą może być cokolwiek. I w końcu rekord PTR. Mówi, że komputer o adresie 1 w podsieci 0.0.127.in-addr.arpa, np. 127.0.0.1, nazywa się localhost. Rekord SOA jest początkiem _w_s_z_y_s_t_k_i_c_h plików stref. W każdym pliku musi być dokładnie jeden, jako pierwszy rekord. Opisuje strefę, z której pochodzi (z maszyny nazwanej ns.linux.bogus), osobę, która jest za nią odpowiedzialna (hostmaster@linux.bogus), wersję pliku strefy (numer seryjny: 1) i inne rzeczy mające związek z zapamiętywaniem (caching) i drugorzędnymi (secondary) serwerami DNS. Dla reszty pól: odświeżenia, powtórzenia, przedawnienia i minimalnego TTL użycie wartości podanych w tym HOWTO powinno być bezpieczne. Teraz uruchom ponownie named'a (komendą ndc restart) i użyj nslookup, żeby sprawdzić, co zrobiłeś: $ nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 a więc udaje mu się otrzymać localhost ze 127.0.0.1, to dobrze. Teraz nasze główne zadanie, domena linux.bogus. Wstaw nową sekcję ,,zone'' w pliku named.conf: ______________________________________________________________________ zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; }; ______________________________________________________________________ Zauważ dalszy brak kończącej kropki w nazwie domeny w pliku named.conf. W pliku strefy linux.bogus umieścimy pewne całkowicie bzdurne (bogus) dane: ______________________________________________________________________ ; ; Plik strefy dla linux.bogus ; ; Pełny plik strefy ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny, dzisiejsza data i numer zmiany 8H ; odświeżanie, w sekundach 2H ; powtórzenie, w sekundach 1W ; przedawnienie, w sekundach 1D ) ; minimum, w sekundach ; NS ns ; Adres Internetowy serwera nazw MX 10 mail.linux.bogus ; Podstawowy serwer poczty MX 20 mail.friend.bogus. ; Drugorzędny serwer poczty ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4 ______________________________________________________________________ Należy zwrócić uwagę na dwie rzeczy w rekordzie SOA. ns.linux.bogus _m_u_s_i być prawdziwą maszyna z rekordem A. Nie jest dozwolone wpisaanie rekordu CNAME dla maszyny w rekordzie SOA. Jej nazwą nie musi być ,,ns'', może być jakąkolwiek dozwoloną nazwą komputera. Po drugie, hostmaster.linux.bogus powinien być odczytany jako hostmaster@linux.bogus, a powinien być to alias pocztowy lub oddzielna skrzynka, gdzie osoba(y) nadzorujące DNS powinny często czytać pocztę. Jakikolwiek list w sprawie domeny będzie wysłany na adres podany w tej linii. Nazwą nie musi być ,,hostmaster'', może to być jakikolwiek dozwolony adres e-mail, ale adres ,,hostmaster'' _b_ę_d_z_i_e również działał. Jest jeden nowy typ RR w tym pliku, MX czyli Mail eXchanger. Mówi systemom pocztowym gdzie wysyłać pocztę zaadresowaną do ktośtam@linux.bogus, odpowiednio do mail.linux.bogus lub mail.friend.bogus. Liczba przed każdą nazwą maszyny oznacza priorytet MX'ów. RR z najmniejszą liczbą (10) jest tym, do którego poczta powinna być wysyłana najpierw. Jeżeli to się nie uda, może być wysłana do serwera z wyższą liczbą, drugorzędnego serwera poczty, np. mail.friend.bogus, który ma tu priorytet 20. Uruchom ponownie named, używając komendy ndc restart. Sprawdź wynik z nslookup: $ nslookup > set q=any > linux.bogus Server: localhost Address: 127.0.0.1 linux.bogus origin = ns.linux.bogus mail addr = hostmaster.linux.bogus serial = 199802151 refresh = 28800 (8 hours) retry = 7200 (2 hours) expire = 604800 (7 days) minimum ttl = 86400 (1 day) linux.bogus nameserver = ns.linux.bogus linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus linux.bogus preference = 20, mail exchanger = mail.friend.bogus linux.bogus nameserver = ns.linux.bogus ns.linux.bogus internet address = 192.168.196.2 mail.linux.bogus internet address = 192.168.196.4 Przy dokładnym sprawdzaniu, odkryjesz błąd. Linia linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus jest niepoprawna. Powinno być linux.bogus preference = 10, mail exchanger = mail.linux.bogus Specjalnie popełniłem błąd, żebyś mógł się z niego uczyć :-) Patrząc na plik strefy zobaczymy, że w linii MX 10 mail.linux.bogus ; Podstawowy serwer poczty brakuje kropki. Można też powiedzieć, że ma o jeden człon ,,linux.bogus'' za dużo. Jeżeli nazwa komputera nie kończy się kropką w pliku strefy, pochodzenie (origin) zostaje dodane do niej, powodując podwójny linux.bogus.linux.bogus. Więc piszemy albo ______________________________________________________________________ MX 10 mail.linux.bogus. ; Podstawowy serwer poczty ______________________________________________________________________ albo ______________________________________________________________________ MX 10 mail ; Podstawowy serwer poczty ______________________________________________________________________ Oba są poprawne. Wolę ostatnią formę, mniej pisania. Są znani użytkownicy bind'a którzy nie zgadzają się z tym, są też tacy, którzy zgadzają się z tą regułą. W pliku strefy domena powinna bądź to być całkowita i zakończona kropką, bądź to nie powinna być wogóle załączona, w tym przypadku zawiera domyślne pochodzenie (origin). Muszę zaznaczyć, że w pliku named.conf _n_i_e powinno być kropek po nazwach domen. Nie masz pojęcia, jak często ludzie głupieli i klęli na czym świat stoi z powodu znaku ,,.''. A więc po wyjaśnieniu mojej uwagi, mamy nowy plik strefy, zawierający trochę dodatkowych informacji: ______________________________________________________________________ ; ; Plik strefy dla linux.bogus ; ; Pełny plik strefy ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny, dzisiejsza data + numer zmiany 8H ; odświeżanie, w sekundach 2H ; powtórzenie, w sekundach 1W ; przedawnienie, w sekundach 1D ) ; minimum, w sekundach ; TXT "Linux.Bogus, twoi konsultanci DNS" NS ns ; Adresy Internetowe serwerów nazw NS ns.friend.bogus. MX 10 mail ; Podstawowy MX MX 20 mail.friend.bogus. ; Drugorzędny MX localhost A 127.0.0.1 gw A 192.168.196.1 HINFO "Cisco" "IOS" TXT "Router" ns A 192.168.196.2 MX 10 mail MX 20 mail.friend.bogus. HINFO "Pentium" "Linux 2.0" www CNAME ns donald A 192.168.196.3 MX 10 mail MX 20 mail.friend.bogus. HINFO "i486" "Linux 2.0" TXT "DEK" mail A 192.168.196.4 MX 10 mail MX 20 mail.friend.bogus. HINFO "386sx" "Linux 1.2" ftp A 192.168.196.5 MX 10 mail MX 20 mail.friend.bogus. HINFO "P6" "Linux 2.1.86" ______________________________________________________________________ Jest tu kilka nowych RR'ów: HINFO (Host INFOrmation) ma dwie części, dobrym zwyczajem jest branie każdej w cudzysłowy. Pierwsza część określa nazwę sprzętową lub procesor komputera, a druga oprogramowanie lub system operacyjny. Maszyna nazwana ,,ns'' ma procesor Pentium i Linuxa 2.0. CNAME (Canonical NAME) jest sposobem nadawania każdej maszynie kilku nazw. Www jest więc aliasem ns. Używanie rekordów CNAME jest trochę kontrowesyjne. Ale bezpiecznie jest przestrzegać zasady, że rekordy MX, CNAME lub SOA _n_i_g_d_y nie powinny odnosić się do rekordu CNAME, powinny odnosić się do czegoś z rekordem A, więc źle jest ______________________________________________________________________ foobar CNAME www ; NIE! ______________________________________________________________________ ale poprawnie ______________________________________________________________________ foobar CNAME ns ; Tak! ______________________________________________________________________ Jest też bezpiecznie przyjąć, że CNAME nie jest dozwoloną nazwą komputera dla adresu e-mail: webmaster@www.linux.bogus jest niedozwolonym adresem, jeżeli przyjąć powyższe ustawienia. Możesz się spodziewać, że wielu adminów Gdzieś Tam będzie wymagało tej zasady, nawet jeśli to działa u ciebie. Sposobem uniknięcia tego jest używanie rekordów A (i może innych, takich jak MX) zamiast CNAME: ______________________________________________________________________ www A 192.168.196.2 ______________________________________________________________________ Kilku ,,czarodziejów'' bind'a radzi, aby _n_i_e używać CNAME. Zastanów się więc nad tym _b_a_r_d_z_o poważnie. Ale jak widzisz, to HOWTO i wiele serwerów nie przestrzega tej zasady. Załaduj nową bazę danych komendą ndc reload, sprawi to, że named przeczyta ponownie swoje pliki. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Znaczy to, że wszystkie rekordy powinny być wymienione. Wyświetli: [localhost] $ORIGIN linux.bogus. @ 1D IN SOA ns hostmaster ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtórzenie 1W ; przedawnienie 1D ) ; minimum 1D IN NS ns 1D IN NS ns.friend.bogus. 1D IN TXT "Linux.Bogus, twoi konsultanci DNS" 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. gw 1D IN A 192.168.196.1 1D IN HINFO "Cisco" "IOS" 1D IN TXT "Router" mail 1D IN A 192.168.196.4 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "386sx" "Linux 1.0.9" localhost 1D IN A 127.0.0.1 www 1D IN CNAME ns donald 1D IN A 192.168.196.3 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "i486" "Linux 1.2" 1D IN TXT "DEK" ftp 1D IN A 192.168.196.5 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "P6" "Linux 1.3.59" ns 1D IN A 192.168.196.2 1D IN MX 10 mail 1D IN MX 20 mail.friend.bogus. 1D IN HINFO "Pentium" "Linux 1.2" @ 1D IN SOA ns hostmaster ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtórzenie 1W ; przedawnienie 1D ) ; minimum To jest w porządku. Jak widzisz, wygląda prawie jak plik strefy. Sprawdźmy co powie o samym www: > set q=any > www.linux.bogus. Server: localhost Address: 127.0.0.1 www.linux.bogus canonical name = ns.linux.bogus linux.bogus nameserver = ns.linux.bogus linux.bogus nameserver = ns.friend.bogus ns.linux.bogus internet address = 192.168.196.2 Inaczej mówiąc, prawdziwa nazwa www.linux.bogus to ns.linux.bogus. Daje ci to też trochę informacji, które ma o ns, wystarczjąco dużo, żeby się z nim połączyć, jeżeli byłbyś programem. Jesteśmy w połowie drogi. 44..33.. SSttrreeffaa ooddwwrroottnnaa Teraz programy mogą konwertować nazwy w linux.bogus na adresy, z którymi mogą się połączyć. Ale potrzebna jest też strefa odwrotna, która pozwala DNS'owi przekształcać adresy na nazwy (FTP, IRC, WWW i inne), żeby zdecydować, czy chcą z tobą rozmawiać, czy nie, a jeżeli tak, może nawet zdecydują jaki priorytet powinien być ci nadany. Strefa odwrotna jest wymagana dla pełnego dostępu do wszystkich usług Internetu. Wstaw następujące linie w named.conf: ______________________________________________________________________ zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; }; ______________________________________________________________________ Tak samo jak z 0.0.127.in-addr.arpa, zawartość także jest podobna: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Numer seryjny, data + numer 8H ; odświeżanie 2H ; powtarzanie 1W ; przedawnienie 1D) ; minimalny TTL NS ns.linux.bogus. 1 PTR gw.linux.bogus. 2 PTR ns.linux.bogus. 3 PTR donald.linux.bogus. 4 PTR mail.linux.bogus. 5 PTR donald.linux.bogus. ______________________________________________________________________ Teraz uruchom ponownie named (ndc restart) i sprawdź swoją pracę znowu korzystając z nslookup: ______________________________________________________________________ > 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4 ______________________________________________________________________ Wygląda w porządku, spróbuj wyświetlić wszystko, żeby to sprawdzić: ______________________________________________________________________ > ls -d 196.168.192.in-addr.arpa [localhost] $ORIGIN 196.168.192.in-addr.arpa. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns.linux.bogus. 1 1D IN PTR gw.linux.bogus. 2 1D IN PTR ns.linux.bogus. 3 1D IN PTR donald.linux.bogus. 4 1D IN PTR mail.linux.bogus. 5 1D IN PTR donald.linux.bogus. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; numer seryjny 8H ; odświeżanie 2H ; powtarzanie 1W ; przedawnienie 1D ) ; minimum ______________________________________________________________________ Wygląda dobrze! Jest kilka rzeczy, które powinienem tu dodać. Numery IP używane w przykładach pochodzą z jednego z bloków ,,sieci prywatnych'', tzn. nie wolno używać ich publicznie w internecie. Są bezpieczne do pokazania jako przykład w HOWTO. Druga rzecz, to linia notify no;. Mówi named, żeby nie zawiadamiać serwera drugorzędnego (secondary, slave), kiedy jeden z plików stref zostanie uaktualniony. W bind'dzie-8 named może zawiadamiać inne serwery wymienione w rekordach NS w pliku strefy, kiedy strefa zostanie uaktualniona. Jest to przydatne do użytku zwykłego, ale dla prywatnych eksperymentów ze strefami ta opcja powinna być wyłączona, nie chcemy przecież chyba, żeby nasz eksperyment zaśmiecał Internet, czyż nie tak? No i oczywiście ta domena jest nieprawdziwa (bogus) i takie też są wszystkie adresy w niej. Zobacz następny rozdział dla przykładu z prawdziwą domeną. 55.. PPrraawwddzziiwwaa ddoommeennaa TTuuttaajj ooppiissuujjeemmyy ttrroocchhęę _p_r_a_w_d_z_i_w_y_c_h pplliikkóóww ssttrreeff.. Użytkownicy zasugerowali, żebym załączył prawdziwy przykład działającej domeny razem z teoretycznym przykładem. Używam tego przykładu z zezwoleniem Davida Bullock'a z LAND-5. Te pliki były aktualne 24 Września 1996 i zostały zmienione przeze mnie, żeby pasowały do formatu bind-8, używają też moich rozszerzeń. A więc, to co tu widzisz różni się trochę od tego, co otrzymasz po wysłaniu zapytania do serwerów nazw LAND-5 obecnie. 55..11.. //eettcc//nnaammeedd..ccoonnff ((lluubb //vvaarr//nnaammeedd//nnaammeedd..ccoonnff)) Tutaj znajdziemy linie główne dla dwóch potrzebnych stref odwrotnych: sieci 127.0.0, jak i sieci 206.6.177 należącej do LAND-5, oraz linię primary dla przedniej strefy land-5.com. Zauważ także, że zamiast umieszczać pliki w katalogu o nazwie pz, jak robię to w tym HOWTO, znajdują się one w katalogu zone (strefa). ______________________________________________________________________ // Plik ładujący dla serwera nazw LAND-5 options { directory "/var/named"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/127.0.0"; }; zone "land-5.com" { type master; file "zone/land-5.com"; }; zone "177.6.206.in-addr.arpa" { type master; file "zone/206.6.177"; }; ______________________________________________________________________ Jeżeli wstawisz to do swojego named.conf, żeby się pobawić, _P_R_O_S_Z_Ę, wstaw notify no; w sekcji stref dla dwóch stref land-5, żeby uniknąć wypadków. 55..22.. //vvaarr//nnaammeedd//rroooott..hhiinnttss Pamiętaj, że ten plik zmienia się, a ten jest stary. Powinieneś używać nowszego pliku wyprodukowanego używając dig, będzie to wytłumaczone później. (UWAGA: autor napisał, że było to wytłumaczone wcześniej, ale jest to wytłumaczone PÓŹNIEJ - przyp. tłum.) ______________________________________________________________________ ; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET. ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opCODE: QUERY, status: NOERROR, id: 10 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUERY SECTION: ;; ., type = NS, class = IN ;; ANSWER SECTION: \&. 6D IN NS G.ROOT-SERVERS.NET. \&. 6D IN NS J.ROOT-SERVERS.NET. \&. 6D IN NS K.ROOT-SERVERS.NET. \&. 6D IN NS L.ROOT-SERVERS.NET. \&. 6D IN NS M.ROOT-SERVERS.NET. \&. 6D IN NS A.ROOT-SERVERS.NET. \&. 6D IN NS H.ROOT-SERVERS.NET. \&. 6D IN NS B.ROOT-SERVERS.NET. \&. 6D IN NS C.ROOT-SERVERS.NET. \&. 6D IN NS D.ROOT-SERVERS.NET. \&. 6D IN NS E.ROOT-SERVERS.NET. \&. 6D IN NS I.ROOT-SERVERS.NET. \&. 6D IN NS F.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 ;; Total query time: 215 msec ;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4 ;; WHEN: Sun Feb 15 01:22:51 1998 ;; MSG SIZE sent: 17 rcvd: 436 ______________________________________________________________________ 55..33.. //vvaarr//nnaammeedd//zzoonnee//112277..00..00 Tylko podstawy, obowiązujący rekord SOA i rekord, który mapuje 127.0.0.1 na localhost. Oba są wymagane. Nic więcej nie powinno znajdować się w tym pliku. Prawdopodobnie nigdy nie będzie musiał być uaktualniany, chyba że twój serwer nazw lub hostmaster zmienią adres. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost. ______________________________________________________________________ 55..44.. //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm Widzimy tu obowiązujący rekord SOA i potrzebne rekordy NS. Możemy zobaczyć, że drugorzędny serwer nazw ma adres ns2.psi.net. Jest tak, jak powinno być, _z_a_w_s_z_e musi być drugorzędny serwer w innym miejscu Internetu. Jest tu komputer główny o nazwie land-5, który zajmuje się wieloma różnymi usługami Internetowymi, jest to załatwione za pomocą rekordów CNAME (alternatywnie można używać rekordów A). Jak widzidsz z rekordu SOA, plik strefy pochodzi z land-5.com, osobą kontaktową jest root@land-5.com. hostmaster jest innym często używanym adresem. Numer seryjny składa się z daty w formacie yyyymmdd i dziennego numeru seryjnego; jest to prawdopodobnie szósta wersja pliku strefy z 20 Września 1996. Pamiętaj, że numer seryjny _m_u_s_i zwiększać się monotonicznie, tutaj jest tylko _j_e_d_n_a cyfra numeru seryjnego, więc po 9 zmianach trzeba czekać do następnego dnia z następnymi edycjami. Rozważ użycie dwóch cyfr. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 1W ; expire, seconds 1D ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns A 206.6.177.3 www A 207.159.141.192 ftp CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.2 @ TXT "LAND-5 Corporation" ; ; Workstations ; ws-177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws-177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws-177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws-177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws-177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws-177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws-177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws-177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws-177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws-177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws-177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host ______________________________________________________________________ Jeżeli sprawdzisz serwer nazw land-5, zobaczysz, że nazwy komputerów składają się z ws__n_u_m_e_r. Późne wersje named'a w bind'dzie 4 zaczęły wymagać ograniczeń znaków składających się na nazwy komputerów. A więc wogóle nie działałoby to z bind-8, zamieniłem ,,_'' na ,,-''. Inna rzecz warta zauważenia to fakt, że stacje robocze nie mają własnych nazw, a raczej prefiks i dwie ostatnie części numeru IP. Używanie takiej konwencji może znacznie uprościć nadzór, ale jest trochę bezosobowe i może być źródłem niezadowolenia wśród twoich użytkowników. Możemy także zobaczyć, że funn.land-5.com jest aliasem land-5.com, ale używającym rekordu A, a nie CNAME. 55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Skomentuję ten plik na jego końcu. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 2 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws-177200.land-5.com. 201 PTR ws-177201.land-5.com. 202 PTR ws-177202.land-5.com. 203 PTR ws-177203.land-5.com. 204 PTR ws-177204.land-5.com. 205 PTR ws-177205.land-5.com. ; {Dużo powtarzających się rekordów - usunięto} 250 PTR ws-177250.land-5.com. 251 PTR ws-177251.land-5.com. 252 PTR ws-177252.land-5.com. 253 PTR ws-177253.land-5.com. 254 PTR ws-177254.land-5.com. ______________________________________________________________________ Strefa odwrotna jest kawałkiem ustawień wydającym się sprawiać najwięcej kłopotów. Jest używany do znalezienia nazwy komputera, jeżeli masz jego numer IP. Przykład: jesteś serwerem IRC i akceptujesz połączenia od klientów IRC. Jednakże jesteś serwerem norweskim, a więc chcesz akceptować połączenia tylko z Norwegii i innych krajów skandynawskich. Kiedy otrzymasz połączenie od klienta, biblioteka C jest w stanie przekazać ci numer IP łączącej się maszyny, ponieważ numer IP klienta jest zawarty we wszystkich pakietach przekazywanych przez sieć. Teraz możesz przywołać funkcję o nazwie gethostbyaddr, która szuka nazwy komputera z podanym numerem IP. Gethostbyaddr spyta serwer DNS, który wtedy przetrawersuje DNS, poszukując maszyny. Przyjmijmy, że połączenie nadeszło z ws-177200.land-5.com. Numer IP podany przez bibliotekę C serwerowi IRC to 206.6.177.200. Żeby poznać nazwę tej maszyny, musimy znaleźć 200.177.6.206.in-addr.arpa. Serwer DNS najpierw odwróci ścieżkę przez 206, potem przez 6, aż w końcu znajdzie serwer dla strefy 177.6.206.in-addr.arpa na land-5, z którego na końcu dostanie odpowiedź, że dla 200.177.6.206.in-addr.arpa mamy rekord ,,PTR ws-177200.land-5.com'', który znaczy, że nazwa 206.6.177.20 to ws-177200.land-5.com. Tak jak z wyjaśnieniem, jak zostaje znaleziony prep.ai.mit.edu, jest to trochę fikcyjne. Wracając do przykładu serwera IRC. Serwer IRC akceptuje połączenia tylko z krajów skandynawskich, tj. *.no, *.se, *.dk. Od razu widać, że nazwa ws-177200.land-5.com nie pasuje do żadnego z nich, a więc serwer odmówi połączenia. Jeżeli _n_i_e było mapowania odwrotnego dla 206.6.177.200 przez strefę in-addr.arpa, serwer nie mógłby znaleźć nazwy i porównałby 206.6.177.200 z *.no, *.se i *.dk, oczywiście żadna z nich nie będzie pasowała. Niektórzy ludzie będą mówili ci, że odwrotne mapowanie jest ważne tylko dla serwerów, albo _w_o_g_ó_l_e nie ważne. Nie zawsze: wiele serwerów ftp, news, IRC i nawet niektóre http (WWW) _n_i_e _b_ę_d_ą akceptowały połączeń z maszyn, których nazw nie będą w stanie znaleźć. A więc mapowanie odwrotne jest _o_b_o_w_i_ą_z_k_o_w_e. 66.. NNaaddzzóórr UUttrrzzyymmyywwaanniiee ww cciiąąggłłyymm ddzziiaałłaanniiuu Jest jedno zadanie nadzorcze, które musisz wykonywać z named'ami, inne niż utrzymywanie ich w działaniu, tzn. uaktualnianie pliku root.hints. Najłatwiej jest to zrobić używając dig'a. Najpierw uruchom dig bez żadnych argumentów, otrzymasz zawartość pliku root.hints zgodnie ze swoim własnym serwerem. Wtedy spytaj jeden z wymienionych serwerów głównych komendą dig @rootserver. Zauważysz, że to co otrzymasz będzie bardzo podobne do pliku root.hints. Zapisz to do pliku (dig @e.root- servers.net . ns >root.hints.new) i zamień na niego stary plik root.hints. Pamiętaj, żeby uruchomić ponownie named po zamianie pliku cache. Al Longyear wysłał mi ten skrypt. Może on być uruchamiany automatycznie w celu uaktualniania root.hints. Dodaj wpis do tablicy cron'a, żeby był uruchamiany raz na miesiąc. Ten skrypt przyjmuje, że masz działający system pocztowy i zdefniowany alias pocztowy ,,hostmaster''. Musisz zagłębić się w ten plik, żeby dostosować go do twoich ustawień. ______________________________________________________________________ #!/bin/sh # # Uaktualnianie pliku cache raz na miesiąc. # Ten skrypt jest uruchamiany automatycznie przez cron'a. # ( echo "To: hostmaster " echo "From: system " echo "Subject: Automatyczne uaktualnienie pliku named.conf" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig @rs.internic.net . ns >root.hints.new echo "Plik named.conf został uaktualniony i zawiera następujące informacje:" echo cat root.hints.new chown root.root root.hints.new chmod 444 root.hints.new rm -f root.hints.old mv root.hints root.hints.old mv root.hints.new root.hints ndc restart echo echo "Serwer nazw został uruchomiony ponownie, aby wprowadzić zmiany" echo "Poprzedni plik nazywa się teraz /var/named/root.hints.old." ) 2>&1 | /usr/lib/sendmail -t exit 0 ______________________________________________________________________ Niektórzy z was mogli zauważyć, że plik root.hints jest też dostępny przez ftp z Internic'u. Proszę, _n_i_e używaj ftp do uaktualniania root.hints, powyższa metoda jest o wiele bardziej przyjazna dla sieci. 77.. PPrrzzeejjśścciiee zz wweerrssjjii 44 nnaa wweerrssjjęę 88 Poprzednio była to sekcja o używaniu bind'a 8 napisana przez David'a E. Smith'a (dave@bureau42.ml.org). Trochę ją zmieniłem, żeby pasowała do nowej nazwy sekcji. Nie ma tego wiele. Poza używaniem named.conf zamiast named.boot, wszystko jest identyczne. Bind-8 jest dostarczany ze skryptem konwertującym pliki w ,,starym stylu'' na nowe. Przykładowy named.conf (stary) dla serwera cache: ______________________________________________________________________ directory /var/named cache . root.hints primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone primary localhost localhost.zone ______________________________________________________________________ W linii komend, w katalogu bind8/src/bin/named (_P_r_z_y_j_m_u_j_ę_, _ż_e _m_a_s_z _d_y_s_t_r_y_b_u_c_j_ę _ź_r_ó_d_ł_o_w_ą_. _J_e_ż_e_l_i _m_a_s_z _p_a_c_z_k_ę _z _b_i_n_a_r_i_a_m_i _s_k_r_y_p_t _t_e_ż _g_d_z_i_e_ś _m_u_s_i _b_y_ć_, _j_e_d_n_a_k_ż_e _n_i_e _j_e_s_t_e_m _p_e_w_i_e_n _g_d_z_i_e_. _-_e_d_.), napisz: ______________________________________________________________________ ______________________________________________________________________ Co stworzy named.conf: ______________________________________________________________________ // generated by named-bootconf.pl options { directory "/var/named"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.IN-ADDR.ARPA" { type master; file "127.0.0.zone"; }; zone "localhost" { type master; file "localhost.zone"; }; ______________________________________________________________________ Metoda ta konwertuje wszystko, co można wpisać do named.conf, jednakże nie dodaje żadnych nowych rozszerzeń i opcji konfiguracji, które można uzyskać w bind-8. Oto bardziej kompletny named.conf, który robi te same rzeczy, ale trochę bardziej sprawnie. ______________________________________________________________________ // To jest plik konfiguracyjny named (bind-8 lub późniejszy) // Powinien być zainstalowany jako /etc/named.conf. // Jedyna zmiana pliku ,,fabrycznego'' (poza tym komentarzem :)) // to odkomentowanie linii directory, ponieważ mam już pliki stref // w /var/named. options { directory "/var/named"; check-names master warn; /* domyślne. */ datasize 20M; }; zone "localhost" IN { type master; file "localhost.zone"; check-names fail; allow-update { none; }; allow-transfer { any; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; check-names fail; allow-update { none; }; allow-transfer { any; }; }; zone "." IN { type hint; file "root.hints"; }; ______________________________________________________________________ bind8/src/bin/named/test ma ten plik oraz kopie plików stref, które wiele ludzi może skopiować i od razu używać. Formaty plików stref i root.hints są identyczne, tak jak komendy ich uaktualniania. 88.. FFAAQQ W tej sekcji wymienię kilka spośród najczęściej zadawanych pytań związanych z DNS'em i tym HOWTO, oraz odpowiedzi na nie. :-) Przeczytaj tą sekcję przed wysłaniem do mnie listu. 1. Mój named żąda pliku named.boot. Czytasz złe HOWTO. Przeczytaj starą wersję tego dokumentu, która opisuje bind 4, na http://www.math.uio.no/~janl/DNS/. 2. Jak używać DNS zza ściany ognia (firewall)? Kilka podpowiedzi: ,,forwarders'', ,,slave'' oraz spojrzenie na listę literatury na końcu tego HOWTO. 3. Jak sprawić, żeby DNS przełączał się między adresami usługi, np. www.zajęty.serwer, żeby uzyskać efekt wyrównania obciążenia, lub podobny? Utwórz kilka rekordów AA dla www.zajęty.serwer i użyj bind'a 4.9.3 lub późniejszego. Wtedy bind będzie pokolei przełączał adresy. _N_i_e _b_ę_d_z_i_e to działać z wcześniejszymi wersjami bind'a. 4. Chcę ustawić DNS w (zamkniętym) intranecie. Co mam zrobić? Nie zakładaj pliku root.hints, tylko pliki stref. To znaczy także, że nie będziesz musiał uaktualniać tego pliku. 5. Jak ustawić drugorzędny (secondary, slave...) serwer DNS? Jeżeli podstawowy (primary) serwer ma adres 127.0.0.1 wstaw następującą linię w named.conf drugorzędnego serwera: ___________________________________________________________________ zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 127.0.0.1; }; }; ___________________________________________________________________ Możesz wymienić kilka alternatywnych serwerów głównych, z których strefa może być kopiowana w liście masters, oddzielone przez ,,;''. 6. Chcę, żeby bind działał nawet wtedy, kiedy jestem odłączony od sieci. Otrzymałem taki list od Ian'a Clark'a , gdzie wyjaśnia on jego sposób dokonania tego: Uruchamiam named na mojej ,,maskującej się'' maszynie. Mam dwa pliki root.hints, jeden nazywa się root.hints.real i zawiera prawdziwe nazwy serwerów nazw głównych, oraz drugi, root.hints.fake, który zawiera... ---- ; root.hints.fake ; ten plik nie zawiera żadnych informacji ---- Kiedy rozłączam się, kopiuję root.hints.fake do root.hints i uruchamiam named ponownie. Kiedy łączę się, kopiuję root.hints.real do root.hints i restartuję named. To jest wykonywane odpowiednio przez ip-down i ip-up. Pierwszy raz, kiedy przeprowadzam zapytanie off-line o nazwę domeny, named nie ma szczegółów, a więc wstawia taki komunikat w pliku messgaes: Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN z czym można żyć. U mnie to działa. Mogę używać serwera nazw dla maszyn lokalnych bez opóźnienia, jak w przypadku zewnętrznych nazw domen, a kiedy jestem w sieci, zapytania o zewnętrzne domeny funkcjonują normalnie. 7. Gdzie serwer przyspieszający zapisuje swoją pamięć podręczną? W jaki sposób można ją kontrolować? Pamięć podręczna jest zapamiętywana całkowicie w pamięci, _n_i_e _j_e_s_t zapisywana na dysk. Za każdym razem kiedy zabijesz named cache będzie stracony. Cache _n_i_e _d_a_j_e się w żaden sposób kontrolować. Named zarządza nim zgodnie z pewnymi prostymi zasadami i nie da się tego ominąć. Nie możesz kontrolować cache'u ani jego rozmiaru w żaden sposób i z żadnego powodu. Jeżeli chcesz, możesz ,,naprawić'' to zmieniając kod named. Jednakże nie jest to zalecane. 8. Czy named zapisuje cache po zakończeniu działania? Czy mogę go jakoś do tego zmusić? Nie, named _n_i_e _z_a_p_i_s_u_j_e pamięci podręcznej kiedy umiera. Znaczy to, że cache musi być zbudowany od nowa za każdym razem, kiedy zabijasz i uruchamiasz named ponownie. _N_i_e _m_a sposobu, żeby zmusić go do zapisywania cache'u w pliku. Jeżeli chcesz, możesz to ,,naprawić'' zmieniając kod named. Nie jest to jednak zalecane. 99.. JJaakk zzoossttaaćć ppeełłnnooeettaattoowwyymm aaddmmiinniissttrraattoorreemm DDNNSS DDookkuummeennttaaccjjaa ii nnaarrzzęęddzziiaa Prawdziwa Dokumentacja istnieje. Online i drukowana. Przeczytanie kilku z tych publikacji jest wymagane, żeby zrobić krok od małoetatowego do pełnoetatowego administratora DNS. W druku, standardową książką jest _D_N_S _i _B_I_N_D, autorstwa C. Liu i P. Albitz'a, wydawnictwa O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Czytałem ją, jest świetna. Jest też sekcja o DNS w książce _T_C_P_/_I_P _- _A_d_m_i_n_i_s_t_r_a_c_j_a _s_i_e_c_i, autorstwa Craig'a Hunt'a z wydawnictwa O'Reilly..., ISBN 0-937175-82-X. Inna książka koniecznie do przeczytania przez dobrego admina DNS (lub kogokowiek dobrego z tej branży) jest _Z_e_n _i _S_z_t_u_k_a _N_a_p_r_a_w_y _M_o_t_o_c_y_k_l_i Roberta M. Prisiga, :-) dostępne pod ISBN 0688052304 i inne. Online znajdziesz różne rzeczy na http://www.dns.net/dnsrd/, http://www.isc.org/bind.html; FAQ, podręcznik (BOG - Bind Operators Guide), specyfikacje i definicje protokołów, oraz sztuczki DNS (te, i wiele, jeżeli nie wszystkie RFC wspomniane poniżej, także znajdują się w dystrybucji bind'a). Nie czytałem większości z nich, ale przez to nie jestem pełnoetatowym administratorem DNS. Natomiast Arnt Gulbrandsen przeczytał BOG i bardzo mu się on spodobał :-). Jest też grupa news news://comp.protocols.tcp-ip.domains o DNS. Dodatkowo, jest też trochę RFC o DNS'ie, najważniejsze są prawdopodobnie te: RRFFCC 22005522 A. Gulbrandsen, P. Vixie, _A _D_N_S _R_R _f_o_r _s_p_e_c_i_f_y_i_n_g _t_h_e _l_o_c_a_t_i_o_n _o_f _s_e_r_v_i_c_e_s _(_D_N_S _S_R_V_), October 1996 RRFFCC 11991188 Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, _A_d_d_r_e_s_s _A_l_l_o_c_a_t_i_o_n _f_o_r _P_r_i_v_a_t_e _I_n_t_e_r_n_e_t_s, 02/29/1996. RRFFCC 11991122 D. Barr, _C_o_m_m_o_n _D_N_S _O_p_e_r_a_t_i_o_n_a_l _a_n_d _C_o_n_f_i_g_u_r_a_t_i_o_n _E_r_r_o_r_s, 02/28/1996. RRFFCC 11991122 EErrrroorrss B. Barr _E_r_r_o_r_s _i_n _R_F_C _1_9_1_2, jest on dostępny na RRFFCC 11771133 A. Romao, _T_o_o_l_s _f_o_r _D_N_S _d_e_b_u_g_g_i_n_g, 11/03/1994. RRFFCC 11771122 C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, _D_N_S _E_n_c_o_d_i_n_g _o_f _G_e_o_g_r_a_p_h_i_c_a_l _L_o_c_a_t_i_o_n, 11/01/1994. RRFFCC 11118833 R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, _N_e_w _D_N_S _R_R _D_e_f_i_n_i_t_i_o_n_s, 10/08/1990. RRFFCC 11003355 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _i_m_p_l_e_m_e_n_t_a_t_i_o_n _a_n_d _s_p_e_c_i_f_i_c_a_t_i_o_n, 11/01/1987. RRFFCC 11003344 P. Mockapetris, _D_o_m_a_i_n _n_a_m_e_s _- _c_o_n_c_e_p_t_s _a_n_d _f_a_c_i_l_i_t_i_e_s, 11/01/1987. RRFFCC 11003333 M. Lottor, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _o_p_e_r_a_t_i_o_n_s _g_u_i_d_e, 11/01/1987. RRFFCC 11003322 M. Stahl, _D_o_m_a_i_n _a_d_m_i_n_i_s_t_r_a_t_o_r_s _g_u_i_d_e, 11/01/1987. RRFFCC 997744 C. Partridge, _M_a_i_l _r_o_u_t_i_n_g _a_n_d _t_h_e _d_o_m_a_i_n _s_y_s_t_e_m, 01/01/1986. 1100.. OOdd ttłłuummaacczzaa To jest druga wersja DNS-HOWTO. Pierwsza wersja, dotycząca bind'a 4 została przetłumaczona przez Piotra Pogorzelskiego . Prawa autorskie tłumaczenia pierwszej wersji należą właśnie do niego, a ponieważ ja przetłumaczyłem drugą wersję od początku, prawa autorskie tłumaczenia drugiej wersji należą do mnie. Wersja 2.1 jest _z_n_a_c_z_n_i_e poprawiona w stosunku do 2.0. Jak zwykle, jeżeli znajdziesz jakieś błedy, daj mi znać.