DNS KAKO Nicolai Langfeldt, janl@math.uio.no; preveo Josip Rodin, jrodin@jagor.srce.hr inačica 1.1, 20. srpnja 1999. (u originalu verzija 2.0.8) KAKO postati mali DNS administrator. ______________________________________________________________________ Sadržaj 1. Uvod 1.1 Pravne stvari 1.2 Zasluge i poziv za pomoć 1.3 Posveta 2. Upoznavanje. 3. Caching only imenski server 3.1 Startanje named-a 4. Jednostavna domena. 4.1 Ali prvo malo suhe teorije 4.2 Naša domena. 4.3 Obrnuta zona. 5. Primjer prave domene 5.1 /etc/named.conf (ili /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. Održavanje. 7. Prebacivanje s verzije 4 na verziju 8 8. Pitanja i Odgovori 9. Kako postati veći DNS admin. ______________________________________________________________________ 11.. UUvvoodd Ključne riječi: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip, isdn, Internet, domain, name, hosts, resolving 11..11.. PPrraavvnnee ssttvvaarrii (C)opyright 1995 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message. Hrvatski prijevod (c)opyright by Josip Rodin, slobodno za distribuciju. 11..22.. ZZaasslluuggee ii ppoozziivv zzaa ppoommooćć Želio bih zahvaliti Arntu Gulbrandsenu koji je čitao nedovršene dijelove ovoga nebrojeno puta i dao puno korisnih prijedloga. Također bih želio zahvaliti ljudima koji su e-mailali prijedloge i bilješke. Ovo nikada neće biti završen dokument, molim vas šaljite mi e-mail o vašim problemima i uspjesima, to može poboljšati HOWTO. Dakle, molim vas, šaljite novac, komentare i/ili pitanja na janl@math.uio.no. Ako pošaljete e-mail i želite odgovor, molim vas da provjerite je li povratna adresa ispravna i da radi. Također, molim vas, pročitajte ``PiO'' poglavlje prije nego mi e-mailate. Ako želiš prevesti ovaj HOWTO (sad je gotovo :), molim te, obavijesti me tako da mogu pratiti na kojim sam jezicima objavljen, a da bih te mogao obavijestiti kad se ovaj HOWTO promijeni. 11..33.. PPoossvveettaa Ovaj HOWTO je posvećen Anne Line Norheim Langfeldt. Mada ga ona vjerojatno nikada neće pročitati jer ona nije takav tip djevojke. 22.. UUppoozznnaavvaannjjee.. ŠŠttoo oovvoo jjee,, aa ššttoo nniijjee.. Za početnike, DNS znači _D_o_m_a_i_n _N_a_m_e _S_y_s_t_e_m -- sustav imenovanja domena. DNS pretvara imena strojeva u IP brojeve koji su svi adrese strojeva i mapira iz imena u adresu i iz adrese u ime. Ovaj KAKO dokumentira kako definirati takva mapiranja koristeći Linux sustav. Mapiranje je jednostavno povezivanje dviju stvari, u ovom slučaju imena stroja, kao ftp.linux.org, i IP adrese stroja, kao 199.249.150.4. DNS je, neupoznatom (tebi ;-), jedno od mračnih područja administriranja mreže. Ovaj KAKO će pokušati učiniti neke stvari jasnijima. On opisuje kako podesiti jednostavan DNS server. Počet ćemo sa caching only serverom da bi došli do podešavanja primarnog DNS imenskog servera za domenu. Za kompleksnije postavke možeš pogledati ``PiO'' poglavlje ovog dokumenta. Ako to nije opisano tamo trebat ćeš pročitati Pravu Dokumentaciju. Što je i od čega se sastoji Prava Dokumentacija bit će objašnjeno u ``zadnjem poglavlju''. Prije nego počneš s ovim, trebao bi konfigurirati svoj stroj tako da se možeš telnetirati na i s njega, i uspješno uspostaviti sve vrste veza na mrežu, i posebno bi trebao moći se telnetirati na 127.0.0.1 i time doći na svoj stroj (probaj sad!). Na početku također trebaš ispravan /etc/nsswitch.conf (ili /etc/host.conf), /etc/resolv.conf i /etc/hosts datoteku, jer njihovu funkciju ovdje neću objasniti. Ako ovo već nemaš podešeno i u radu, _N_E_T_-_3 i _P_P_P_-_H_O_W_T_O objašnjavaju kako to podesiti. Pročitaj ih. Kada kažem 'tvoj stroj', mislim na stroj na kojem pokušavaš podesiti DNS. Ne na niti jedan drugi stroj koji imaš, a koji je uključen u tvoje mrežne napore. Pretpostavit ću da nisi iza bilo kakvog firewalla koji blokira upite o imenima. Ako jesi, trebat ćeš posebnu konfiguraciju, i pogledaj poglavlje ``PiO''. Opsluživanje imenima na Unixu je omogućeno programom zvanim named. On je dio bind paketa kojim koordinira Paul Vixie uime Internet Software Consortium-a. named je uključen u većinu Linux distribucija i obično je instaliran kao /usr/sbin/named. Ako imaš named, vjerojatno ga možeš i koristiti; ako ga nemaš, nabavi ga binarnog sa Linux FTP lokacije, ili nađi najnoviji i najbolji izvorni kod sa ftp.isc.org:/isc/bind/src/cur/bind-8/. Ovaj KAKO govori o verziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je još uvijek dostupna na u slučaju da koristiš bind 4 (nažalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako named-ova man stranica govori o named.conf, imaš bind 8, a ako govori o datoteci named.boot, imaš bind 4. Ako imaš 4 i brineš o sigurnosti, stvarno bi trebao nadograditi na noviju 8-icu. DNS je baza podataka cijele mreže. Pazi što ćeš staviti u nju. Ako staviš smeće u nju, ti i drugi ćete dobiti smeće iz nje. Održavaj svoj DNS urednim i dosljednim i dobro će te služiti. Nauči ga koristiti, administrirati, ispravljati greške i bit ćeš još jedan dobar administrator koji čuva mrežu od padanja na koljena, pretrpanu zbog krivog upravljanja. U ovom dokumentu navest ću sigurno nekoliko stvari koje nisu sasvim istinite (one su makar polovično istinite ipak). To je sve u interesu jednostavnosti. Stvari će (vjerojatno ;-) raditi ako budeš vjerovao onom što ću reći. NNaappoommeennaa:: pravi rezervne (backup) kopije svih datoteka koje ti naložim da promijeniš ako ih već imaš, tako da ako ništa ne bude radilo nakon ovoga, možeš sve vratiti u staro, radno stanje. 33.. CCaacchhiinngg oonnllyy iimmeennsskkii sseerrvveerr PPrrvvaa ssttaavvkkaa DDNNSS kkoonnffiigguurraacciijjee,, vvrrlloo kkoorriissnnaa kkoorriissnniicciimmaa kkoojjii ssee ssppaajjaajjuu mmooddeemmsskkiimm bbiirraannjjeemm pprroovviiddeerraa.. Caching only imenski server će naći odgovor na upite o imenima i zapamtiti odgovor sljedeći put kad ga budeš trebao. Ovo će znatno skratiti vrijeme čekanja sljedeći put, posebno ako si na sporoj vezi. Prvo ćeš trebati datoteku zvanu /etc/named.conf. Ona je pročitana kad se pokreće named. Za sada ona treba sadržavati samo ovo: ______________________________________________________________________ // Konfiguracijska datoteka za caching only imenski server options { directory "/var/named"; // Odkomentiravanje ovoga može pomoći ako moraš proći kroz // firewall, a stvari baš i ne rade: // 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"; }; ______________________________________________________________________ Linija 'directory' govori namedu gdje da potraži datoteke. Sve datoteke nazvane slično će biti relativne ovome. Također, pz je direktorij ispod /var/named, npr. /var/named/pz. /var/named je pravi direktorij prema _L_i_n_u_x _F_i_l_e _S_y_s_t_e_m _s_t_a_n_d_a_r_d_u. Datoteka zvana /var/named/root.hints se spominje ovdje. Ona treba sadržavati ovo: ______________________________________________________________________ . 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 ______________________________________________________________________ Ova datoteka opisuje korijenske imenske servere u svijetu. Oni se mijenjaju s vremenom i lista se mora održavati. Pogledaj poglavlje ``Održavanje.'' za upute kako ih osvježavati. Sljedeći odjeljak u named.conf datoteci je opis zone. Objasnit ću njenu upotrebu u kasnijim poglavljima, zasad samo napravite datoteku zvanu 127.0.0 sljedećeg sadržaja, u poddirektoriju pz: ______________________________________________________________________ @ 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. ______________________________________________________________________ Dalje, trebat ćeš /etc/resolv.conf koji će izgledati slično ovome: ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr nameserver 127.0.0.1 ______________________________________________________________________ Linija `search' određuje koje će se domene pretraživati za neki host na kojeg se želiš spojiti. Linija `nameserver' određuje adresu na kojoj je imenski server, u ovom slučaju tvoj stroj jer je to adresa na kojoj radi named (127.0.0.1 je prava, i ako tvoj stroj ima i neku drugu adresu). Ako želiš više imenskih servera, stavi `nameserver' liniju za svaki. (Napomena: named nikada ne čita ovu datoteku, to radi resolver koji koristi named.) Da ilustriram što ova datoteka radi: ako klijent stroj pokuša odrediti adresu za bla, tada se prvo probava adresa bla.poddomena.tvoja- domena.hr, pa bla.tvoja-domena.hr, i posljednja bla. Ako klijent stroj pokuša odrediti adresu za hlapic.srce.hr, hlapic.srce.hr.poddomena.tvoja-domena.hr se pokuša prvo, pa hlapic.srce.hr.tvoja-domena.hr, i na kraju hlapic.srce.hr. Ne bi trebao staviti puno domena u search liniju, jer treba vremena dok se sve pretraže. Ovaj primjer pretpostavlja da si ti u domeni poddomena.tvoja- domena.hr, a tvoj stroj se vjerojatno zove tvoj-stroj.poddomena.tvoja- domena.hr. Search linija ne bi trebala sadržavati tvoju TLD/ND (_T_o_p _L_e_v_e_l _D_o_m_a_i_n, _N_a_j_v_i_š_a _D_o_m_e_n_a, `hr' u ovom slucaju). Ako se često trebaš spajati na strojeve u drugoj domeni, možeš tu domenu dodati u search liniju ovako: ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr ______________________________________________________________________ i tako dalje. Očito je da trebaš staviti prava imena domena umjesto ovih primjera. Uoči da nema točke na krajevima imena domena. Dalje, ovisno o verziji tvog libc-a ili trebaš popraviti /etc/nsswitch.conf ili /etc/host.conf. Ako već imaš /etc/nsswitch.conf, to je ono što ćemo popraviti, ako ne, popravit ćemo host.conf. _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f Ovo je duga datoteka koja određuje gdje dobiti različite vrste podataka, iz koje datoteke ili baze. Obično sadrži pomoćne komentare pri vrhu, koje bi trebao pročitati, sada. Nakon toga nađi liniju koja počinje sa `hosts:', i ona bi trebala biti ovakva: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ Ako ne postoji linija koja počinje s `hosts:', onda umetni onu gornju. Ona govori da programi prvo trebaju pogledati u /etc/hosts datoteku, i onda provjeriti kod DNS-a prema resolv.conf-u. _/_e_t_c_/_h_o_s_t_._c_o_n_f Ona vjerojatno sadrži puno linija, od kojih jedna počinje sa 'order' i treba izgledati ovako: ______________________________________________________________________ order hosts,bind ______________________________________________________________________ Ukoliko ne postoji `order' linija, trebaš ubaciti takvu. Ona govori da rutine za određivanje imena strojeva prvo gledaju u /etc/hosts, onda pitaju imenski server (za kog si rekao u resolv.conf-u da je 127.0.0.1). Ove dvije posljednje datoteke su dokumentirane u _r_e_s_o_l_v(8) man stranici (učini `man 8 resolv') u većini Linux distribucija. Ta man stranica je IMHO čitljiva, i svi, pogotovo DNS administratori, bi je trebali pročitati. Učini to sada, jer ako kažeš "napravit ću to kasnije" nikad se nećeš vratiti i učiniti to. 33..11.. SSttaarrttaannjjee nnaammeedd--aa Nakon svega, vrijeme je da startamo named. Ako modemski biraš providera, prvo se spoji. Otipkaj `ndc start', i pritisni enter, bez opcija. Ako to ne uspije, probaj `/usr/sbin/ndc start'. Ako ni to ne uspije, pročitaj poglavlje ``PiO''. Sada možeš testirati svoje postavke. Ako pogledaš svoju datoteku sa syslog porukama (obično se zove /var/adm/messages, drugi direktorij može biti /var/log, a druga datoteka syslog) dok startaš named (učini `tail -f /var/log/messages') trebao bi vidjeti nešto kao ovo: (linije koje završavaju sa \ nastavljaju se u sljedećem retku) 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. Ako je bilo ikakvih poruka o greškama, mora da je došlo do greške. named će imenovati datoteku u kojoj je (ili named.conf ili root.hints nadam se :-). Ubij (kill) named, vrati se i provjeri datoteku. Sada je vrijeme da startamo nslookup da pregledamo tvojih ruku djelo. $ nslookup Default Server: localhost Address: 127.0.0.1 > Ako je to sve što dobiješ, onda radi. Nadajmo se. Ako nije, vrati se i provjeri sve. Svaki put kad promijeniš named.conf datoteku, moraš ponovo startati named koristeći `ndc restart' naredbu. Sada možeš postaviti upit. Probaj pogledati ime stroja koji ti je blizu. jagor.srce.hr je meni blizu, na SRCE-u: > jagor.srce.hr Server: localhost Address: 127.0.0.1 Name: jagor.srce.hr Address: 161.53.2.130 nslookup je sada upitao tvoj named da potraži stroj jagor.srce.hr. On se onda spojio na jedan od imenskih servera navedenih u tvojoj root.hints datoteci, i upitao za put od tamo. Možda će trebati malo vremena dok ne dobiješ rezultat pošto on pretražuje sve domene koje si naveo u /etc/resolv.conf datoteci. Ako upitaš isto to ponovo, dobit ćeš ovo: > jagor.srce.hr Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: jagor.srce.hr Address: 161.53.2.130 Primijeti liniju `Non-authoritative answer:' koju smo ovaj put dobili. To znači da named ovaj put nije otišao tražiti po mreži, već je pogledao u svoj cache i našao ga tamo. Ali informacija u cache-u može biti zastarjela (_s_t_a_l_e). Tako da znaš za ovu (vrlo malu) opasnost kada dobiješ `Non-authoritative answer:'. Kada nslookup kaže ovo drugi put kada ti upitaš za stroj, to je siguran znak da named cache-ira informaciju i to radi. Iz nslookup-a izlaziš dajući naredbu `exit'. Sada znaš kako podesiti caching named. Popij pivo, mlijeko, ili što već voliš da to proslaviš. 44.. JJeeddnnoossttaavvnnaa ddoommeennaa.. KKaakkoo ppooddeessiittii vvllaassttiittuu ddoommeennuu.. 44..11.. AAllii pprrvvoo mmaalloo ssuuhhee tteeoorriijjee Prije nego što zapravo počnemo ovo poglavlje, reći ću ti malo o teoriji rada DNS-a. I ti ćeš to pročitati jer je to dobro za tebe. Ako ti se `ne da', ipak bi trebao nabrzinu prolistati. Prestani listati kada dođeš do dijela gdje se opisuje named.conf datoteka. DNS je hijerarhijski sustav. Vrh se piše `.' i čita `kkoorriijjeenn'. Ispod . su mnoge TToopp LLeevveell DDoommaaiinnss / NNaajjvviiššee DDoommeennee, a najpoznatije su ORG, COM, EDU i NET, ali postoje mnoge druge (HR, BA, SI, op.prev.). Kada traži stroj, upit prolazi rekurzivno kroz hijerarhiju počevši od vrha. Ako želiš saznati adresu stroja prep.ai.mit.edu, tvoj imenski server mora naći imenski server koji poslužuje edu. On pita . server (. serveri su mu već poznati, za to služi root.hints datoteka), a . server daje listu edu servera: $ nslookup Default Server: localhost Address: 127.0.0.1 Počnimo pitati korijenski server: > server c.root-servers.net. Default Server: c.root-servers.net Address: 192.33.4.12 Podesi tip upita (Query type) na NS (_n_a_m_e _s_e_r_v_e_r _r_e_c_o_r_d_s - podaci o imenskim serverima): > set q=ns Pitaj o edu: > edu. Zadnja . ovdje je važna, ona govori serveru da tražimo edu koji je baš ispod . (ovo nešto sužuje potragu). 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 Ovo nam govori da *.root-servers.net poslužuje edu., tako da možemo nastaviti pitati c.root-servers.net. Sada želimo znati tko poslužuje sljedeći nivo imena domene: 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 poslužuju mit, odaberi jednog i pitaj o ai.mit.edu: > server W20NS.mit.edu. Imena strojeva nisu ovisna o malim i velikim slovima, ali ja koristim svoj miš za cut&paste, tako da se imena iskopiraju točno kakva jesu na 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 Dakle muesli.ai.mit.edu je imenski server za ai.mit.edu: > server MUESLI.AI.MIT.EDU Default Server: MUESLI.AI.MIT.EDU Address: 128.52.39.7 Sada ću promijeniti tip upita, kada smo našli imenski server pa ćemo ga pitati sve što on zna 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 Tako smo počevši od . uspješno našli imenske servere za sljedeći nivo imena domene. Ako si koristio svoj DNS server umjesto ostalih, tvoj named bi naravno cache-irao sve informacije koje bi 'iskopao' za tebe, i ne bi to trebao pitati ponovo neko vrijeme. Domena o kojoj se puno manje govori, ali jednako važna domena je in- addr.arpa. Ona se također dijeli kao i `normalne' domene. in- addr.arpa nam dopušta da dobijemo ime stroja bez da imamo njegovu adresu. Važna stvar kod ovoga je da primijetiš da su IP-evi zapisani obrnutim redosljedom u in-addr.arpa. domeni. Ako imaš adresu stroja: 161.53.3.7, named je traži baš kao dns.srce.hr: traži arpa. servere. Traži u in-addr.arpa. serverima. Traži 161.in-addr.arpa. servere. Traži 53.161.in-addr.arpa. Traži 3.53.161.in-addr.arpa. servere. Traži potrebne podatke o 7.3.53.161.in-addr.arpa. serveru. Pametno, ha? (Reci `da'.) Obrtanje brojeva može biti zbunjujuće prve dvije godine, ipak. Upravo sam izrekao laž. DNS ne radi doslovno načinom kojim sam to upravo objasnio. Ali je dovoljno slično. 44..22.. NNaaššaa ddoommeennaa.. Sada ćemo definirati našu domenu. Napravit ćemo domenu linux.bogus i definirati strojeve u njoj. Koristim totalno neispravno ime domene (ali s točnom sintaksom) da ne bi smetali nikoga Tamo Vani. Još jedna stvar prije nego počnemo: nisu svi znakovi dozvoljeni u imenima strojeva. Ograničeni smo na slova engleske abecede: a-z, i brojevi 0-9 i znak `-' (crta). Drži se tih znakova. Velika i mala slova su ista DNS-u, tako da su dns.srce.hr i DNS.SRCE.Hr isto. Već smo započeli ovaj dio sa ovom linijom u datoteci named.conf: zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; Primijeti manjak znaka `.' na kraju imena domena u ovoj datoteci. Ovo govori da ćemo sada definirati zonu 0.0.127.in-addr.arpa, tako da smo glavni (_m_a_s_t_e_r) server za nju i da je ona pohranjena u datoteci @ 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. Primijeti znak `.' na kraju svih punih imena domena u ovoj datoteci, nasuprot gornjoj datoteci named.conf. Neki ljudi vole započeti svaku datoteku zone sa $ORIGIN direktivom, ali to je višak. Porijeklo (mjesto iz DNS hijerarhije gdje pripada) datoteke zone je određeno u 'zone' sekciji named.conf datoteke, u ovom slučaju to je 0.0.127.in- addr.arpa. Ova `ddaattootteekkaa zzoonnee' sadrži 3 `zzaappiissaa oo rreessuurrssuu' (_r_e_s_o_u_r_c_e _r_e_c_o_r_d, RR): SOA RR, NS RR, i PTR RR. SOA je skraćenica od _S_t_a_r_t _O_f _A_u_t_h_o_r_i_t_y (početak nadležnosti). Znak `@' je posebna oznaka koja znači porijeklo, i zato što `domain' kolona za ovu datoteku kaže 0.0.127.in- addr.arpa, prva linija zapravo znači: 0.0.127.in-addr.arpa. IN SOA ... NS je NNaammee SSeerrvveerr RRRR (imenski server). Nema znaka `@' na početku ove linije, ovo se nameće jer je zadnja linija započela sa `@'. To nas štedi od tipkanja. Tako da NS linija zapravo znači: 0.0.127.in-addr.arpa. IN NS ns.linux.bogus Ona govori DNS-u koji stroj je imenski server domene 0.0.127.in- addr.arpa, a to je ns.linux.bogus. 'ns' je suglasno ime za imenske servere, ali kako se web serveri koji se suglasno zovu www.nešto, to ime može biti bilo što. I konačno, PTR zapis govori da stroj na adresi 1 u podmreži 0.0.127.in-addr.arpa. odn. 127.0.0.1 se zove localhost. SOA zapis je uvod u svaku datoteku zone, i treba biti točno jedan takav zapis u svakoj datoteci zone, prvi zapis. On opisuje zonu, odakle dolazi (stroj zvan ns.linux.bogus), tko je odgovoran za njen sadržaj (hostmaster@linux.bogus), koja je ovo verzija datoteke zone (serial: 1) i ostale stvari koje imaju veze sa cache-iranjem i sekundarnim DNS serverima. Za ostala polja (refresh, retry, expire i minimum) koristi brojeve koji se koriste u ovom KAKO-u i trebao bi biti siguran. Sada restartaj svoj named (naredba je 'ndc restart') i upotrijebi nslookup da pregledaš što si napravio: $ 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 Dakle on uspijeva dobiti ime localhost iz adrese 127.0.0.1, dobro. Sada za naš glavni zadatak, domenu linux.bogus, ubaci novi 'zone' odjeljak u named.conf-u: ______________________________________________________________________ zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; }; ______________________________________________________________________ Primijeti nastavljeni nedostatak krajnjeg `.' na imenu domene u datoteci named.conf. U datoteci zone linux.bogus stavit ćemo neke totalno neispravne podatke (ali s točnom sintaksom): ______________________________________________________________________ ; ; Datoteka zone za domenu linux.bogus ; ; Puna datoteka zone ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, današnji datum + današnja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 1W ; expire, sekundi 1D ) ; minimum, sekundi ; NS ns ; internet adresa imenskog servera MX 10 mail.linux.bogus ; primarni Mail eXchanger MX 20 mail.friend.bogus. ; sekundarni Mail eXchanger ; localhost A 127.0.0.1 ns A 192.168.196.2 mail A 192.168.196.4 ______________________________________________________________________ Dvije stvari se moraju zapaziti kod SOA zapisa. ns.linux.bogus mora biti pravi stroj sa A zapisom (_A_d_d_r_e_s_s=adresa, op.prev.). Nije ispravno imati CNAME (_C_a_n_o_n_i_c_a_l _N_A_M_E=regularno ime, op.prev.) zapis za stroj koji se navede u SOA zapisu. Njegovo ime ne mora biti `ns', može biti bilo koje ispravno ime stroja. Dalje, hostmaster.linux.bogus treba biti pročitano kao hostmaster@linux.bogus, ovo treba biti mail alias (drugo ime e-maila), ili mailbox (e-mail 'sandučić'), gdje osoba(e) koja održava DNS redovno čita postu. Bilo kakav e-mail koji se tiče domene bit će poslan na adresu navedenu ovdje. Ime ne mora biti `hostmaster', može biti bilo kakva ispravna e-mail adresa, ali e- mail adresa `hostmaster' se očekuje da će također raditi. Postoji jedan novi zapis o resursu (RR) u ovoj datoteci, MMXX zzaappiiss, ili _M_a_i_l _e_X_c_h_a_n_g_e_r _R_R (zapis o resursu razmjenitelja pošte). On govori sustavima za poštu gdje slati poštu koja je adresirana na netko@linux.bogus, ustvari na mail.linux.bogus ili mail.friend.bogus. Broj ispred imena svakog stroja je prioritet tog MX RR-a. RR s najmanjim brojem (ovdje 10) je onaj kome će se e-mail slati prvom. Ako njemu ne uspije, pošta će biti poslana onome s prvim većim brojem, sekundarnim strojem za poštu, npr. mail.friend.bogus koji ovdje ima prioritet 20. Restartaj named pokrećući 'ndc restart'. Pregledaj rezultate sa nslookup-om: $ 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 Nakon pažljivijeg pregleda otkrit ćeš grešku. Linija: linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus je neispravna. Ona treba biti: linux.bogus preference = 10, mail exchanger = mail.linux.bogus Namjerno sam napravio grešku da bi ti mogao učiti iz nje :-) Gledajući u datoteku zone naći ćemo liniju: MX 10 mail.linux.bogus ; primarni Mail eXchanger kojoj nedostaje točka. Ili ima 'linux.bogus' viška. Ako ime stroja u datoteci zone ne završava točkom, porijeklo se dodaje na njen kraj uzrokujući dvostruki linux.bogus.linux.bogus. Dakle ili: ______________________________________________________________________ MX 10 mail.linux.bogus. ; primarni Mail eXchanger ______________________________________________________________________ ili: ______________________________________________________________________ MX 10 mail ; primarni Mail eXchanger ______________________________________________________________________ je ispravno. Ja više volim zadnji oblik, kraći je za tipkanje. Postoje neki bind znalci koji se ne slažu, a i neki koji se slažu s ovim. U datoteci zone zapis bi trebao završavati s domenom i točkom, ili bez ičega, u tom slučaju bi se nadopunio porijeklom. Moram naglasiti da u datoteci named.conf ne smije biti `.' nakon imena domena. Nemaš pojma koliko puta je `.' viška ili manjka 'sredila' stvari i užasno zbunila ljude. Nakon što sam ovo naglasio, evo nove datoteke zone, sa nekim dodatnim informacijama: ______________________________________________________________________ ; ; Datoteka zone za domenu linux.bogus ; ; Puna datoteka zone ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, današnji datum + današnja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 1W ; expire, sekundi 1D ) ; minimum, sekundi ; TXT "Linux.Bogus, tvoj DNS savjetnik" NS ns ; internet adresa imenskog servera NS ns.friend.bogus. MX 10 mail ; primarni Mail eXchanger MX 20 mail.friend.bogus. ; sekundarni Mail eXchanger localhost A 127.0.0.1 gw A 192.168.196.1 HINFO "Cisco" "IOS" TXT "The 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" ______________________________________________________________________ Više je novih RR-ova ovdje: HHIINNFFOO (_H_o_s_t _I_N_F_O_r_m_a_t_i_o_n=informacije o stroju) ima dva dijela, dobra je navika staviti ih u navodnike. Prvi dio je hardver ili CPU na stroju, a drugi dio je softver ili OS na stroju. Stroj zvan `ns' ima Pentium CPU i radi pod Linuxom 2.0. CCNNAAMMEE (_C_a_n_o_n_i_c_a_l _N_A_M_E) je način da date svakom stroju više imena. Tako je `www' drugo ime za `ns'. Korištenje CNAME zapisa je i osporavano. Ali je sigurno postupati po pravilu da MX, CNAME ili SOA zapis ne smiju nikad upućivati na CNAME zapis, već na nešto sa A zapisom, i bilo bi krivo imati: ______________________________________________________________________ bla CNAME www ; NE! ______________________________________________________________________ ali ispravno imati: ______________________________________________________________________ bla CNAME ns ; Da! ______________________________________________________________________ Također je sigurno pretpostaviti da CNAME nije ispravno ime stroja za e-mail adresu: webmaster@www.linux.bogus je neispravna e-mail adresa prema gornjim postavkama. Možeš očekivati vrlo mali broj admina Tamo Vani koji će primijeniti ovo pravilo i ako ono vrijedi tebi. Način kako izbjeći ovo je koristeći A zapise (i možda neke druge, kao MX zapis): ______________________________________________________________________ www A 192.168.196.2 ______________________________________________________________________ Velik broj starih bind stručnjaka preporučuje ne koristiti CNAME. Zato vrlo ozbiljno razmisli o ne korištenju toga. Ali kako vidiš, ovaj KAKO i puno mjesta ne prate to pravilo. Učitaj novu bazu podataka pokrećući 'ndc reload', što uzrokuje da named ponovo pročita svoje datoteke. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Ovo znači da će se izlistati svi zapisi. To rezultira ovim: [localhost] $ORIGIN linux.bogus. @ 1D IN SOA ns hostmaster ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum 1D IN NS ns 1D IN NS ns.friend.bogus. 1D IN TXT "Linux.Bogus, tvoj DNS savjetnik" 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 "The 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 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum To je dobro. Kako vidiš, izgleda vrlo slično samoj datoteci zone. Provjerimo što kaže za samog www-a: > 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 Drugim riječima, pravo ime za www.linux.bogus je ns.linux.bogus, i daje ti neke informacije o ns-u također, dovoljno da se spojiš na njega da si program. Sada smo na pola puta. 44..33.. OObbrrnnuuttaa zzoonnaa.. Sada programi mogu prebacivati imena u linux.bogus-u u adrese na koje se mogu spojiti. Ali također je potrebna i obrnuta zona, koja omogućuje da DNS prebacuje iz adrese u ime. Ovo ime je korišteno kod mnogih servera raznih vrsta (FTP, IRC, WWW i drugi) da bi odredili da li će pričati s tobom ili ne, i ako da, možda i koliko će ti prioriteta pridati. Za puni pristup svim uslugama na Internetu potrebna je obrnuta zona. Stavi ovo u named.conf: ______________________________________________________________________ zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; }; ______________________________________________________________________ Ovo je upravo kako sa 0.0.127.in-addr.arpa, a i sadržaj je sličan: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, današnji datum + današnja revizija 8H ; Refresh 2H ; Retry 1W ; Expire 1D) ; Minimum 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 ftp.linux.bogus. ______________________________________________________________________ Sada trebaš opet restartati svoj named (ndc restart) i pregledati svoj rad sa nslookup-om: > 192.168.196.4 Server: localhost Address: 127.0.0.1 Name: mail.linux.bogus Address: 192.168.196.4 tako, izgleda OK, neka izbaci cijelu stvar da i to pregledaš: > 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 ftp.linux.bogus. @ 1D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 1W ; expiry 1D ) ; minimum Izgleda dobro! Postoji nekoliko stvari koje bi trebao dodati ovdje. IP brojevi korišteni gore su uzeti iz jednog od blokova 'privatnih mreža', koji nisu dopušteni za javnu upotrebu na Internetu. Zato su prikladni i sigurni kao primjer u ovom KAKO-u. Druga stvar je 'notify no;' linija. Ona govori namedu da ne obavijesti svoje sekundarne (_s_l_a_v_e=ropske) servere kada se dogodi promjena u jednoj od datoteka zona. U bindu 8 named može obavijestiti ostale servere navedene u NS zapisima u datoteci zone kada je zona promijenjena. Ovo je zgodno za uobičajenu upotrebu, ali za privatne pokuse sa zonama ova funkcija treba biti isključena, ne želimo da pokus zagadi Internet, zar ne? I, naravno, ova domena je stvarno neispravna, kao i sve adrese u njoj. Za pravi primjer domene iz stvarnosti pogledaj sljedeće poglavlje. 55.. PPrriimmjjeerr pprraavvee ddoommeennee ((uu kkoojjeemm ććeemmoo ppookkaazzaattii nneekkee pprraavvee ddaattootteekkee zzoonnee)) Korisnici su predložili da uključim pravi primjer radeće domene kao i školski primjer. Koristim ovaj primjer sa dozvolom Davida Bullocka iz LAND-5. Ove datoteke su bile aktualne 24. rujna 1996., i uređivane su da se uklope u bind-8 ograničenja i koriste moje nadopune. Tako da ovo što vidite ovdje se razlikuje ponešto od onoga što ćete dobiti ako postavite upit LAND-5-ovim imenskim serverima sada. 55..11.. //eettcc//nnaammeedd..ccoonnff ((iillii //vvaarr//nnaammeedd//nnaammeedd..ccoonnff)) Ovdje nalazimo master zone sekcije za dvije potrebne obrnute zone: mreža 127.0.0, kao i LAND-5-ova 206.6.177 podmreža. I primary liniju za LAND-5-ovu forward zonu land-5.com. Također primijeti da se umjesto stavljanja datoteka u direktorij zvan 'pz', kako ja to radim u ovom KAKO-u, on ih stavlja u direktorij zvan 'zone'. ______________________________________________________________________ // Boot file for LAND-5 name server 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"; }; ______________________________________________________________________ Ako ovo staviš u svoju named.conf datoteku za igru, MMOOLLIIMM TTEE stavi: 'notify no;' u zone sekcije za dvije land-5 zone, tako da izbjegnemo nezgode. 55..22.. //vvaarr//nnaammeedd//rroooott..hhiinnttss Ne zaboravi da je ova datoteka dinamička, i da je ova navedena ovdje stara. Bolje ti je da koristiš onu napravljenu sada, sa dig-om, kao što je to objašnjeno prije. ______________________________________________________________________ ; <<>> 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 Samo osnove, obavezni SOA zapis, i zapis koji određuje 127.0.0.1 kao localhost. Oba su nužna. Ništa više ne treba biti u ovoj datoteci. Ona se vjerojatno nikad neće morati mijenjati, osim ako se adresa tvog imenskog servera ili hostmastera promijeni. ______________________________________________________________________ @ 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 Ovdje vidimo obavezni SOA zapis, i potrebne NS zapise. Možemo vidjeti da on ima sekundarni name server na ns2.psi.net. Ovo je kako treba biti, uvijek treba imati vanjski site za sekundarni server kao rezervnu kopiju. Možemo također vidjeti da on ima glavni stroj zvan land-5 koji se brine o mnogim Internet uslugama, i da je to napravio sa CNAME-ovima (alternativa je korištenje A zapisa). Kao što vidiš iz SOA zapisa, datoteka zone dolazi iz land-5.com, osoba za kontakt je root@land-5.com. 'hostmaster' je još jedna često korištena adresa za odgovornu osobu. Serijski broj je u suglasnom ggggmmdd formatu sa današnjom revizijom dodanom; ovo je vjerojatno šesta inačica datoteke zone dana 20. rujna 1996.g. Zapamti da se serijski broj mora monotono povećavati, ovdje je samo jedna brojka za današnji serijski broj, tako da nakon 9 uređivanja on mora čekati do sutra prije nego što promijeni datoteku ponovo. Razmisli o korištenju dvije brojke. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, danasnji datum + danasnja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 1W ; expire, sekundi 1D ) ; minimum, sekundi NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; primarni 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" ; ; Radne stanice ; 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 ; {Puno ponovljenih definicija obrisano - 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 ______________________________________________________________________ Ako pregledaš land-5 imenski server naći ćeš da su imena strojeva u obliku ws_broj. Nakon kasnijih bind 4 verzija named je počeo uvoditi ograničenja u znakovima koji se smiju koristiti u imenima strojeva. Tako da to uopće ne radi sa bind-8, i '_' (podvlaka) se zamjenjuje sa '-' (crta). Još jednu stvar treba primijetiti, a ta je da radne stanice nemaju individualna imena, već prefiks popraćen sa zadnja dva dijela IP broja. Koristeći takav sustav možeš znatno pojednostaviti održavanje, ali to može biti neosobno, i ustvari izvor nezadovoljstva među tvojim korisnicima. Također vidimo da je funn.land-5.com alias za land-5.com, ali koristeći A zapis, ne CNAME zapis. 55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Ovu datoteku ću komentirati nakon nje. ______________________________________________________________________ @ 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. ; ; Serveri ; 1 PTR router.land-5.com. 2 PTR land-5.com. 2 PTR funn.land-5.com. ; ; Radne stanice ; 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. ; {Puno ponovljenih definicija obrisano - SNIP} 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. ______________________________________________________________________ Obrnuta zona je dio podešavanja koji izgleda uzrokuje najviše nevolja. Koristi se da se nađe ime stroja ako imaš IP broj istog. Primjer: ti si IRC server i prihvaćaš veze od IRC klijenata. Ipak, ti si norveški IRC server tako da želiš prihvatiti veze samo iz Norveške i ostalih skandinavskih zemalja. Kada uspostaviš vezu s klijentom, C library može ti reći IP broj drugog stroja zato što se IP broj klijenta pojavljuje u svim paketima koji prolaze mrežom. Sada možeš pozvati funkciju 'gethostbyaddr' koja pogleda ime stroja određenog IP brojem. gethostbyaddr će pitati DNS server, koji će onda pregledati DNS tražeći stroj. Pretpostavimo da se klijent spaja sa adrese ws-177200.land-5.com. IP broj kojeg C library daje IRC serveru jest 206.6.177.200. Da bismo saznali ime tog stroja, moramo naći 200.177.6.206.in-addr.arpa. DNS server će prvo naći arpa. servere, pa in-addr.arpa. servere, prateći obrnuti trag kroz 206, pa 6, i na kraju će naći server za 177.6.206.in-addr.arpa zonu na land-5. Iz toga će finalno dobiti odgovor da za 200.177.6.206.in-addr.arpa imamo 'PTR ws-177200.land-5.com' zapis, što znači da ime koje ide uz 206.6.177.200 jest ws-177200.land-5.com. Kao i objašnjenje kako se pogleda prep.ai.mit.edu, i ovo je malo fiktivno. Da se vratimo na primjer IRC servera. IRC server prihvaća samo veze iz skandinavskih zemalja, odn. *.no, *.se, i *.dk, pa ime ws-177200.land-5.com očito ne zadovoljava nijedan uvjet, i server će se odbiti povezati. Kad ne bi postojalo reverzno mapiranje IP-a 206.2.177.200 kroz in-addr.arpa zonu, server ne bi nikako mogao naći ime stroja, i morao bi usporediti 206.2.177.200 sa *.no, *.se, i *.dk, što naravno ne bi uspjelo. Neki ljudi će ti reći da je reverzno mapiranje važno samo za servere, ili nije uopće. Nije tako, jer puno FTP, NNTP (news), IRC pa čak i neki HTTP (www) serveri neće prihvatiti veze sa strojevima čije ime ne mogu pronaći. Tako da je reverzno mapiranje za strojeve obavezno. 66.. OOddrržžaavvaannjjee.. SSaammoo nneekkaa rraaddii.. Jedna je zadaća potrebna za održavanje nameda, osim da ih puštaš da rade. To je redovno mijenjanje root.hints datoteke. Najlakši način je korištenje programa `dig'. Prvo pokreni dig bez parametara, i dobit ćeš root.hints svog servera. Onda pitaj jedan od izlistanih korijenskih servera sa 'dig @rootserver'. Vidjet ćeš da izlazni podaci jako sliče onima u root.hints datoteci. Sačuvaj ih u datoteku (dig @e.root-servers.net . ns > root.hints.new) i zamijeni staru root.hints datoteku s novom (root.hints.new). Zapamti da treba restartati named nakon promjene cache datoteke. Al Longyear mi je poslao ovu skriptu koja se može pokrenuti automatski da obnovi root.hints, unesena u crontab da se pokrene jednom mjesečno i zaboravi. Ova skripta pretpostavlja da imaš podešen i radeći e-mail, te da je alias `hostmaster' definiran. Moraš je hackirati da je uskladiš sa svojim postavkama. (sačuvati kao izvršnu datoteku /etc/cron.monthly/hints.new op.prev.) ______________________________________________________________________ #!/bin/sh # # Update the nameserver cache information file once per month. # This is run automatically by a cron entry. # ( echo "To: hostmaster " echo "From: system " echo "Subject: Automatic update of the named.conf file" echo export PATH=/sbin:/usr/sbin:/bin:/usr/bin: cd /var/named dig @rs.internic.net . ns >root.hints.new echo "The named.conf file has been updated to contain the following information:" 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 "The nameserver has been restarted to ensure that the update is complete." echo "The previous root.hints file is now called /var/named/root.hints.old." ) 2>&1 | /usr/lib/sendmail -t exit 0 ______________________________________________________________________ Neki su možda vidjeli root.hints datoteku koja je dostupna FTP-om od InterNIC-a. Molim vas, nneemmoojjttee koristiti FTP da obnovite root.hints, jer je gornja metoda puno sklonija mreži. 77.. PPrreebbaacciivvaannjjee ss vveerrzziijjee 44 nnaa vveerrzziijjuu 88 Ovo je originalno bilo poglavlje kako koristiti bind 8 koje je napisao David E. Smith, dave@bureau42.ml.org. Uredio sam ga da odgovara novom imenu poglavlja. Nema puno posla. Osim što se koristi named.conf umjesto named.boot datoteke, sve je identično. I bind8 dolazi sa perl skriptom koja prevodi stare datoteke u nove. Primjer stare named.boot datoteke za caching only imenski server: ______________________________________________________________________ directory /var/named cache . root.hints primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone primary localhost localhost.zone ______________________________________________________________________ Ukoliko imaš source distribuciju, na komandnoj liniji, u bind8/src/bin/named direktoriju ćeš otipkati sljedeće: (Ako imaš binarni paket, skripta je vjerojatno tu negdje, ali nisam siguran gdje op.a.). ./named-bootconf.pl < named.boot > named.conf I to će napraviti ovakav 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"; }; ______________________________________________________________________ Radi za sve što može biti u named.boot datoteci, mada ne dodaje sva nova unapređenja i konfiguracijske opcije koje dopušta bind8. Evo kompletnijeg named.conf-a koji radi isto to, samo malo učinkovitije. ______________________________________________________________________ // This is a configuration file for named (from BIND 8.1 or later). // It would normally be installed as /etc/named.conf. // The only change made from the `stock' named.conf (aside from this // comment :) is that the directory line was uncommented, since I // already had the zone files in /var/named. options { directory "/var/named"; check-names master warn; /* default. */ 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 ima ovo, i kopije datoteka zona, koje mnogi ljudi mogu samo ubaciti i odmah koristiti. Formati datoteka zona i root.hints datoteke su identični, kao i naredbe za njihovo mijenjanje. 88.. PPiittaannjjaa ii OOddggoovvoorrii Molim te, pročitaj ovo poglavlje prije nego mi e-mailaš. 1. Moj named traži datoteku named.boot. Čitaš krivi KAKO (HOWTO). Molim pogledati staru verziju ovog HOWTO- a, koja pokriva bind 4, na . 2. Kako koristiti DNS unutar firewalla? Par sugestija: `forwarders', `slave', i pogledaj listu literature na kraju ovog KAKO-a. 3. Kako da učinim da DNS kruži kroz dostupne adrese za uslugu, recimo www.busy.site da dobije load balancing efekt, ili nešto slično? Napravi više A zapisa za www.busy.site i koristi bind 4.9.3 ili noviji. Tada će bind srediti odgovore. Neće raditi s ranijim verzijama binda. 4. Želim podestiti DNS na (zatvorenom) intranetu. Što da radim? Izbaci root.hints datoteku i samo podesi datoteke zone. To također znači da ne moraš nabavljati novu datoteku root.hints cijelo vrijeme. 5. Kako da podesim sekundarni (slave) imenski server? Ako primarni/glavni server ima adresu 127.0.0.1, stavi liniju kao ovu u named.conf datoteku svog sekundarnog servera: ___________________________________________________________________ zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 127.0.0.1; }; }; ___________________________________________________________________ Možeš navesti više alternativnih master servera zone, unesi ih u masters listu, odvojene znakom ';' (točka-zarez). 6. Želim da bind radi dok sam van mreže. Postoje dvije stvari vezane za ovo: ˇ Dobio sam ovaj e-mail od Iana Clarka, ic@deakin.edu.au, gdje on objašnjava kako to učiniti: Ja pokrećem named na svom 'masquerading' stroju. Imam dvije root.hints datoteke, jedna se zove root.hints.real i sadrži prava imena korijenskih servera, i druga koja se zove root.hints.fake koja sadrži: ---- ; root.hints.fake ; this file contains no information ---- Kada odlazim s mreže (off line), kopiram root.hints.fake u root.hints i restartam named. Kada idem na mrežu (on line), kopiram root.hints.real u root.hints i restartam named. Ovo se radi automatski iz ip-down i ip-up skripti. Prvi put kada radim upit off line na imenu domene named nema detalje za nju i stavlja ovo u (/var/log/)messages: Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN i s tim mogu živjeti. To svakako radi za mene. Mogu koristiti imenski server za lokalne strojeve dok sam van mreže bez timeout zastoja za vanjska imena domena, a dok sam na mreži, upiti za vanjske domene rade normalno. ˇ Također sam dobio informaciju kako bind radi interaktivno s NFS-om i portmapper-om na većinom offline stroju, od Karl-Maxa Wangera: Ja obično pokrećem svoj named na svim svojim strojevima koji se tek povremeno vezuju na Internet modemom. Imenski server služi samo kao cache, nema svoju domenu i sve provjerava kod imenskih servera u root.cache datoteci. Kao što je to uobičajeno kod Slackware-a, starta se prije nfsd-a i mountd-a. Na jednom mom stroju (Libretto 30 prijenosnik) imao sam problem takav da sam ga nekad mogao mapirati s drugog stroja na lokalnom LAN-u, ali većinu vremena to nije radilo. Isto se događalo neovisno da li sam koristio PLIP, PCMCIA ethernet karticu ili PPP preko serijske veze. Nakon nekog vremena nagađanja i eksperimentiranja shvatio sam izgleda da je named brljao s procesom registracije nfsd-a i mountd-a koji oni moraju proći s portmapperom na dizanju sustava (startam te demone pri dizanju kao i obično). Startanje named-a nakon nfsd-a i mountd-a potpuno je uklonilo ovaj problem. Kako ne treba očekivati bilo kakve probleme pri takvoj izmijenjenoj sekvenci dizanja sustava, preporučio bih svima da to naprave na taj način i spriječe mogući problem. 7. Gdje caching only imenski server drži svoj cache? Postoji li način da kontroliram veličinu cachea? Kompletan se cache drži u memoriji, i nikad se ne zapisuje na disk. Svaki put kad ubiješ named, cache se gubi. Cache se nikako ne može kontrolirati. named ga nadgleda prema nekim jednostavnim pravilima i to je to. Ne možeš kontrolirati cache niti njegovu veličinu ni iz kojeg razloga. Ako to želiš, možeš to 'popraviti' hackirajući named. Ipak, ovo nije preporučeno. 8. Da li named čuva cache između restarta? Mogu li ga natjerati da ga sačuva? Ne, named ne sačuva cache kada umre. To znači da se cache mora ponovo graditi svaki put kada ubiješ i restartaš named. Nema načina da natjeraš named da sačuva cache u datoteku. Ako to želiš, možeš to 'popraviti' hackirajući named. Ipak, ovo nije preporučeno. 99.. KKaakkoo ppoossttaattii vveeććii DDNNSS aaddmmiinn.. DDookkuummeennttaacciijjaa ii aallaattii.. Prava Dokumentacija postoji. Na mreži i tiskana. Čitanje nekoliko knjiga je potrebno da od malog DNS admina postaneš veliki admin. Od tiskanih izdanja standard je '_D_N_S _a_n_d _B_I_N_D' od C. Liu i P. Albitz, tiskao O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Pročitao sam je, odlična je. Postoji i sekcija o DNS-u u '_T_C_P_/_I_P _N_e_t_w_o_r_k _A_d_m_i_n_i_s_t_r_a_t_i_o_n', Craig Hunt, tiskao O'Reilly..., ISBN 0-937175-82-X. Još jedan must za dobru DNS administraciju (ili bilo što dobro u tom smislu) je '_Z_e_n _a_n_d _t_h_e _A_r_t _o_f _M_o_t_o_r_c_y_c_l_e _M_a_i_n_t_e_n_a_n_c_e', Robert M. Prising :-), ISBN 0688052304, i drugi. Na mreži ćeš naći stvari na , ; _F_A_Q, referentne upute (_B_O_G; _B_i_n_d _O_p_e_r_a_t_i_o_n_s _G_u_i_d_e) kao i papiri i definicije protokola i DNS hackovi (ovi, i većina, ako ne i svi, od RFC-ova navedenih dolje, su distribuirani sa samim bindom). Nisam pročitao većinu ovih, pa ni ja nisam veliki DNS admin. Arnt Gulbrandsen je pročitao _B_O_G i on je u ekstazi zbog toga :-). USENET grupa comp.protocols.tcp-ip.domains je o DNS-u. U dodatku, postoji i veliki broj RFC-ova o DNSu, a najvažniji su navjerojatnije ovi: 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, ovo je dostupno 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. .