DNS KAKO Nicolai Langfeldt, janl@math.uio.no; preveo Josip Rodin, joy-web@debian.org; inaica 1.2, 21. prosinca 2000. (u originalu verzija 3.0) KAKO postati mali DNS administrator. ______________________________________________________________________ Table of Contents 1. Uvod 1.1 Pravne stvari 1.2 Zasluge i poziv za pomo 1.3 Posveta 2. Upoznavanje. 3. Caching imenski server koji nalazi adrese. 3.1 Startanje named-a 3.2 `Resolveri' 3.3 estitam 4. Forwarding 5. Jednostavna domena. 5.1 Ali prvo malo suhoparne teorije 5.2 Naa domena. 5.3 Obrnuta zona 5.4 Rijei opreza 5.5 Zato ne rade obrnuti upiti. 5.5.1 Obrnuta zona nije preputena. 5.5.2 Ima podmreu bez klasa 5.6 `Slave' serveri 6. Primjer prave domene 6.1 /etc/named.conf (ili /var/named/named.conf) 6.2 /var/named/root.hints 6.3 /var/named/zone/127.0.0 6.4 /var/named/zone/land-5.com 6.5 /var/named/zone/206.6.177 7. Odravanje 8. Prebacivanje s verzije 4 na verziju 8 9. Pitanja i Odgovori 10. Kako postati vei DNS admin. ______________________________________________________________________ 11.. UUvvoodd Kljune rijei: DNS, BIND, BIND 4, BIND 8, named, dialup, PPP, slip, ISDN, Internet, domain, name, resolution, hosts, caching. Ovaj dokument je dio Linux Documentation Projecta. 11..11.. PPrraavvnnee ssttvvaarrii (C)opyright 1995-2000 Nicolai Langfeldt. Do not modify without amending copyright, distribute freely but retain copyright message. Hrvatski prijevod (c)opyright Josip Rodin, slobodno za distribuciju uz zadravanje ove poruke o autorskim pravima. 11..22.. ZZaasslluuggee ii ppoozziivv zzaa ppoommoo elio bih zahvaliti Arntu Gulbrandsenu kojeg sam napatio nedovrenim dijelovima ovoga i koji je dao puno korisnih prijedloga. Takoer bih elio zahvaliti ljudima koji su e-mailom poslali prijedloge i biljeke. Ovo nikada nee biti zavren dokument, molim vas aljite mi e-mail o vaim problemima i uspjesima. Vi moete uiniti ovaj HOWTO boljim. Dakle, molim vas, aljite komentare i/ili pitanja, ili novac, na janl@math.uio.no. Ili kupite moju knjigu o DNS-u. Pogledajte bibliografiju za informacije o njoj. Ako poaljete e-mail i elite odgovor, molim vas budite toliko pristojni da _p_r_o_v_j_e_r_i_t_e je li povratna adresa ispravna i da radi. Takoer, molim vas, proitajte ``PiO'' poglavlje prije nego mi e-mailate. Jo jedna stvar, ja razumijem samo norveki i engleski. Ovo je jedan KAKO. Odravao sam ga kao dio LDP-a od 1995. U 2000. godini sam napisao knjigu o istoj temi. elio bih rei da iako je ovaj KAKO na mnogo naina slian knjizi, on _n_i_j_e razvodnjena verzija izmiljena kako bi reklamirala knjigu. Ipak, knjigu ete nai meu bibliografijom na kraju ovog KAKOa. itatelji ovog KAKOa su mi pomogli razumjeti ono to je teko razumjeti o DNS-u. Ovo je pomoglo knjizi, ali je i knjiga pomogla meni da vie razmislim o potrebama ovog KAKOa. Knjiga je proizala iz KAKOa. Trea verzija KAKOa je proizala iz knjige. Zahvaljujem se izdavau knjige, Que, koji je riskirao sa mnom :-) 11..33.. PPoossvveettaa Ovaj HOWTO je posveen Anne Line Norheim Langfeldt. Mada ga ona vjerojatno nikada nee proitati jer ona nije takav tip djevojke. 22.. UUppoozznnaavvaannjjee.. ttoo oovvoo jjee,, aa ttoo nniijjee.. DNS znai Domain Name System -- sustav imenovanja domena. DNS pretvara imena strojeva u IP adrese koje imaju svi strojevi na mrei. On prevodi (mapira, kako bi se to reklo u argonu) iz imena u adresu i iz adrese u ime, i jo neke druge stvari. Ovaj KAKO dokumentira kako definirati takva mapiranja koristei Unix sustav, uz par stvari specifinih Linux sustavu. Mapiranje je jednostavno povezivanje izmeu dvije stvari, u ovom sluaju imena stroja, kao ftp.linux.org, i IP broja (ili adrese) stroja, kao 199.249.150.4. DNS takoer sadri mapiranja u drugom smjeru, iz IP broja u ime stroja; ovo se zove obrnuto mapiranje (eng. "reverse mapping"). DNS je, neupoznatom (tebi ;-), jedno od mranijih podruja administriranja mree. Sreom, DNS nije stvarno tako teak. Ovaj KAKO e pokuati uiniti neke stvari jasnijima. On opisuje kako podesiti _j_e_d_n_o_s_t_a_v_a_n DNS server. Poet emo sa caching only serverom da bi doli do podeavanja primarnog DNS imenskog servera za domenu. Za kompleksnije postavke moe pogledati ``PiO'' poglavlje ovog dokumenta. Ako to nije opisano tamo trebat e _p_r_o_i_t_a_t_i Pravu Dokumentaciju. to je i od ega se sastoji Prava Dokumentacija bit e objanjeno u ``zadnjem poglavlju''. Prije nego pone s ovim, trebao bi konfigurirati svoj stroj tako da se moe telnetirati na i s njega, i uspjeno uspostaviti sve vrste veza na mreu, i posebno bi trebao moi napraviti _t_e_l_n_e_t _1_2_7_._0_._0_._1 i time doi na svoj stroj (probaj sad!). Za poetak takoer treba ispravne /etc/nsswitch.conf, /etc/resolv.conf i /etc/hosts datoteke, jer njihovu funkciju ovdje neu objasniti. Ako ovo ve nema podeeno i u radu, Networking-HOWTO i/ili Networking-Overview-HOWTO objanjavaju kako to podesiti. Proitaj ih. Kada kaem 'tvoj stroj', mislim na stroj na kojem pokuava podesiti DNS, ne na niti jedan drugi stroj koji ima, a koji je ukljuen u tvoje mrene napore. Pretpostavit u da nisi iza bilo kakvog firewalla koji blokira upite o imenima. Ako jesi, trebat e posebnu konfiguraciju -- pogledaj poglavlje ``PiO''. Opsluivanje imenima na Unixu je omogueno programom zvanim named. On je dio ``BIND'' paketa kojim koordinira Paul Vixie uime Internet Software Consortiuma. Named je ukljuen u veinu Linux distribucija i obino je instaliran kao /usr/sbin/named, obino iz paketa zvanog BIND. Ako ima named, vjerojatno ga moe i koristiti; ako ga nema, nabavi ga binarnog sa neke Linux FTP lokacije, ili nai najnoviji i najbolji izvorni kod sa . Ovaj KAKO govori o verziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je jo uvijek dostupna na u sluaju da koristi bind 4 (naalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako namedova man stranica govori o named.conf, ima BIND 8; ako govori o datoteci named.boot, ima BIND 4. Ako ima 4 i brine o sigurnosti, stvarno bi trebao nadograditi na najnoviju 8-icu. Odmah. DNS je baza podataka cijele mree. Pazi to e staviti u nju. Ako stavi smee u nju, ti i drugi ete dobiti smee iz nje. Odravaj svoj DNS urednim i dosljednim i dobro e te sluiti. Naui ga koristiti, administrirati, ispravljati greke i bit e jo jedan dobar administrator koji uva mreu od padanja na koljena zbog krivog upravljanja. NNaappoommeennaa:: pravi rezervne (backup) kopije svih datoteka koje ti naloim da promijeni ako ih ve ima, tako da ako nita ne bude radilo nakon ovoga, moe sve vratiti u staro, radno stanje. 33.. CCaacchhiinngg iimmeennsskkii sseerrvveerr kkoojjii nnaallaazzii aaddrreessee.. PPrrvvaa ssttaavvkkaa DDNNSS kkoonnffiigguurraacciijjee,, vvrrlloo kkoorriissnnaa kkoorriissnniicciimmaa kkoojjii ssee ssppaajjaajjuu mmooddeemmiimmaa,, kkaabbeellsskkiimm mmooddeemmiimmaa ii AADDSSLL--oomm.. Na Red Hat i Red Hat baziranim distribucijama moe postii isti praktini rezultat kao iz prvog poglavlja ovog KAKOa instaliranjem paketa bind, bind-utils i caching-nameserver. Ako koristite Debian jednostavno instalirajte bind i bind-doc. Dakako da te puko instaliranje ovih paketa nee nauiti istom to i itanje ovog KAKOa. Dakle, instaliraj pakete, i onda itaj provjeravajui datoteke koje su oni instalirali. Caching only imenski server e nai odgovor na upite o imenima i zapamtiti odgovor sljedei put kad ga bude trebao. Ovo e znatno skratiti vrijeme ekanja sljedei put, posebno ako si na sporoj vezi. Prvo e trebati datoteku zvanu /etc/named.conf (Debian: /etc/bind/named.conf). Ona je proitana kad se pokree named. Za sada ona treba sadravati samo ovo: ______________________________________________________________________ // Konfiguracijska datoteka za caching only imenski server options { directory "/var/named"; // Odkomentiravanje ovoga moe pomoi ako mora proi 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"; }; ______________________________________________________________________ Paketi Linux distribucija mogu koristiti razliita imena datoteka za svaku vrstu datoteka spomenutih ovdje; one e ipak sadravati skoro iste stvari. Linija 'directory' govori namedu gdje da potrai datoteke. Sve datoteke nazvane slino e biti relativne ovome. Takoer, pz je direktorij ispod /var/named, tj. /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 sadravati ovo: (_A_k_o _i_z_r_e_e_t_e _i _z_a_l_i_j_e_p_i_t_e _o_v_u _d_a_t_o_t_e_k_u _i_z _e_l_e_k_t_r_o_n_i_k_e _v_e_r_z_i_j_e _o_v_o_g _d_o_k_u_m_e_n_t_a_, _m_o_l_i_m _p_r_i_m_i_j_e_t_i_t_e _k_a_k_o nnee bbii smjelo biti poetnih razmaka u datoteci, tj. sve linije trebaju poeti znakom koji nije razmak. Neki programi za obradu dokumenata e ubaciti razmake na poetak redaka, uzrokujui neto zabune. U tom sluaju molim maknite poetne razmake)) ______________________________________________________________________ ; ; There might be opening comments here if you already have this file. ; If not don't worry. ; . 6D IN NS M.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. ; M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33 I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17 E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10 D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90 A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4 H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53 C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12 G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4 F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241 B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107 J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10 K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129 L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12 ______________________________________________________________________ Ova datoteka opisuje korijenske imenske servere u svijetu. Oni se mijenjaju s vremenom i lista se mora odravati svako nekoliko. Pogledaj poglavlje ``Odravanje'' za upute kako ih osvjeavati. Sljedei odjeljak u named.conf datoteci je opis zone. Objasnit u njenu upotrebu u kasnijim poglavljima, zasad samo napravi datoteku zvanu 127.0.0 sljedeeg sadraja, u poddirektoriju pz: (_O_p_e_t_, _m_o_l_i_m _t_e _m_a_k_n_i _p_o_e_t_n_e _r_a_z_m_a_k_e _a_k_o _i_z_r_e_e _i _z_a_l_i_j_e_p_i _o_v_o) ______________________________________________________________________ $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost. ______________________________________________________________________ Dalje, trebat e /etc/resolv.conf koji e izgledati slino ovome: (_O_p_e_t_, _m_a_k_n_i _r_a_z_m_a_k_e_!) ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr nameserver 127.0.0.1 ______________________________________________________________________ Linija `search' odreuje koje e se domene pretraivati za neki host na kojeg se eli spojiti. Linija `nameserver' odreuje adresu tvog imenskog servera, u ovom sluaju tvoj stroj jer je to adresa na kojoj radi tvoj named (127.0.0.1 je prava, nema veze ako tvoj stroj ima i neku drugu adresu). Ako eli vie imenskih servera, stavi `nameserver' liniju za svaki. (Napomena: named nikada ne ita ovu datoteku, to radi resolver koji koristi named. Napomena 2: U nekim /etc/resolv.conf datotekama e nai redak "domain". To je u redu, ali nemoj koristiti i "search" i "domain", samo jedan od njih e raditi.) Da ilustriram to ova datoteka radi: ako klijent stroj pokua odrediti adresu za bla, tada se prvo probava adresa bla.poddomena.tvoja- domena.hr, pa bla.tvoja-domena.hr, i na kraju bla. Ne bi trebao staviti puno domena u "search" liniju, jer treba vremena kako bi se sve pretraile. Ovaj primjer pretpostavlja da si ti u domeni poddomena.tvoja- domena.hr, a tvoj stroj se tada zove tvoj-stroj.poddomena.tvoja- domena.hr. Search linija ne bi trebala sadravati 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 sluaju). Ako se esto treba spajati na strojeve u drugoj domeni, moe tu domenu dodati u search liniju ovako: (_S_j_e_t_i _s_e _m_a_k_n_u_t_i _p_o_e_t_n_e _r_a_z_m_a_k_e_, _a_k_o _p_o_s_t_o_j_e) ______________________________________________________________________ search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr ______________________________________________________________________ i tako dalje. Oito treba staviti prava imena domena umjesto ovih primjera. Molim te uoi kako nema toke na krajevima imena domena. Ovo je vano; molim te uoi kako nema toke na krajevima imena domena. 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, proitaj poglavlje ``PiO''. Sada moe testirati svoje postavke. Ako pogleda svoju datoteku sa syslog porukama (obino se zove /var/adm/messages, drugi direktorij moe biti /var/log, a druga datoteka syslog) dok starta named (uini `tail -f /var/log/messages') trebao bi vidjeti neto kao ovo: (linije koje zavravaju sa \ nastavljaju se u sljedeem retku) Dec 15 23:53:29 localhost named[3768]: starting. named 8.2.2-P7 \ Fri Nov 10 04:50:23 EST 2000 ^Iprospector@porky.\ devel.redhat.com:/usr/src/bs/BUILD/bind-8.2.2_P7/\ src/bin/named Dec 15 23:53:29 localhost named[3768]: hint zone "" (IN) loaded\ (serial 0) Dec 15 23:53:29 localhost named[3768]: Zone "0.0.127.in-addr.arpa"\ (file pz/127.0.0): No default TTL set using SOA\ minimum instead Dec 15 23:53:29 localhost named[3768]: master zone\ "0.0.127.in-addr.arpa" (IN) loaded (serial 1) Dec 15 23:53:29 localhost named[3768]: listening on [127.0.0.1].53 (lo) Dec 15 23:53:29 localhost named[3768]: listening on [10.0.0.129].53\ (wvlan0) Dec 15 23:53:29 localhost named[3768]: Forwarding source address is\ [0.0.0.0].1034 Dec 15 23:53:29 localhost named[3769]: Ready to answer queries. Ako je bilo ikakvih poruka o grekama, mora da je dolo do greke. named e imenovati datoteku u kojoj je greka. Vrati se i provjeri datoteku. Pokreni `ndc restart' kada je popravi. Sada moete isprobati svoje postavke. Tradicionalno se za to koristio program nslookup. Danas se preporua dig: $ dig -x 127.0.0.1 ; <<>> DiG 8.2 <<>> -x ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUERY SECTION: ;; 1.0.0.127.in-addr.arpa, type = ANY, class = IN ;; ANSWER SECTION: 1.0.0.127.in-addr.arpa. 1D IN PTR localhost. ;; AUTHORITY SECTION: 0.0.127.in-addr.arpa. 1D IN NS ns.penguin.bv. ;; Total query time: 30 msec ;; FROM: lookfar to SERVER: default -- 127.0.0.1 ;; WHEN: Sat Dec 16 00:16:12 2000 ;; MSG SIZE sent: 40 rcvd: 110 Ako to dobije, onda radi. Nadajmo se. Ako se razlikuje, vrati se i provjeri sve. Svaki put kad promijeni named.conf datoteku, mora ponovo startati named koristei `ndc restart' naredbu. Sada moe postaviti upit. Probaj pogledati ime stroja koji ti je blizu. jagor.srce.hr je meni blizu, na SRCE-u: $ dig jagor.srce.hr ; <<>> DiG 8.2 <<>> jagor.srce.hr ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUERY SECTION: ;; jagor.srce.hr, type = A, class = IN ;; ANSWER SECTION: jagor.srce.hr. 1D IN A 161.53.2.130 ;; AUTHORITY SECTION: srce.hr. 1D IN NS regoc.srce.hr. srce.hr. 1D IN NS bjesomar.srce.hr. ;; ADDITIONAL SECTION: regoc.srce.hr. 1D IN A 161.53.2.69 bjesomar.srce.hr. 1D IN A 161.53.2.70 ;; Total query time: 112 msec ;; FROM: lookfar to SERVER: default -- 127.0.0.1 ;; WHEN: Sat Dec 16 00:23:07 2000 ;; MSG SIZE sent: 28 rcvd: 162 dig je sada upitao tvoj named da potrai 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. Moda e trebati malo vremena dok ne dobije rezultat budui da on pretrauje sve domene koje si naveo u /etc/resolv.conf datoteci. Molim te primijeti "aa" u "flags:" retku. To znai da je odgovor bio sluben, da je svjee dobiven od nadlenog servera (eng. "authoritative"). Objasnit u "authoritative" kasnije. Ako upita isto to ponovo, dobit e ovo: $ dig jagor.srce.hr ; <<>> DiG 8.2 <<>> jagor.srce.hr ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUERY SECTION: ;; jagor.srce.hr, type = A, class = IN ;; ANSWER SECTION: jagor.srce.hr. 1D IN A 161.53.2.130 ;; AUTHORITY SECTION: srce.hr. 1D IN NS regoc.srce.hr. srce.hr. 1D IN NS bjesomar.srce.hr. ;; ADDITIONAL SECTION: regoc.srce.hr. 1D IN A 161.53.2.69 bjesomar.srce.hr. 1D IN A 161.53.2.70 ;; Total query time: 4 msec ;; FROM: lookfar to SERVER: default -- 127.0.0.1 ;; WHEN: Sat Dec 16 00:23:09 2000 ;; MSG SIZE sent: 28 rcvd: 162 Primijeti manjak "aa" oznake o ovom odgovoru. To znai da named ovaj put nije otiao traiti po mrei, jer je informacija sada bila u cacheu. Ali informacija u cache-u bi _m_o_g_l_a biti zastarjela (eng. `stale'). Zato si informiran o ovoj (vrlo maloj) mogunosti jer nema "aa". Ipak, sada zna da cache radi. 33..22.. ``RReessoollvveerrii'' Svi OS-ovi koji imaju implementiran standardni C API imaju i pozive `gethostbyname' i `gethostbyaddr'. Oni mogu dobiti informacije iz raznih izvora. Iz kojih e ih izvora dobijati se na Linuxu (i nekim drugim Unixima) konfigurira u /etc/nsswitch.conf. Ovo je duga datoteka koja odreuje gdje dobiti razliite vrste podataka, iz koje datoteke ili baze. Obino sadri pomone komentare pri vrhu, koje bi trebao proitati. Nakon toga nai liniju koja poinje sa `hosts:', i ona bi trebala biti ovakva: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ (_Z_a_p_a_m_t_i_o _s_i _t_o _s _p_o_e_t_n_i_m _r_a_z_m_a_c_i_m_a_, _z_a_r _n_e_? _N_e_u _i_h _v_i_e _s_p_o_m_i_n_j_a_t_i_.) Ako ne postoji linija koja poinje s `hosts:', onda umetni onu gornju. Ona govori da programi prvo trebaju pogledati u /etc/hosts datoteku, i onda provjeriti u DNS-u, prema resolv.conf-u. 33..33.. eessttiittaamm Sada zna kako podesiti caching named. Popij pivo, mlijeko, ili to ve voli kako bi to proslavio. 44.. FFoorrwwaarrddiinngg U velikim, dobro organiziranim, akademskim ili ISP (eng. `Internet Service Provider', pruatelj Internet usluga) mreama ete katkad nai da su ljudi koji se brinu o mrei podesili hijerarhiju DNS servera koji proslijeuju (eng. `forwarders') to pomae u olakavanju pritiska na internu mreu pa i pritiska na vanjske servere. Ipak, to nije bitno i koritenjem DNS servera vaeg pruatelja mrenih usluga kao ``forwardera'' moete uiniti odgovore na upite brima i manje optereujuima za vau mreu. Ako koristite modem, ovo bi moglo biti prilino dobro. Za potrebe ovog primjera, pretpostavit emo da va pruatelj mrenih usluga ima dva imenska servera koje ele da koristite, s IP brojevima 10.0.0.1 i 10.1.0.1. Tada ete u poetni dio named.conf datoteke zvan ``options'' umetnuti ove retke: ______________________________________________________________________ forward first; forwarders { 10.0.0.1; 10.1.0.1; }; ______________________________________________________________________ Postoji i zgodan trik za dialup strojeve za koritenje forwardera, opisan je u ``PiO'' poglavlju. Ponovo pokrenite va imenski server i isprobajte ga s dig-om. Trebao bi raditi. 55.. JJeeddnnoossttaavvnnaa ddoommeennaa.. KKaakkoo ppooddeessiittii vvllaassttiittuu ddoommeennuu.. 55..11.. AAllii pprrvvoo mmaalloo ssuuhhooppaarrnnee tteeoorriijjee Kao prvo: proitao si sve ono prije ovoga, zar ne? Morao bi. Prije nego to zapravo ponemo ovo poglavlje, servirat u ti malo teorije i primjera rada DNS-a. I ti e to proitati jer je to dobro za tebe. Ako ti se `ne da', ipak bi trebao nabrzinu prolistati. Prestani listati kada doe do dijela gdje se opisuje named.conf datoteka. DNS je hijerarhijski sustav, strukturiran kao stablo. Vrh se pie `.' i ita `kkoorriijjeenn' (eng. `root'), kao to je uobiajeno za strukture podataka u obliku stabla. Ispod . su mnoge `Top Level Domains' (TLD) odn. NNaajjvviiee DDoommeennee; najpoznatije su ORG, COM, EDU i NET, ali postoje mnoge druge (HR, BA, SI, op.prev.). Kao jedno stablo, ima korijen i grana se. Ako imate ikakvog iskustva u raunarstvu, prepoznat ete DNS kao `search tree', i moi ete nai elemente (`nodes'), krajnje toke (`leaf nodes') i rubove (`edges'). Toke su elementi, rubovi su na imenima. Kada trai stroj, upit prolazi rekurzivno kroz hijerarhiju, poevi od vrha. Ako eli saznati adresu stroja prep.ai.mit.edu, tvoj imenski server mora negdje poeti traiti. Poinje gledajui u svoj cache. Ako on zna odgovor, jer ga je prije spremio, odgovorit e odmah, kako smo vidjeli u prolom poglavlju. Ako ne zna, brisat e dijelove imena poevi s lijeve strane, provjeravajui zna li to o ai.mit.edu., pa mit.edu., pa edu., i ako ne to, zna o . jer je to u `hints' datoteci. Onda e pitati jednog . servera o prep.ai.mit.edu. Ovaj . server nee znati odgovor, ali e pomoi tvom serveru dajui mu preporuku, govorei mu gdje da gleda. Ove preporuke e na kraju dovesti tvoj server do imenskog servera koji zna odgovor. Sada u ovo ilustrirati. +norec znai da e dig pitati nerekurzivna pitanja kako bi smo mogli sami raditi rekurziju. Ostale postavke su tu da smanje iznos informacija koje e dig prikazati kako se ovo ne bi protegnulo na previe stranica: $ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. ;; res options: init defnam dnsrch ;; got answer: ; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13 ;; AUTHORITY SECTION: . 5d23h48m47s IN NS I.ROOT-SERVERS.NET. . 5d23h48m47s IN NS E.ROOT-SERVERS.NET. . 5d23h48m47s IN NS D.ROOT-SERVERS.NET. . 5d23h48m47s IN NS A.ROOT-SERVERS.NET. . 5d23h48m47s IN NS H.ROOT-SERVERS.NET. . 5d23h48m47s IN NS C.ROOT-SERVERS.NET. . 5d23h48m47s IN NS G.ROOT-SERVERS.NET. . 5d23h48m47s IN NS F.ROOT-SERVERS.NET. . 5d23h48m47s IN NS B.ROOT-SERVERS.NET. . 5d23h48m47s IN NS J.ROOT-SERVERS.NET. . 5d23h48m47s IN NS K.ROOT-SERVERS.NET. . 5d23h48m47s IN NS L.ROOT-SERVERS.NET. . 5d23h48m47s IN NS M.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: I.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.36.148.17 E.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.203.230.10 D.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.8.10.90 A.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.41.0.4 H.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.63.2.53 C.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.33.4.12 G.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.112.36.4 F.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.5.5.241 B.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.9.0.107 J.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.41.0.10 K.ROOT-SERVERS.NET. 6d23h48m47s IN A 193.0.14.129 L.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.32.64.12 M.ROOT-SERVERS.NET. 6d23h48m47s IN A 202.12.27.33 Ovo je preporuka. Daje nam samo "Authority section", nema "Answer section". Na imenski server nas upuuje na jedan imenski server. Odaberi jednog, nasumce: $ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @H.ROOT-SERVERS.NET. ; (1 server found) ;; res options: init defnam dnsrch ;; got answer: ; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3 ;; AUTHORITY SECTION: MIT.EDU. 2D IN NS BITSY.MIT.EDU. MIT.EDU. 2D IN NS STRAWB.MIT.EDU. MIT.EDU. 2D IN NS W20NS.MIT.EDU. ;; ADDITIONAL SECTION: BITSY.MIT.EDU. 2D IN A 18.72.0.3 STRAWB.MIT.EDU. 2D IN A 18.71.0.151 W20NS.MIT.EDU. 2D IN A 18.70.0.160 On nas odmah upuuje na MIT.EDU servere. Opet nasumce izaberi jednog: $ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @bitsy.mit.edu ; (1 server found) ;; res options: init defnam dnsrch ;; got answer: ; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 ;; ANSWER SECTION: prep.ai.mit.edu. 3h50m7s IN A 198.186.203.18 ;; AUTHORITY SECTION: AI.MIT.EDU. 6H IN NS FEDEX.AI.MIT.EDU. AI.MIT.EDU. 6H IN NS LIFE.AI.MIT.EDU. AI.MIT.EDU. 6H IN NS ALPHA-BITS.AI.MIT.EDU. AI.MIT.EDU. 6H IN NS BEET-CHEX.AI.MIT.EDU. ;; ADDITIONAL SECTION: FEDEX.AI.MIT.EDU. 6H IN A 192.148.252.43 LIFE.AI.MIT.EDU. 6H IN A 128.52.32.80 ALPHA-BITS.AI.MIT.EDU. 6H IN A 128.52.32.5 BEET-CHEX.AI.MIT.EDU. 6H IN A 128.52.32.22 Ovaj put smo dobili "ANSWER SECTION", i odgovor na nae pitanje. "AUTHORITY SECTION" sadri informacije o tome koje servere trebamo pitati o ai.mit.edu sljedei put. Tako sada moete pitati njih direktno, sljedei put kada budete znatieljni o ai.mit.edu imenima. Tako smo poevi od . uspjeno nali imenske servere za sljedei nivo imena domene, uz preporuke. Da si koristio svoj DNS server umjesto svih ovih ostalih, tvoj named bi naravno cacheirao sve informacije koje bi `iskopao' za tebe, i ne bi to trebao pitati ponovo neko vrijeme. Analogno stablu (`tree'), svaka ``.'' u imenu je toka grananja. I svaki dio izmeu ``.'' je ime za posebnu granu u stablu. Stablom se penjemo uzimajui ime koje elimo (prep.ai.mit.edu) pitajui korijen (.) ili koje god servere koji su oci od korijena do prep.ai.mit.edu a o kojima imamo informacije u cacheu. Jednom kad se preu granice cachea, rekurzivni `resolver' poinje pitati servere, pratei preporuke (rubove) dalje u imenu. Domena o kojoj se puno manje govori, ali jednako vana domena je in- addr.arpa. Ona se takoer dijeli kao i `normalne' domene. in- addr.arpa nam doputa da dobijemo ime stroja kada imamo njegovu adresu. Vana 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 trai ba kao dns.srce.hr: trai arpa. servere. Trai u in- addr.arpa. serverima, trai 161.in-addr.arpa. servere, trai 53.161.in- addr.arpa, trai 3.53.161.in-addr.arpa. servere. Trai potrebne podatke o 7.3.53.161.in-addr.arpa. serveru. Pametno, ha? (Reci `da'.) Ipak, obrtanje brojeva vas moe godinama zbunjivati. 55..22.. NNaaaa ddoommeennaa.. Sada emo definirati nau domenu. Napravit emo domenu linux.bogus i definirati strojeve u njoj. Koristim totalno neispravno ime domene da ne bi smetali nikoga Tamo Vani. Jo jedna stvar prije nego ponemo: nisu svi znakovi dozvoljeni u imenima strojeva. Ogranieni smo na slova engleske abecede: a-z, brojeve 0-9 i znak `-' (crta). Dri se tih znakova. Velika i mala slova su ista DNS-u, tako da su dns.srce.hr i DNS.SRCE.Hr isto. Ve smo zapoeli 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 (`master') server za nju i da je ona pohranjena u datoteci `pz/127.0.0'. Ve smo podesili ovu datoteku, i u njoj stoji: ______________________________________________________________________ $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; 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 zapoeti svaku datoteku zone sa $ORIGIN direktivom, ali to je viak. Porijeklo (mjesto iz DNS hijerarhije gdje pripada) datoteke zone je odreeno u `zone' sekciji named.conf datoteke; u ovom sluaju to je 0.0.127.in-addr.arpa. Ova `ddaattootteekkaa zzoonnee' sadri 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 skraenica od _S_t_a_r_t _O_f _A_u_t_h_o_r_i_t_y (poetak nadlenosti). Znak `@' je posebna oznaka koja znai porijeklo, i zbog toga to `domain' kolona za ovu datoteku kae 0.0.127.in-addr.arpa, prva linija zapravo znai: 0.0.127.in-addr.arpa. IN SOA ... NS je NNaammee SSeerrvveerr RRRR (imenski server). Nema znaka `@' na poetku ove linije; ovo se podrazumijeva jer je zadnja linija zapoela sa `@'. To nas tedi od tipkanja. Tako da bi se NS linija mogla pisati i ovako: 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 uobiajeno ime za imenske servere, ali kao i kod web servera, koji se obino zovu www._n_e_t_o, to ime moe biti bilo to. I konano, PTR (`Domain Name Pointer', pokaziva na ime domene) zapis govori da se stroj na adresi 1 u podmrei 0.0.127.in-addr.arpa. odn. 127.0.0.1 zove localhost. SOA zapis je uvod u _s_v_a_k_u datoteku zone, i treba biti tono jedan takav zapis u svakoj datoteci zone. On opisuje zonu, odakle dolazi (stroj zvan ns.linux.bogus), tko je odgovoran za njen sadraj (hostmaster@linux.bogus; ovdje trebate staviti vau e-mail adresu), 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 KAKOu i trebao bi biti siguran. Prije SOA dolazi obavezni $TTL 3D redak. Stavi ga u sve svoje datoteke zona. Sada ponovo pokreni svoj named (naredba je `ndc restart') i upotrijebi dig kako bi pregledao to si napravio. -x pita obrnuti upit: $ dig -x 127.0.0.1 ; <<>> DiG 8.2 <<>> -x ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUERY SECTION: ;; 1.0.0.127.in-addr.arpa, type = ANY, class = IN ;; ANSWER SECTION: 1.0.0.127.in-addr.arpa. 1D IN PTR localhost. ;; AUTHORITY SECTION: 0.0.127.in-addr.arpa. 1D IN NS ns.penguin.bv. ;; Total query time: 5 msec ;; FROM: lookfar to SERVER: default -- 127.0.0.1 ;; WHEN: Sat Dec 16 01:13:48 2000 ;; MSG SIZE sent: 40 rcvd: 110 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: ______________________________________________________________________ ; ; Datoteka zone za domenu linux.bogus ; ; Potpuna datoteka zone ; $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, dananji datum + dananja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 4W ; 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 _m_o_r_a 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 = osnovno ime, op.prev.) zapis za stroj koji se navede u SOA zapisu. Njegovo ime ne mora biti `ns', moe biti bilo koje ispravno ime stroja. Dalje, hostmaster.linux.bogus treba biti proitano kao hostmaster@linux.bogus. Ovo treba biti mail alias (drugo ime e-maila, op.prev.), ili mailbox (e-mail `sandui', op.prev.), gdje osoba (osobe) koja odrava DNS redovno ita postu. Bilo kakav e-mail koji se tie domene bit e poslan na adresu navedenu ovdje. Ime ne mora biti `hostmaster', moe biti bilo kakva ispravna e-mail adresa, ali se esto oekuje da e-mail adresa `hostmaster' takoer radi. 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 pote). On govori sustavima za potu gdje slati potu koja je adresirana na netko@linux.bogus, odn. 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, pota e biti poslana onome s prvim veim brojem, sekundarnim strojem za potu, tj. mail.friend.bogus koji ovdje ima prioritet 20. Restartaj named pokreui 'ndc restart'. Pregledaj rezultate digom: $ dig any linux.bogus +pfmin ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23499 ;; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1 ;; QUERY SECTION: ;; linux.bogus, type = ANY, class = IN ;; ANSWER SECTION: linux.bogus. 3D IN MX 10 mail.linux.bogus.linux.bogus. linux.bogus. 3D IN MX 20 mail.friend.bogus. linux.bogus. 3D IN NS ns.linux.bogus. linux.bogus. 3D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 4W ; expiry 1D ) ; minimum Nakon paljivijeg pregleda otkrit e greku. Redak linux.bogus. 3D IN MX 10 mail.linux.bogus.linux.bogus. je sasvim neispravan. Treba biti: linux.bogus. 3D IN MX 10 mail.linux.bogus. Namjerno sam napravio greku kako bi ti mogao uiti iz nje :-) Gledajui u datoteku zone nai emo ovaj redak: MX 10 mail.linux.bogus ; primarni Mail eXchanger Nedostaje mu toka. Ili ima `linux.bogus' vika. Ako ime stroja u datoteci zone ne zavrava tokom, porijeklo se dodaje na njen kraj uzrokujui 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 vie volim zadnji oblik, krai je za tipkanje. Postoje neki BIND znalci koji se ne slau, a i neki koji se slau s ovim. U datoteci zone zapis bi trebao zavravati domenom i `.', ili bez iega, kada bi se nadopunio porijeklom. Moram naglasiti da u datoteci named.conf _n_e _s_m_i_j_e biti `.' nakon imena domena. Nema pojma koliko puta je `.' vika ili manjka `sredila' stvari i uasno zbunila ljude. Nakon to sam ovo naglasio, evo nove datoteke zone, i sa nekim dodatnim informacijama: ______________________________________________________________________ ; ; Datoteka zone za domenu linux.bogus ; ; Potpuna datoteka zone ; $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, dananji datum + dananja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 4W ; expire, sekundi 1D ) ; minimum, sekundi ; TXT "Linux.Bogus, tvoji DNS savjetnici" 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" ______________________________________________________________________ Vie 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 = osnovno ime) je nain da date svakom stroju vie imena. Tako je `www' drugo ime za `ns'. Koritenje CNAME zapisa je pomalo kontroverzno. Ali je sigurno postupati po pravilu da MX, CNAME ili SOA zapis _n_i_k_a_d ne smiju upuivati na CNAME zapis, ve na neto sa A zapisom, i ne preporuuje se imati: ______________________________________________________________________ bla CNAME www ; NE! ______________________________________________________________________ ali je ispravno imati: ______________________________________________________________________ bla CNAME ns ; Da! ______________________________________________________________________ Takoer 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. Moe oekivati prilian broj administratora mail sustava Tamo Vani koji e nametati ovo pravilo ak i ako takve adrese tebi budu radile. Nain kako izbjei ovo je koristei A zapise (i moda neke druge, kao MX zapis): ______________________________________________________________________ www A 192.168.196.2 ______________________________________________________________________ Stanovit broj starih BIND strunjaka preporuuje uope _n_e koristiti CNAME. Ipak, rasprava o tome zato ili zato ne je izvan okvira ovog KAKOa. Ali kako vidi, ovaj KAKO i puno servera ne prate to pravilo. Uitaj novu bazu podataka pokreui `ndc reload', to uzrokuje da named ponovo proita svoje datoteke. $ dig linux.bogus axfr ; <<>> DiG 8.2 <<>> linux.bogus axfr $ORIGIN linux.bogus. @ 3D IN SOA ns hostmaster ( 199802151 ; serial 8H ; refresh 2H ; retry 4W ; expiry 1D ) ; minimum 3D IN NS ns 3D IN NS ns.friend.bogus. 3D IN MX 10 mail 3D IN MX 20 mail.friend.bogus. 3D IN TXT "Linux.Bogus, tvoj DNS savjetnik" gw 3D IN TXT "The router" 3D IN HINFO "Cisco" "IOS" 3D IN A 192.168.196.1 localhost 3D IN A 127.0.0.1 mail 3D IN HINFO "386sx" "Linux 1.2" 3D IN MX 10 mail 3D IN MX 20 mail.friend.bogus. 3D IN A 192.168.196.4 www 3D IN CNAME ns donald 3D IN TXT "DEK" 3D IN HINFO "i486" "Linux 2.0" 3D IN MX 10 mail 3D IN MX 20 mail.friend.bogus. 3D IN A 192.168.196.3 ns 3D IN HINFO "Pentium" "Linux 2.0" 3D IN MX 10 mail 3D IN MX 20 mail.friend.bogus. 3D IN A 192.168.196.2 ftp 3D IN HINFO "P6" "Linux 2.1.86" 3D IN MX 10 mail 3D IN MX 20 mail.friend.bogus. 3D IN A 192.168.196.5 @ 3D IN SOA ns hostmaster ( 199802151 ; serial 8H ; refresh 2H ; retry 4W ; expiry 1D ) ; minimum ;; Received 29 answers (29 records). ;; FROM: lookfar to SERVER: 127.0.0.1 ;; WHEN: Sat Dec 16 01:35:05 2000 To je dobro. Kako vidi, izgleda vrlo slino samoj datoteci zone. Provjerimo to kae za sam www: $ dig www.linux.bogus +pfmin ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27345 ;; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1 ;; QUERY SECTION: ;; www.linux.bogus, type = A, class = IN ;; ANSWER SECTION: www.linux.bogus. 3D IN CNAME ns.linux.bogus. ns.linux.bogus. 3D IN A 192.168.196.2 Drugim rijeima, pravo ime za www.linux.bogus je ns.linux.bogus, i daje ti neke informacije o ns-u takoer, dovoljno da se spoji na njega, da si program. Sada smo na pola puta. 55..33.. OObbrrnnuuttaa zzoonnaa Sada programi mogu prebacivati imena u linux.bogus-u u adrese na koje se mogu spojiti. Ali takoer je potrebna i obrnuta zona, koja omoguuje da DNS prebacuje iz adrese u ime. Ovu metodu koriste mnogi serveri raznih vrsta (FTP, IRC, WWW i drugi) da bi odredili hoe li priati s tobom ili ne, a ako hoe, moda i koliko e ti prioriteta pridati. Za puni pristup svim uslugama na Internetu obrnuta zona je obavezna. Stavi ovo u named.conf: ______________________________________________________________________ zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; }; ______________________________________________________________________ Ovo je upravo kao i sa 0.0.127.in-addr.arpa, a i sadraj je slian: ______________________________________________________________________ $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, dananji datum + dananja revizija 8H ; Refresh 2H ; Retry 4W ; 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 dig-om: ______________________________________________________________________ $ dig -x 192.168.196.4 +pfmin ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8764 ;; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUERY SECTION: ;; 4.196.168.192.in-addr.arpa, type = ANY, class = IN ;; ANSWER SECTION: 4.196.168.192.in-addr.arpa. 3D IN PTR mail.linux.bogus. ______________________________________________________________________ tako, izgleda OK, neka izbaci cijelu stvar da i to pregleda: ______________________________________________________________________ dig -x 192.168.196 AXFR ; <<>> DiG 8.2 <<>> -x AXFR $ORIGIN 196.168.192.in-addr.arpa. @ 3D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 4W ; expiry 1D ) ; minimum 3D IN NS ns.linux.bogus. 4 3D IN PTR mail.linux.bogus. 2 3D IN PTR ns.linux.bogus. 5 3D IN PTR ftp.linux.bogus. 3 3D IN PTR donald.linux.bogus. 1 3D IN PTR gw.linux.bogus. @ 3D IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial 8H ; refresh 2H ; retry 4W ; expiry 1D ) ; minimum ;; Received 8 answers (8 records). ;; FROM: lookfar to SERVER: 127.0.0.1 ;; WHEN: Sat Dec 16 01:44:03 2000 ______________________________________________________________________ Izgleda dobro! Ako kod tebe nije tako izgledalo, potrai poruke o grekama u syslogu, objasnio sam kako to uiniti u prvom poglavlju, pod naslovom "Startanje nameda". 55..44.. RRiijjeeii oopprreezzaa Postoji nekoliko stvari koje bi trebao dodati ovdje. IP brojevi koriteni gore su uzeti iz jednog od blokova `privatnih mrea', tj. brojevi koje nije doputeno koristiti javno 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 BIND-u 8 named moe obavijestiti ostale servere navedene u NS zapisima u datoteci zone kada je zona promijenjena. Ovo je zgodno za uobiajenu upotrebu, ali za privatne pokuse sa zonama ova funkcija treba biti iskljuena -- 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 sljedee poglavlje. 55..55.. ZZaattoo nnee rraaddee oobbrrnnuuttii uuppiittii.. Postoji par ``kvaka'' koje se normalno izbjegnu s upitima za imenima, ali koje se esto vidi pri podeavanju obrnutih zona. Prije no to nastavi, trebat e ispravne obrnute upite svojih strojeva na svom imenskom serveru. Ako to ne radi, vrati se i popravi ih prije nastavljanja. Raspravit u dva neuspjeha obrnutih upita koji se mogu vidjeti izvan tvoje mree. 55..55..11.. OObbrrnnuuttaa zzoonnaa nniijjee pprreeppuutteennaa.. Kada od pruatelja usluga zatrai opseg mrenih adresa i ime domene, to se ime normalno uvijek prepusti tebi, ti biva opunomoen za administriranje (eng. delegate). Postupak preputanja (eng. delegation) je povezujui NS zapis koji pomae u prelaenju s jednog imenskog servera na drugi, kao to je objanjeno u gornjem poglavlju o suhoparnoj teoriji. Proitao si to, zar ne? Ako tvoja obrnuta zona ne radi, vrati se i proitaj. Sada. Obrnuta zona takoer treba biti preputena. Ako si od svog pruatelja usluga dobio mreu 192.168.196 s linux.bogus domenom, oni trebaju postaviti NS zapise za tvoju obrnutu zonu kao i za normalnu zonu. Ako prati lanac od in-addr.arpa do tvoje mree, vjerojatno e nai prekid u lancu, vrlo vjerojatno kod tvog pruatelja usluga. Nakon to nae problem, obrati se svom pruatelju usluga i trai od njih da isprave greku. 55..55..22.. IImmaa ppooddmmrreeuu bbeezz kkllaassaa Ovo je pomalo napredna tema, ali podmree bez klasa su danas vrlo este i vjerojatno je ima ako si u maloj tvrtci. Podmrea bez klasa je ono to ini da Internet danas radi. Prije par godina je bilo puno buke oko nedostatka IP brojeva. Pametni ljudi iz IETF-a (Internet Engineering Task Force, oni odravaju Internet) su razmislili i rijeili problem. Za odreenu cijenu. Cijena je to da e dobiti manje od ``C'' podmree i neke stvari e se moda pokvariti. Molim pogledaj Ask Mr. DNS at za dobro objanjenje ovoga i kako s tim raditi. Jesi li proitao? Neu to objanjavati, molim te proitaj. Prvi dio problema je to to tvoj ISP mora shvaati tehniku koju opisuje Mr. DNS. Ovo ne poznaju svi mali ISP-ovi, pa e im moda to trebati objasniti, i biti uporan. Ali prvo provjeri da to sam razumije ;-). Oni e onda podesiti dobru obrnutu zonu na svom serveru iju e ispravnost moi provjeriti digom. Drugi i posljednji dio problema je to da ti mora razumjeti tehniku. Ako nisi siguran, vrati se i ponovo proitaj o njoj. Tada e moi podesiti svoju besklasnu obrnutu zonu kao to je opisao Mr. DNS. Ovdje vreba jo jedna zamka. Stariji `resolveri' _n_e_e moi pratiti CNAME trik u lancu i nee uspjeti nai ime tvog stroja iz IP adrese. Ovo moe rezultirati time da neke mrene usluge tvoj stroj stave u krivu klasu pristupa, onemogue mu pristup ili tako neto. Ako naleti na tako neto, jedino rjeenje (meni znano) je da tvoj ISP umetne tvoj PTR zapis direktno u njihovu trik besklasnu datoteku zone umjesto trik CNAME zapisa. Neki ISP-ovi e ponuditi druge naine rjeavanja ovoga, kao to su Web- bazirani formulari u koje moe upisati svoja obrnuta prepisivanja ili drugi automagini sustavi. 55..66.. ``SSllaavvee'' sseerrvveerrii Jednom kad podesi svoje zone ispravno na primarnom serveru (eng. `master', gospodar) mora podesiti makar jedan sekundarni server (eng. `slave', rob). `Slave' serveri su potrebni za robusnost. Ako se tvoj `master' server srui, ljudi s mree e jo uvijek moi doi do informacija o tvojoj domeni od `slave' servera. Jedan `slave' server treba biti to je dalje mogue od `mastera'. Tvoji `master' i `slave' serveri trebaju dijeliti to je manje mogue od ovoga: napajanje, lokalnu mreu, ISP, grad i zemlja. Ako su sve ove stvari razliite za tvoje `master' i `slave' servere, naao si jako dobar `slave'. `Slave' je jednostavno imenski server koji kopira datoteke zona od `mastera'. Podeava ga ovako. ______________________________________________________________________ zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 192.168.196.2; }; }; ______________________________________________________________________ Mehanizam nazvan `zone-transfer' se koristi za kopiranje podataka. Prebacivanje zone se kontrolira kroz tvoj SOA zapis. ______________________________________________________________________ @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, dananji datum + dananja revizija 8H ; refresh, seconds 2H ; retry, seconds 4W ; expire, seconds 1D ) ; minimum, seconds ______________________________________________________________________ Zona se jedino prenosi ako je `serial' (tj. serijski broj) na `masteru' vei od onoga na `slaveu'. Nakon svakog `refresh' (tj. osvjeavanje) intervala, `slave' e provjeriti da li se to mijenjalo na `masteru'. Ako provjera ne uspije (jer je `master' nedostupan), on e ponovo pokuati nakon `retry' (tj. ponovljen pokuaj) intervala. Ako nastavi s neuspjesima do `expire' (tj. istek roka) intervala, `slave' e izbrisati zonu sa svog datotenog sustava i vie nee biti server za nju. 66.. PPrriimmjjeerr pprraavvee ddoommeennee ((uu kkoojjeemm eemmoo ppookkaazzaattii nneekkee pprraavvee ddaattootteekkee zzoonnee)) Korisnici su predloili da, uz kolski primjer, ukljuim i pravi primjer domene koja radi. Koristim ovaj primjer sa dozvolom Davida Bullocka iz LAND-5. Ove datoteke su bile aktualne 24. rujna 1996., i ureivane su da se uklope u BIND 8 ogranienja i koriste moje nadopune. Tako da ovo to vidite ovdje se poneto razlikuje od onoga to ete dobiti ako sada postavite upit LAND-5-ovim imenskim serverima. 66..11.. //eettcc//nnaammeedd..ccoonnff ((iillii //vvaarr//nnaammeedd//nnaammeedd..ccoonnff)) Ovdje nalazimo `master' zone sekcije za dvije potrebne obrnute zone: mrea 127.0.0, kao i LAND-5-ova 206.6.177 podmrea, te `primary' liniju za LAND-5-ovu normalnu zonu land-5.com. Takoer 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, kako bi izbjegli nezgode. 66..22.. //vvaarr//nnaammeedd//rroooott..hhiinnttss Ne zaboravi da je ova datoteka dinamika, i da je ova navedena ovdje stara. Bolje ti je da koristi onu napravljenu sada, digom, kao to je to objanjeno 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.srce.hr to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4 ;; WHEN: Sun Feb 15 01:22:51 1998 ;; MSG SIZE sent: 17 rcvd: 436 ______________________________________________________________________ 66..33.. //vvaarr//nnaammeedd//zzoonnee//112277..00..00 Samo osnove, obavezni SOA zapis, i zapis koji odreuje 127.0.0.1 kao localhost. Oba su nuna. Nita vie ne treba biti u ovoj datoteci. Ona se vjerojatno nikad nee morati mijenjati, osim ako se adresa tvog imenskog servera ili odravatelja DNS-a 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. ______________________________________________________________________ Ako pogleda na nasumino odabranu BIND instalaciju, vjerojatno e primijetiti da $TTL redak nedostaje, kao i ovdje. On prije nije koriten, i tek je verzija BIND-a 8.2 poela upozoravati na njegovo nepostojanje. Preporuujem stavljanje $TTL retka u datoteke zona kako bude nalazio da nedostaju. 66..44.. //vvaarr//nnaammeedd//zzoonnee//llaanndd--55..ccoomm Ovdje vidimo obavezni SOA zapis, i potrebne NS zapise. Moemo vidjeti da on ima sekundarni name server na ns2.psi.net. Ovo je kako treba biti, _u_v_i_j_e_k treba imati vanjski site za sekundarni server kao rezervnu kopiju (eng. backup). Moemo takoer 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 koritenje 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 koritena adresa za kontakt osobu. Serijski broj je u uobiajenom ggggmmdd formatu sa dodanom dananjom revizijom; ovo je vjerojatno esta inaica datoteke zone dana 20. rujna 1996.g. Zapamti da se serijski broj _m_o_r_a monotono poveavati, ovdje je samo _j_e_d_n_a znamenka za dananji serijski broj, tako da nakon 9 ureivanja on mora ekati do sutra prije nego to promijeni datoteku ponovo. Razmisli o koritenju dvije znamenke. ______________________________________________________________________ @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, dananji datum + dananja revizija 8H ; refresh, sekundi 2H ; retry, sekundi 4W ; expire, sekundi 1D ) ; minimum, sekundi NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; primarni Mail eXchanger TXT "LAND-5 Corporation" 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 ; ; 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 nai e da su imena strojeva u obliku ws__b_r_o_j. Od kasnijih BIND 4 verzija, named je poeo provoditi ogranienja u znakovima koji se smiju koristiti u imenima strojeva. Tako da to uope ne radi sa BIND-8, i ja sam zamijenio `_' (podvlaku) `-' (crtom) za upotrebu u ovom KAKOu. Jo jednu stvar treba primijetiti, da radne stanice nemaju individualna imena, ve predmetak i zadnja dva dijela IP broja. Koristei takav sustav moe znatno pojednostaviti odravanje, ali to moe biti pomalo neosobno, i zapravo biti izvor nezadovoljstva meu tvojim korisnicima. Takoer vidimo da je funn.land-5.com drugo ime za land-5.com, ali koristei A zapis, ne CNAME zapis. Ovo je dobro naelo, kao to smo ve ustvrdili. 66..55.. //vvaarr//nnaammeedd//zzoonnee//220066..66..117777 Ovu datoteku u komentirati ispod ______________________________________________________________________ @ 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 podeavanja koji izgleda uzrokuje najvie nevolja. Koristi se da se nae ime stroja ako ima IP broj istog. Primjer: ti si IRC server i prihvaa veze od IRC klijenata. Ipak, ti si norveki IRC server tako da eli prihvatiti veze samo iz Norveke i ostalih skandinavskih zemalja. Kada uspostavi vezu s klijentom, C biblioteka ti moe rei IP broj drugog stroja zato to se IP broj klijenta pojavljuje u svim paketima koji prolaze mreom. Sada moe pozvati funkciju `gethostbyaddr' koja e pogledati ime stroja odreenog IP brojem. `Gethostbyaddr' e pitati DNS server, koji e onda pregledati DNS traei stroj. Pretpostavimo da se klijent spaja s 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 nai 200.177.6.206.in-addr.arpa. DNS server e prvo nai arpa. servere, pa in-addr.arpa. servere, pratei obrnuti trag kroz 206, pa 6, i na kraju e nai server za 177.6.206.in- addr.arpa zonu na LAND-5. Iz toga e na kraju dobiti odgovor da za 200.177.6.206.in-addr.arpa imamo ``PTR ws-177200.land-5.com'' zapis, to znai da ime koje ide uz 206.6.177.200 jest ws-177200.land-5.com. Kao i objanjenje kako se pogleda prep.ai.mit.edu, i ovo je pomalo fiktivno. Vratimo se na primjer IRC servera. IRC server prihvaa samo veze iz skandinavskih zemalja, odn. *.no, *.se, i *.dk, pa ime ws-177200.land-5.com oito ne zadovoljava nijedan uvjet, i server e se odbiti povezati. Kada _n_e _b_i postojalo reverzno mapiranje IP-a 206.2.177.200 kroz in-addr.arpa zonu, server ne bi nikako mogao nai ime stroja, i morao bi usporediti 206.2.177.200 sa *.no, *.se, i *.dk, to ne bi uspjelo. Neki ljudi e ti rei da je obrnuto `mapiranje' bitno samo za servere, ili nije uope bitno. Nije tako, jer puno FTP, NNTP (news), IRC pa ak i neki HTTP (WWW) serveri _n_e_e prihvatiti veze sa strojevima ije ime ne mogu pronai. Zato je obrnuto `mapiranje' strojeva zapravo _o_b_a_v_e_z_n_o. 77.. OOddrraavvaannjjee SSaammoo nneekkaa rraaddii.. Jednu stvar mora initi za odravanje nameda, osim da ih puta da rade. To je odravanje root.hints datoteke aurnom. Najlaki nain je koritenje diga. 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 slie onima u root.hints datoteci. Sauvaj ih u datoteku (dig @e.root-servers.net . ns > root.hints.new) i zamijeni staru root.hints datoteku s novom (root.hints.new, op.prev.). Zapamti da treba restartati named nakon promjene cache datoteke. Al Longyear mi je poslao ovu skriptu koja se moe pokrenuti automatski da obnovi root.hints. Unesite je u crontab kako bi se pokretala jednom mjeseno i zaboravite na nju. Ova skripta pretpostavlja da ima podeen i radei e-mail, te da je alias `hostmaster' definiran. Mora je hackirati da je uskladi sa svojim postavkama. (sauvati kao izvrnu 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. # # Original by Al Longyear # Updated for BIND 8 by Nicolai Langfeldt # Miscelanious error-conditions reported by David A. Ranch # Ping test suggested by Martin Foster # named up-test suggested by Erik Bryer. # ( echo "To: hostmaster " echo "From: system " # Is named up? Check the status of named. case `ndc status 2>&1` in *'cannot connect to command channel'*) echo "named is DOWN. root.hints was NOT updated" echo exit 0 ;; esac PATH=/sbin:/usr/sbin:/bin:/usr/bin: export PATH # NOTE: /var/named must be writable only by trusted users or this script # will cause root compromise/denial of service opportunities. cd /var/named 2>/dev/null || { echo "Subject: Cannot cd to /var/named, error $?" echo echo "The subject says it all" exit 1 } # Are we online? Ping a server at your ISP case `ping -qnc 1 some.machine.net 2>&1` in *'100% packet loss'*) echo "Subject: root.hints NOT updated. The network is DOWN." echo echo "The subject says it all" exit 1 ;; esac dig @e.root-servers.net . ns >root.hints.new 2> errors case `cat root.hints.new` in *NOERROR*) # It worked :;; *) echo "Subject: The root.hints file update has FAILED." echo echo "The root.hints update has failed" echo "This is the dig output reported:" echo cat root.hints.new errors exit 1 ;; esac echo "Subject: The root.hints file has been updated" echo echo "The root.hints 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 errors 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 moda vidjeli root.hints datoteku koja je dostupna FTP-om od InterNIC-a. Molim vas, nemojte koristiti FTP da obnovite root.hints, jer je gornja metoda puno bolja za mreu, i InterNIC. 88.. 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). Malo sam ga uredio sam ga, kako bi odgovarao novom imenu poglavlja. Nema puno posla. Osim to se koristi named.conf umjesto named.boot datoteke, sve je identino. I BIND 8 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 sljedee: (Ako ima binarni paket, skripta je vjerojatno tu negdje, ali nisam siguran gdje op.a.). ______________________________________________________________________ ./named-bootconf.pl < named.boot > named.conf ______________________________________________________________________ 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 moe biti u named.boot datoteci, mada ne dodaje sva nova unapreenja i konfiguracijske opcije koje doputa BIND 8. Evo kompletnijeg named.conf-a koji radi isto to, samo malo uinkovitije. ______________________________________________________________________ // 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"; datasize 20M; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; }; zone "." IN { type hint; file "root.hints"; }; ______________________________________________________________________ U bind8/src/bin/named/test direktoriju BIND 8 source distribucije moete nai ovo i kopije datoteka zona koje mnogi ljudi mogu samo ubaciti i odmah koristiti. Formati datoteka zona i root.hints datoteke su identini, kao i naredbe za njihovo mijenjanje. 99.. PPiittaannjjaa ii OOddggoovvoorrii Molim te, proitaj ovo poglavlje prije nego mi e-maila. 1. Moj named trai 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? Prijedlog: forward only;. Moda e isto trebati ___________________________________________________________________ query-source port 53; ___________________________________________________________________ unutar ``options'' dijela named.conf datoteke, kao to se preporuuje u primjeru ``caching'' poglavlja. 3. Kako da uinim da DNS krui kroz dostupne adrese za uslugu, recimo www.busy.site da dobije `load balancing' efekt, ili neto slino? Napravi vie AA zapisa za www.busy.site i koristi BIND 4.9.3 ili noviji. Tada e bind izokretati (eng. round-robin) odgovore. Ovo _n_e_e raditi s ranijim verzijama BIND-a. 4. elim podestiti DNS na (zatvorenom) intranetu. to da radim? Izbaci root.hints datoteku i samo podesi datoteke zone. To takoer znai da ne mora nabavljati novu `hint' datoteku 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; }; }; ___________________________________________________________________ Moe navesti vie alternativnih master servera s kojih se zona moe kopirati, unesi ih u masters listu, odvojene znakom `;' (toka-zarez). 6. elim da BIND radi dok nisam spojen na mreu. Postoje dvije stvari vezane za ovo: +o Specifino za BIND 8, Adam L Rice mi je poslao ovaj e-mail, o tome kako bezbolno imati DNS na stroju koji se spaja modemom: Otkrio sam da s novim verzijama BIND-a ovo [ datotekama u /etc i ponovo pokretati server. U mom sluaju, samo sam dodao retke forward only; forwarders { 193.133.58.5; }; u options { } dio moje named.conf datoteke. Radi vrlo lijepo. Jedini nedostatak ovoga je to to smanjuje nevjerojatno sofisticirani komad DNS softvera na stanje priglupog cachea. Ja bih donekle bio zadovoljan samo s priglupimg cacheom za DNS umjesto ovoga, ali izgleda da ne postoji takav program za Linux. +o Dobio sam ovaj e-mail od Iana Clarka, , gdje on objanjava svoj nain kako to uiniti: Ja pokreem named na svom 'masquerading' stroju. Imam dvije root.hints datoteke, jedna se zove root.hints.real i sadri prava imena korijenskih servera, i druga koja se zove root.hints.fake koja sadri: ---- ; root.hints.fake ; this file contains no information ---- Kada odlazim s mree (off line), kopiram root.hints.fake u root.hints i restartam named. Kada idem na mreu (on line), kopiram root.hints.real u root.hints i restartam named. Ovo se radi automatski iz ip-down odn. ip-up skripte. 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 mree bez timeout zastoja za vanjska imena domena, a dok sam na mrei, upiti za vanjske domene rade normalno. Peter Denison je pak mislio da Ian ne ide dovoljno daleko. On pie: Kada sam spojen) serviraj sve cacheirane unose (i one s lokalne mree) odmah za ne-cacheirane unose, i proslijedi imenskom serveru mog ISPa Kada nisam spojen) serviraj sve upite za lokalnu mreu odmah odustani od svih ostalih upita **odmah** Kombinacija mijenjanja root cache datoteke i prosljeivanja upita ne radi. Zato sam podesio (nakon neto rasprave o ovome u oblinjem LUG-u) dva nameda ovako: named-online: proslijeuje ISP-ovom imenskom serveru master za localnet zonu master za localnet obrnutu zonu (1.168.192.in-addr.arpa) master za 0.0.127.in-addr.arpa slua na portu 60053 named-offline: ne proslijeuje "lana" root cache datoteka slave za 3 lokalne zone (master je 127.0.0.1:60053) slua na portu 61053 I kombinirao ih s proslijeivanjem portova, da se port 53 alje na 61053 kada nisam na vezi, i na port 60053 kada sam na vezi. (Koristim novi netfilter paket pod 2.3.18, ali i stari (ipchains) mehanizam bi trebao raditi.) Primijeti da ovo nee ba odmah raditi, jer postoji sitan bug u BIND 8.2, kojeg sam prijavio razvijateljima, a koji spreava slave da ima mastera na istoj IP adresi (pa i ako je port drugi). Zakrpa je trivijalna, i brzo bi se trebala ukljuiti, nadam se. +o Takoer sam dobio informaciju kako bind radi interaktivno s NFS-om i portmapper-om na veinom offline stroju, od Karl-Maxa Wangera: Ja obino pokreem svoj named na svim svojim strojevima koji se tek povremeno vezuju na Internet modemom. Imenski server slui samo kao cache, nema svoju domenu i sve provjerava kod imenskih servera u root.cache datoteci. Kao to je to uobiajeno kod Slackwarea, 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 veinu vremena to nije radilo. Isto se dogaalo neovisno da li sam koristio PLIP, PCMCIA ethernet karticu ili PPP preko serijske veze. Nakon nekog vremena nagaanja i eksperimentiranja shvatio sam izgleda da je named brljao s procesom registracije nfsd-a i mountd-a koji oni moraju proi s portmapperom na dizanju sustava (startam te demone pri dizanju kao i obino). Startanje named-a nakon nfsd-a i mountd-a potpuno je uklonilo ovaj problem. Kako ne treba oekivati bilo kakve probleme pri takvoj izmijenjenoj sekvenci dizanja sustava, preporuio bih svima da to naprave na taj nain i sprijee mogui problem. +o I na kraju, postoje HOWTO informacije o ovome kod Ask Mr. DNS na . Radi se o o BIND-u 4, dodue, pa ete morati prilagoditi ono to on kae na BIND 8. 7. Gdje caching only imenski server dri svoj cache? Postoji li nain da kontroliram veliinu cachea? Kompletan se cache dri u memoriji, i nikad se ne zapisuje na disk. Svaki put kad ubije named, cache se gubi. Cache se nikako _n_e _m_o_e kontrolirati. named ga nadgleda prema nekim jednostavnim pravilima i to je to. Ne moe kontrolirati cache niti njegovu veliinu ni iz kojeg razloga. Ako to eli, moe to ``popraviti'' hackirajui named. Ipak, ovo nije preporueno. 8. Da li named uva cache izmeu restarta? Mogu li ga natjerati da ga sauva? Ne, named _n_e sauva cache kada umre. To znai da se cache mora ponovo graditi svaki put kada ubije i restarta named. _N_e_m_a naina da natjera named da sauva cache u datoteku. Ako eli, moe to ``popraviti'' hackirajui named. Ipak, ovo nije preporueno. 9. Kako mogu dobiti domenu? elim podesiti svoju domenu koja e se zvati (naprimjer) linux-rules.net. Kako da se domena koju elim dodijeli meni? Molim te kontaktiraj svog pruatelja mrenih usluga. Oni e ti moi pomoi s ovim. Molim primijetiti da u veini svijeta mora platiti kako bi dobio domenu. 10. Kako mogu osigurati svoj DNS server? Kako da podesim podijeljeni DNS? Oba ova pitanja su napredne teme. Obje su pokrivene u . Neu ih dalje objanjavati ovdje. 1100.. KKaakkoo ppoossttaattii vveeii DDNNSS aaddmmiinn.. DDookkuummeennttaacciijjaa ii aallaattii.. Prava Dokumentacija postoji. Na mrei i tiskana. itanje nekoliko knjiga je potrebno da od malog DNS admina postane veliki admin. Od tiskanih izdanja ja sam napisao _T_h_e _C_o_n_c_i_s_e_G_u_i_d_e _t_o _D_N_S _a_n_d _B_I_N_D, Nicolai Langfeldt, objavio Que (ISDN0-7897-2273-9). Knjiga je slina ovom KAKO- u. Samo ima vie detalja, i puno vie svega. Ali, standardna knjiga je _D_N_S _a_n_d _B_I_N_D, C. Liu i P. Albitz, izdaje O'Reilly & Associates, (ISBN 0-937175-82-X). Takoer je odlina, mada opisuje BIND 4, to i nije neki problem. Postoji i poglavlje 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, izdaje O'Reilly (ISBN 0-937175-82-X). Jo jedan `must' za dobru DNS administraciju (ili bilo to dobro, kad smo kod tog) 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. Pirsig :-) Dostupna kao ISBN 0688052304 i drugi. Na mrei e nai stvari na (DNS Resources Directory), ; _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 veina, ako ne i svi, od RFC-ova navedenih dolje, su distribuirani sa samim BIND-om). Nisam proitao veinu ovih, pa ipak, ni ja nisam veliki DNS admin. Arnt Gulbrandsen, s druge strane, je proitao _B_O_G i on je ushien zbog toga :-). USENET grupa je o DNS-u. Takoer postoji i veliki broj RFC-ova o DNSu, a najvaniji 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, this is available at 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.