DNS KAKO Nicolai Langfeldt, janl@math.uio.no; preveo Josip Rodin, jrodin@jagor.srce.hr inacica 1.1, 20. srpnja 1999. (u originalu verzija 2.0.8) KAKO postati mali DNS administrator. ______________________________________________________________________ Sadrzaj 1. Uvod 1.1 Pravne stvari 1.2 Zasluge i poziv za pomoc 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 Nasa 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. Odrzavanje. 7. Prebacivanje s verzije 4 na verziju 8 8. Pitanja i Odgovori 9. Kako postati veci DNS admin. ______________________________________________________________________ 11.. UUvvoodd Kljucne rijeci: 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 ppoommoocc Zelio bih zahvaliti Arntu Gulbrandsenu koji je citao nedovrsene dijelove ovoga nebrojeno puta i dao puno korisnih prijedloga. Takoder bih zelio zahvaliti ljudima koji su e-mailali prijedloge i biljeske. Ovo nikada nece biti zavrsen dokument, molim vas saljite mi e-mail o vasim problemima i uspjesima, to moze poboljsati HOWTO. Dakle, molim vas, saljite novac, komentare i/ili pitanja na janl@math.uio.no. Ako posaljete e-mail i zelite odgovor, molim vas da provjerite je li povratna adresa ispravna i da radi. Takoder, molim vas, procitajte ``PiO'' poglavlje prije nego mi e-mailate. Ako zelis 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 posvecen Anne Line Norheim Langfeldt. Mada ga ona vjerojatno nikada nece procitati jer ona nije takav tip djevojke. 22.. UUppoozznnaavvaannjjee.. SSttoo oovvoo jjee,, aa ssttoo nniijjee.. Za pocetnike, DNS znaci _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 koristeci Linux sustav. Mapiranje je jednostavno povezivanje dviju stvari, u ovom slucaju imena stroja, kao ftp.linux.org, i IP adrese stroja, kao 199.249.150.4. DNS je, neupoznatom (tebi ;-), jedno od mracnih podrucja administriranja mreze. Ovaj KAKO ce pokusati uciniti neke stvari jasnijima. On opisuje kako podesiti jednostavan DNS server. Pocet cemo sa caching only serverom da bi dosli do podesavanja primarnog DNS imenskog servera za domenu. Za kompleksnije postavke mozes pogledati ``PiO'' poglavlje ovog dokumenta. Ako to nije opisano tamo trebat ces procitati Pravu Dokumentaciju. Sto je i od cega se sastoji Prava Dokumentacija bit ce objasnjeno u ``zadnjem poglavlju''. Prije nego pocnes s ovim, trebao bi konfigurirati svoj stroj tako da se mozes telnetirati na i s njega, i uspjesno uspostaviti sve vrste veza na mrezu, i posebno bi trebao moci se telnetirati na 127.0.0.1 i time doci na svoj stroj (probaj sad!). Na pocetku takoder trebas ispravan /etc/nsswitch.conf (ili /etc/host.conf), /etc/resolv.conf i /etc/hosts datoteku, jer njihovu funkciju ovdje necu objasniti. Ako ovo vec nemas podeseno i u radu, _N_E_T_-_3 i _P_P_P_-_H_O_W_T_O objasnjavaju kako to podesiti. Procitaj ih. Kada kazem 'tvoj stroj', mislim na stroj na kojem pokusavas podesiti DNS. Ne na niti jedan drugi stroj koji imas, a koji je ukljucen u tvoje mrezne napore. Pretpostavit cu da nisi iza bilo kakvog firewalla koji blokira upite o imenima. Ako jesi, trebat ces posebnu konfiguraciju, i pogledaj poglavlje ``PiO''. Opsluzivanje imenima na Unixu je omoguceno programom zvanim named. On je dio bind paketa kojim koordinira Paul Vixie uime Internet Software Consortium-a. named je ukljucen u vecinu Linux distribucija i obicno je instaliran kao /usr/sbin/named. Ako imas named, vjerojatno ga mozes i koristiti; ako ga nemas, nabavi ga binarnog sa Linux FTP lokacije, ili nadi 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 jos uvijek dostupna na u slucaju da koristis bind 4 (nazalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako named-ova man stranica govori o named.conf, imas bind 8, a ako govori o datoteci named.boot, imas bind 4. Ako imas 4 i brines o sigurnosti, stvarno bi trebao nadograditi na noviju 8-icu. DNS je baza podataka cijele mreze. Pazi sto ces staviti u nju. Ako stavis smece u nju, ti i drugi cete dobiti smece iz nje. Odrzavaj svoj DNS urednim i dosljednim i dobro ce te sluziti. Nauci ga koristiti, administrirati, ispravljati greske i bit ces jos jedan dobar administrator koji cuva mrezu od padanja na koljena, pretrpanu zbog krivog upravljanja. U ovom dokumentu navest cu sigurno nekoliko stvari koje nisu sasvim istinite (one su makar polovicno istinite ipak). To je sve u interesu jednostavnosti. Stvari ce (vjerojatno ;-) raditi ako budes vjerovao onom sto cu reci. NNaappoommeennaa:: pravi rezervne (backup) kopije svih datoteka koje ti nalozim da promijenis ako ih vec imas, tako da ako nista ne bude radilo nakon ovoga, mozes 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 ce naci odgovor na upite o imenima i zapamtiti odgovor sljedeci put kad ga budes trebao. Ovo ce znatno skratiti vrijeme cekanja sljedeci put, posebno ako si na sporoj vezi. Prvo ces trebati datoteku zvanu /etc/named.conf. Ona je procitana kad se pokrece named. Za sada ona treba sadrzavati samo ovo: ______________________________________________________________________ // Konfiguracijska datoteka za caching only imenski server options { directory "/var/named"; // Odkomentiravanje ovoga moze pomoci ako moras proci kroz // firewall, a stvari bas 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 potrazi datoteke. Sve datoteke nazvane slicno ce biti relativne ovome. Takoder, 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 sadrzavati 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 odrzavati. Pogledaj poglavlje ``Odrzavanje.'' za upute kako ih osvjezavati. Sljedeci odjeljak u named.conf datoteci je opis zone. Objasnit cu njenu upotrebu u kasnijim poglavljima, zasad samo napravite datoteku zvanu 127.0.0 sljedeceg sadrzaja, 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 ces /etc/resolv.conf koji ce izgledati slicno ovome: ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr nameserver 127.0.0.1 ______________________________________________________________________ Linija `search' odreduje koje ce se domene pretrazivati za neki host na kojeg se zelis spojiti. Linija `nameserver' odreduje adresu na kojoj je imenski server, u ovom slucaju 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 zelis vise imenskih servera, stavi `nameserver' liniju za svaki. (Napomena: named nikada ne cita ovu datoteku, to radi resolver koji koristi named.) Da ilustriram sto ova datoteka radi: ako klijent stroj pokusa 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 pokusa odrediti adresu za hlapic.srce.hr, hlapic.srce.hr.poddomena.tvoja-domena.hr se pokusa 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 pretraze. 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 sadrzavati tvoju TLD/ND (_T_o_p _L_e_v_e_l _D_o_m_a_i_n, _N_a_j_v_i_s_a _D_o_m_e_n_a, `hr' u ovom slucaju). Ako se cesto trebas spajati na strojeve u drugoj domeni, mozes tu domenu dodati u search liniju ovako: ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr ______________________________________________________________________ i tako dalje. Ocito je da trebas staviti prava imena domena umjesto ovih primjera. Uoci da nema tocke na krajevima imena domena. Dalje, ovisno o verziji tvog libc-a ili trebas popraviti /etc/nsswitch.conf ili /etc/host.conf. Ako vec imas /etc/nsswitch.conf, to je ono sto cemo popraviti, ako ne, popravit cemo host.conf. _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f Ovo je duga datoteka koja odreduje gdje dobiti razlicite vrste podataka, iz koje datoteke ili baze. Obicno sadrzi pomocne komentare pri vrhu, koje bi trebao procitati, sada. Nakon toga nadi liniju koja pocinje sa `hosts:', i ona bi trebala biti ovakva: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ Ako ne postoji linija koja pocinje 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 sadrzi puno linija, od kojih jedna pocinje sa 'order' i treba izgledati ovako: ______________________________________________________________________ order hosts,bind ______________________________________________________________________ Ukoliko ne postoji `order' linija, trebas ubaciti takvu. Ona govori da rutine za odredivanje 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 (ucini `man 8 resolv') u vecini Linux distribucija. Ta man stranica je IMHO citljiva, i svi, pogotovo DNS administratori, bi je trebali procitati. Ucini to sada, jer ako kazes "napravit cu to kasnije" nikad se neces vratiti i uciniti to. 33..11.. SSttaarrttaannjjee nnaammeedd--aa Nakon svega, vrijeme je da startamo named. Ako modemski biras 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, procitaj poglavlje ``PiO''. Sada mozes testirati svoje postavke. Ako pogledas svoju datoteku sa syslog porukama (obicno se zove /var/adm/messages, drugi direktorij moze biti /var/log, a druga datoteka syslog) dok startas named (ucini `tail -f /var/log/messages') trebao bi vidjeti nesto kao ovo: (linije koje zavrsavaju sa \ nastavljaju se u sljedecem 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 greskama, mora da je doslo do greske. named ce 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 sto dobijes, onda radi. Nadajmo se. Ako nije, vrati se i provjeri sve. Svaki put kad promijenis named.conf datoteku, moras ponovo startati named koristeci `ndc restart' naredbu. Sada mozes 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 potrazi 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. Mozda ce trebati malo vremena dok ne dobijes rezultat posto on pretrazuje sve domene koje si naveo u /etc/resolv.conf datoteci. Ako upitas isto to ponovo, dobit ces 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 znaci da named ovaj put nije otisao traziti po mrezi, vec je pogledao u svoj cache i nasao ga tamo. Ali informacija u cache-u moze biti zastarjela (_s_t_a_l_e). Tako da znas za ovu (vrlo malu) opasnost kada dobijes `Non-authoritative answer:'. Kada nslookup kaze ovo drugi put kada ti upitas za stroj, to je siguran znak da named cache-ira informaciju i to radi. Iz nslookup-a izlazis dajuci naredbu `exit'. Sada znas kako podesiti caching named. Popij pivo, mlijeko, ili sto vec volis da to proslavis. 44.. JJeeddnnoossttaavvnnaa ddoommeennaa.. KKaakkoo ppooddeessiittii vvllaassttiittuu ddoommeennuu.. 44..11.. AAllii pprrvvoo mmaalloo ssuuhhee tteeoorriijjee Prije nego sto zapravo pocnemo ovo poglavlje, reci cu ti malo o teoriji rada DNS-a. I ti ces to procitati jer je to dobro za tebe. Ako ti se `ne da', ipak bi trebao nabrzinu prolistati. Prestani listati kada dodes do dijela gdje se opisuje named.conf datoteka. DNS je hijerarhijski sustav. Vrh se pise `.' i cita `kkoorriijjeenn'. Ispod . su mnoge TToopp LLeevveell DDoommaaiinnss / NNaajjvviissee DDoommeennee, a najpoznatije su ORG, COM, EDU i NET, ali postoje mnoge druge (HR, BA, SI, op.prev.). Kada trazi stroj, upit prolazi rekurzivno kroz hijerarhiju pocevsi od vrha. Ako zelis saznati adresu stroja prep.ai.mit.edu, tvoj imenski server mora naci imenski server koji posluzuje edu. On pita . server (. serveri su mu vec poznati, za to sluzi root.hints datoteka), a . server daje listu edu servera: $ nslookup Default Server: localhost Address: 127.0.0.1 Pocnimo 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 vazna, ona govori serveru da trazimo edu koji je bas ispod . (ovo nesto suzuje 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 posluzuje edu., tako da mozemo nastaviti pitati c.root-servers.net. Sada zelimo znati tko posluzuje sljedeci 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 posluzuju 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 mis za cut&paste, tako da se imena iskopiraju tocno 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 cu promijeniti tip upita, kada smo nasli imenski server pa cemo ga pitati sve sto 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 pocevsi od . uspjesno nasli imenske servere za sljedeci 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 vazna domena je in- addr.arpa. Ona se takoder dijeli kao i `normalne' domene. in- addr.arpa nam dopusta da dobijemo ime stroja bez da imamo njegovu adresu. Vazna stvar kod ovoga je da primijetis da su IP-evi zapisani obrnutim redosljedom u in-addr.arpa. domeni. Ako imas adresu stroja: 161.53.3.7, named je trazi bas kao dns.srce.hr: trazi arpa. servere. Trazi u in-addr.arpa. serverima. Trazi 161.in-addr.arpa. servere. Trazi 53.161.in-addr.arpa. Trazi 3.53.161.in-addr.arpa. servere. Trazi potrebne podatke o 7.3.53.161.in-addr.arpa. serveru. Pametno, ha? (Reci `da'.) Obrtanje brojeva moze biti zbunjujuce prve dvije godine, ipak. Upravo sam izrekao laz. DNS ne radi doslovno nacinom kojim sam to upravo objasnio. Ali je dovoljno slicno. 44..22.. NNaassaa ddoommeennaa.. Sada cemo definirati nasu domenu. Napravit cemo domenu linux.bogus i definirati strojeve u njoj. Koristim totalno neispravno ime domene (ali s tocnom sintaksom) da ne bi smetali nikoga Tamo Vani. Jos jedna stvar prije nego pocnemo: nisu svi znakovi dozvoljeni u imenima strojeva. Ograniceni smo na slova engleske abecede: a-z, i brojevi 0-9 i znak `-' (crta). Drzi se tih znakova. Velika i mala slova su ista DNS-u, tako da su dns.srce.hr i DNS.SRCE.Hr isto. Vec smo zapoceli 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 cemo 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 zapoceti svaku datoteku zone sa $ORIGIN direktivom, ali to je visak. Porijeklo (mjesto iz DNS hijerarhije gdje pripada) datoteke zone je odredeno u 'zone' sekciji named.conf datoteke, u ovom slucaju to je 0.0.127.in- addr.arpa. Ova `ddaattootteekkaa zzoonnee' sadrzi 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 skracenica od _S_t_a_r_t _O_f _A_u_t_h_o_r_i_t_y (pocetak nadleznosti). Znak `@' je posebna oznaka koja znaci porijeklo, i zato sto `domain' kolona za ovu datoteku kaze 0.0.127.in- addr.arpa, prva linija zapravo znaci: 0.0.127.in-addr.arpa. IN SOA ... NS je NNaammee SSeerrvveerr RRRR (imenski server). Nema znaka `@' na pocetku ove linije, ovo se namece jer je zadnja linija zapocela sa `@'. To nas stedi od tipkanja. Tako da NS linija zapravo znaci: 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.nesto, to ime moze biti bilo sto. I konacno, PTR zapis govori da stroj na adresi 1 u podmrezi 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 tocno jedan takav zapis u svakoj datoteci zone, prvi zapis. On opisuje zonu, odakle dolazi (stroj zvan ns.linux.bogus), tko je odgovoran za njen sadrzaj (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 pregledas sto 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 nas 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 cemo neke totalno neispravne podatke (ali s tocnom sintaksom): ______________________________________________________________________ ; ; Datoteka zone za domenu linux.bogus ; ; Puna datoteka zone ; @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, danasnji datum + danasnja 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', moze biti bilo koje ispravno ime stroja. Dalje, hostmaster.linux.bogus treba biti procitano kao hostmaster@linux.bogus, ovo treba biti mail alias (drugo ime e-maila), ili mailbox (e-mail 'sanducic'), gdje osoba(e) koja odrzava DNS redovno cita postu. Bilo kakav e-mail koji se tice domene bit ce poslan na adresu navedenu ovdje. Ime ne mora biti `hostmaster', moze biti bilo kakva ispravna e-mail adresa, ali e- mail adresa `hostmaster' se ocekuje da ce takoder 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 poste). On govori sustavima za postu gdje slati postu 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 ce se e-mail slati prvom. Ako njemu ne uspije, posta ce biti poslana onome s prvim vecim brojem, sekundarnim strojem za postu, npr. mail.friend.bogus koji ovdje ima prioritet 20. Restartaj named pokrecuci '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 pazljivijeg pregleda otkrit ces gresku. 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 gresku da bi ti mogao uciti iz nje :-) Gledajuci u datoteku zone naci cemo liniju: MX 10 mail.linux.bogus ; primarni Mail eXchanger kojoj nedostaje tocka. Ili ima 'linux.bogus' viska. Ako ime stroja u datoteci zone ne zavrsava tockom, porijeklo se dodaje na njen kraj uzrokujuci 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 vise volim zadnji oblik, kraci je za tipkanje. Postoje neki bind znalci koji se ne slazu, a i neki koji se slazu s ovim. U datoteci zone zapis bi trebao zavrsavati s domenom i tockom, ili bez icega, u tom slucaju bi se nadopunio porijeklom. Moram naglasiti da u datoteci named.conf ne smije biti `.' nakon imena domena. Nemas pojma koliko puta je `.' viska ili manjka 'sredila' stvari i uzasno zbunila ljude. Nakon sto 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, danasnji datum + danasnja 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" ______________________________________________________________________ Vise 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 nacin da date svakom stroju vise imena. Tako je `www' drugo ime za `ns'. Koristenje CNAME zapisa je i osporavano. Ali je sigurno postupati po pravilu da MX, CNAME ili SOA zapis ne smiju nikad upucivati na CNAME zapis, vec na nesto sa A zapisom, i bilo bi krivo imati: ______________________________________________________________________ bla CNAME www ; NE! ______________________________________________________________________ ali ispravno imati: ______________________________________________________________________ bla CNAME ns ; Da! ______________________________________________________________________ Takoder 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. Mozes ocekivati vrlo mali broj admina Tamo Vani koji ce primijeniti ovo pravilo i ako ono vrijedi tebi. Nacin kako izbjeci ovo je koristeci A zapise (i mozda neke druge, kao MX zapis): ______________________________________________________________________ www A 192.168.196.2 ______________________________________________________________________ Velik broj starih bind strucnjaka preporucuje ne koristiti CNAME. Zato vrlo ozbiljno razmisli o ne koristenju toga. Ali kako vidis, ovaj KAKO i puno mjesta ne prate to pravilo. Ucitaj novu bazu podataka pokrecuci 'ndc reload', sto uzrokuje da named ponovo procita svoje datoteke. $ nslookup Default Server: localhost Address: 127.0.0.1 > ls -d linux.bogus Ovo znaci da ce 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 vidis, izgleda vrlo slicno samoj datoteci zone. Provjerimo sto kaze 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 rijecima, pravo ime za www.linux.bogus je ns.linux.bogus, i daje ti neke informacije o ns-u takoder, dovoljno da se spojis 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 takoder je potrebna i obrnuta zona, koja omogucuje da DNS prebacuje iz adrese u ime. Ovo ime je koristeno kod mnogih servera raznih vrsta (FTP, IRC, WWW i drugi) da bi odredili da li ce pricati s tobom ili ne, i ako da, mozda i koliko ce 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 sadrzaj je slican: ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, danasnji datum + danasnja 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 trebas 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 pregledas: > 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 koristeni gore su uzeti iz jednog od blokova 'privatnih mreza', koji nisu dopusteni 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 moze obavijestiti ostale servere navedene u NS zapisima u datoteci zone kada je zona promijenjena. Ovo je zgodno za uobicajenu upotrebu, ali za privatne pokuse sa zonama ova funkcija treba biti iskljucena, ne zelimo 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 sljedece poglavlje. 55.. PPrriimmjjeerr pprraavvee ddoommeennee ((uu kkoojjeemm cceemmoo ppookkaazzaattii nneekkee pprraavvee ddaattootteekkee zzoonnee)) Korisnici su predlozili da ukljucim pravi primjer radece domene kao i skolski primjer. Koristim ovaj primjer sa dozvolom Davida Bullocka iz LAND-5. Ove datoteke su bile aktualne 24. rujna 1996., i uredivane su da se uklope u bind-8 ogranicenja i koriste moje nadopune. Tako da ovo sto vidite ovdje se razlikuje ponesto od onoga sto cete 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: mreza 127.0.0, kao i LAND-5-ova 206.6.177 podmreza. I primary liniju za LAND-5-ovu forward zonu land-5.com. Takoder 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 stavis 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 dinamicka, i da je ova navedena ovdje stara. Bolje ti je da koristis onu napravljenu sada, sa dig-om, kao sto je to objasnjeno 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 odreduje 127.0.0.1 kao localhost. Oba su nuzna. Nista vise ne treba biti u ovoj datoteci. Ona se vjerojatno nikad nece 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. Mozemo 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. Mozemo takoder 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 koristenje A zapisa). Kao sto vidis iz SOA zapisa, datoteka zone dolazi iz land-5.com, osoba za kontakt je root@land-5.com. 'hostmaster' je jos jedna cesto koristena adresa za odgovornu osobu. Serijski broj je u suglasnom ggggmmdd formatu sa danasnjom revizijom dodanom; ovo je vjerojatno sesta inacica datoteke zone dana 20. rujna 1996.g. Zapamti da se serijski broj mora monotono povecavati, ovdje je samo jedna brojka za danasnji serijski broj, tako da nakon 9 uredivanja on mora cekati do sutra prije nego sto promijeni datoteku ponovo. Razmisli o koristenju 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 pregledas land-5 imenski server naci ces da su imena strojeva u obliku ws_broj. Nakon kasnijih bind 4 verzija named je poceo uvoditi ogranicenja u znakovima koji se smiju koristiti u imenima strojeva. Tako da to uopce ne radi sa bind-8, i '_' (podvlaka) se zamjenjuje sa '-' (crta). Jos jednu stvar treba primijetiti, a ta je da radne stanice nemaju individualna imena, vec prefiks popracen sa zadnja dva dijela IP broja. Koristeci takav sustav mozes znatno pojednostaviti odrzavanje, ali to moze biti neosobno, i ustvari izvor nezadovoljstva medu tvojim korisnicima. Takoder vidimo da je funn.land-5.com alias za land-5.com, ali koristeci A zapis, ne CNAME zapis. 55..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Ovu datoteku cu 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 podesavanja koji izgleda uzrokuje najvise nevolja. Koristi se da se nade ime stroja ako imas IP broj istog. Primjer: ti si IRC server i prihvacas veze od IRC klijenata. Ipak, ti si norveski IRC server tako da zelis prihvatiti veze samo iz Norveske i ostalih skandinavskih zemalja. Kada uspostavis vezu s klijentom, C library moze ti reci IP broj drugog stroja zato sto se IP broj klijenta pojavljuje u svim paketima koji prolaze mrezom. Sada mozes pozvati funkciju 'gethostbyaddr' koja pogleda ime stroja odredenog IP brojem. gethostbyaddr ce pitati DNS server, koji ce onda pregledati DNS trazeci 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 naci 200.177.6.206.in-addr.arpa. DNS server ce prvo naci arpa. servere, pa in-addr.arpa. servere, prateci obrnuti trag kroz 206, pa 6, i na kraju ce naci server za 177.6.206.in-addr.arpa zonu na land-5. Iz toga ce finalno dobiti odgovor da za 200.177.6.206.in-addr.arpa imamo 'PTR ws-177200.land-5.com' zapis, sto znaci da ime koje ide uz 206.6.177.200 jest ws-177200.land-5.com. Kao i objasnjenje kako se pogleda prep.ai.mit.edu, i ovo je malo fiktivno. Da se vratimo na primjer IRC servera. IRC server prihvaca samo veze iz skandinavskih zemalja, odn. *.no, *.se, i *.dk, pa ime ws-177200.land-5.com ocito ne zadovoljava nijedan uvjet, i server ce 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 naci ime stroja, i morao bi usporediti 206.2.177.200 sa *.no, *.se, i *.dk, sto naravno ne bi uspjelo. Neki ljudi ce ti reci da je reverzno mapiranje vazno samo za servere, ili nije uopce. Nije tako, jer puno FTP, NNTP (news), IRC pa cak i neki HTTP (www) serveri nece prihvatiti veze sa strojevima cije ime ne mogu pronaci. Tako da je reverzno mapiranje za strojeve obavezno. 66.. OOddrrzzaavvaannjjee.. SSaammoo nneekkaa rraaddii.. Jedna je zadaca potrebna za odrzavanje nameda, osim da ih pustas da rade. To je redovno mijenjanje root.hints datoteke. Najlaksi nacin je koristenje programa `dig'. Prvo pokreni dig bez parametara, i dobit ces root.hints svog servera. Onda pitaj jedan od izlistanih korijenskih servera sa 'dig @rootserver'. Vidjet ces da izlazni podaci jako slice onima u root.hints datoteci. Sacuvaj 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 moze pokrenuti automatski da obnovi root.hints, unesena u crontab da se pokrene jednom mjesecno i zaboravi. Ova skripta pretpostavlja da imas podesen i radeci e-mail, te da je alias `hostmaster' definiran. Moras je hackirati da je uskladis sa svojim postavkama. (sacuvati kao izvrsnu 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 mozda 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 mrezi. 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 sto se koristi named.conf umjesto named.boot datoteke, sve je identicno. 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 imas source distribuciju, na komandnoj liniji, u bind8/src/bin/named direktoriju ces otipkati sljedece: (Ako imas binarni paket, skripta je vjerojatno tu negdje, ali nisam siguran gdje op.a.). ./named-bootconf.pl < named.boot > named.conf I to ce 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 sto moze biti u named.boot datoteci, mada ne dodaje sva nova unapredenja i konfiguracijske opcije koje dopusta bind8. Evo kompletnijeg named.conf-a koji radi isto to, samo malo ucinkovitije. ______________________________________________________________________ // 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 identicni, kao i naredbe za njihovo mijenjanje. 88.. PPiittaannjjaa ii OOddggoovvoorrii Molim te, procitaj ovo poglavlje prije nego mi e-mailas. 1. Moj named trazi datoteku named.boot. Citas 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 ucinim da DNS kruzi kroz dostupne adrese za uslugu, recimo www.busy.site da dobije load balancing efekt, ili nesto slicno? Napravi vise A zapisa za www.busy.site i koristi bind 4.9.3 ili noviji. Tada ce bind srediti odgovore. Nece raditi s ranijim verzijama binda. 4. Zelim podestiti DNS na (zatvorenom) intranetu. Sto da radim? Izbaci root.hints datoteku i samo podesi datoteke zone. To takoder znaci da ne moras 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; }; }; ___________________________________________________________________ Mozes navesti vise alternativnih master servera zone, unesi ih u masters listu, odvojene znakom ';' (tocka-zarez). 6. Zelim da bind radi dok sam van mreze. Postoje dvije stvari vezane za ovo: · Dobio sam ovaj e-mail od Iana Clarka, ic@deakin.edu.au, gdje on objasnjava kako to uciniti: Ja pokrecem named na svom 'masquerading' stroju. Imam dvije root.hints datoteke, jedna se zove root.hints.real i sadrzi prava imena korijenskih servera, i druga koja se zove root.hints.fake koja sadrzi: ---- ; root.hints.fake ; this file contains no information ---- Kada odlazim s mreze (off line), kopiram root.hints.fake u root.hints i restartam named. Kada idem na mrezu (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 zivjeti. To svakako radi za mene. Mogu koristiti imenski server za lokalne strojeve dok sam van mreze bez timeout zastoja za vanjska imena domena, a dok sam na mrezi, upiti za vanjske domene rade normalno. · Takoder sam dobio informaciju kako bind radi interaktivno s NFS-om i portmapper-om na vecinom offline stroju, od Karl-Maxa Wangera: Ja obicno pokrecem svoj named na svim svojim strojevima koji se tek povremeno vezuju na Internet modemom. Imenski server sluzi samo kao cache, nema svoju domenu i sve provjerava kod imenskih servera u root.cache datoteci. Kao sto je to uobicajeno 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 vecinu vremena to nije radilo. Isto se dogadalo neovisno da li sam koristio PLIP, PCMCIA ethernet karticu ili PPP preko serijske veze. Nakon nekog vremena nagadanja i eksperimentiranja shvatio sam izgleda da je named brljao s procesom registracije nfsd-a i mountd-a koji oni moraju proci s portmapperom na dizanju sustava (startam te demone pri dizanju kao i obicno). Startanje named-a nakon nfsd-a i mountd-a potpuno je uklonilo ovaj problem. Kako ne treba ocekivati bilo kakve probleme pri takvoj izmijenjenoj sekvenci dizanja sustava, preporucio bih svima da to naprave na taj nacin i sprijece moguci problem. 7. Gdje caching only imenski server drzi svoj cache? Postoji li nacin da kontroliram velicinu cachea? Kompletan se cache drzi u memoriji, i nikad se ne zapisuje na disk. Svaki put kad ubijes named, cache se gubi. Cache se nikako ne moze kontrolirati. named ga nadgleda prema nekim jednostavnim pravilima i to je to. Ne mozes kontrolirati cache niti njegovu velicinu ni iz kojeg razloga. Ako to zelis, mozes to 'popraviti' hackirajuci named. Ipak, ovo nije preporuceno. 8. Da li named cuva cache izmedu restarta? Mogu li ga natjerati da ga sacuva? Ne, named ne sacuva cache kada umre. To znaci da se cache mora ponovo graditi svaki put kada ubijes i restartas named. Nema nacina da natjeras named da sacuva cache u datoteku. Ako to zelis, mozes to 'popraviti' hackirajuci named. Ipak, ovo nije preporuceno. 99.. KKaakkoo ppoossttaattii vveeccii DDNNSS aaddmmiinn.. DDookkuummeennttaacciijjaa ii aallaattii.. Prava Dokumentacija postoji. Na mrezi i tiskana. Citanje nekoliko knjiga je potrebno da od malog DNS admina postanes 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. Procitao sam je, odlicna 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. Jos jedan must za dobru DNS administraciju (ili bilo sto 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 mrezi ces naci 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 vecina, ako ne i svi, od RFC-ova navedenih dolje, su distribuirani sa samim bindom). Nisam procitao vecinu ovih, pa ni ja nisam veliki DNS admin. Arnt Gulbrandsen je procitao _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 najvazniji 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. .