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 <hostmaster>" echo "From: system <root>" 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 <ic@deakin.edu.au>, 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 <http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html> 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 <piotr.pogorzelski@ippt.gov.pl>. 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æ.