______________________________________________________________________ Sadrzaj ______________________________________________________________________ 11.. UUvvoodd Kljucne rijeci: 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 zadrzavanje ove poruke o autorskim pravima. 11..22.. ZZaasslluuggee ii ppoozziivv zzaa ppoommoocc Zelio bih zahvaliti Arntu Gulbrandsenu kojeg sam napatio nedovrsenim dijelovima ovoga i koji je dao puno korisnih prijedloga. Takoder bih zelio zahvaliti ljudima koji su e-mailom poslali prijedloge i biljeske. Ovo nikada nece biti zavrsen dokument, molim vas saljite mi e-mail o vasim problemima i uspjesima. Vi mozete uciniti ovaj HOWTO boljim. Dakle, molim vas, saljite 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 posaljete e-mail i zelite 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. Takoder, molim vas, procitajte ``PiO'' poglavlje prije nego mi e-mailate. Jos jedna stvar, ja razumijem samo norveski i engleski. Ovo je jedan KAKO. Odrzavao sam ga kao dio LDP-a od 1995. U 2000. godini sam napisao knjigu o istoj temi. Zelio bih reci da iako je ovaj KAKO na mnogo nacina slican knjizi, on _n_i_j_e razvodnjena verzija izmisljena kako bi reklamirala knjigu. Ipak, knjigu cete naci medu bibliografijom na kraju ovog KAKOa. Citatelji ovog KAKOa su mi pomogli razumjeti ono sto je tesko razumjeti o DNS-u. Ovo je pomoglo knjizi, ali je i knjiga pomogla meni da vise razmislim o potrebama ovog KAKOa. Knjiga je proizasla iz KAKOa. Treca verzija KAKOa je proizasla iz knjige. Zahvaljujem se izdavacu knjige, Que, koji je riskirao sa mnom :-) 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.. DNS znaci Domain Name System -- sustav imenovanja domena. DNS pretvara imena strojeva u IP adrese koje imaju svi strojevi na mrezi. On prevodi (mapira, kako bi se to reklo u zargonu) iz imena u adresu i iz adrese u ime, i jos neke druge stvari. Ovaj KAKO dokumentira kako definirati takva mapiranja koristeci Unix sustav, uz par stvari specificnih Linux sustavu. Mapiranje je jednostavno povezivanje izmedu dvije stvari, u ovom slucaju imena stroja, kao ftp.linux.org, i IP broja (ili adrese) stroja, kao 199.249.150.4. DNS takoder sadrzi mapiranja u drugom smjeru, iz IP broja u ime stroja; ovo se zove obrnuto mapiranje (eng. "reverse mapping"). DNS je, neupoznatom (tebi ;-), jedno od mracnijih podrucja administriranja mreze. Srecom, DNS nije stvarno tako tezak. Ovaj KAKO ce pokusati uciniti neke stvari jasnijima. On opisuje kako podesiti _j_e_d_n_o_s_t_a_v_a_n 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 _p_r_o_c_i_t_a_t_i 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 napraviti _t_e_l_n_e_t _1_2_7_._0_._0_._1 i time doci na svoj stroj (probaj sad!). Za pocetak takoder trebas ispravne /etc/nsswitch.conf, /etc/resolv.conf i /etc/hosts datoteke, jer njihovu funkciju ovdje necu objasniti. Ako ovo vec nemas podeseno i u radu, Networking-HOWTO i/ili Networking-Overview-HOWTO 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 -- pogledaj poglavlje ``PiO''. Opsluzivanje imenima na Unixu je omoguceno programom zvanim named. On je dio ``BIND'' paketa kojim koordinira Paul Vixie uime Internet Software Consortiuma. Named je ukljucen u vecinu Linux distribucija i obicno je instaliran kao /usr/sbin/named, obicno iz paketa zvanog BIND. Ako imas named, vjerojatno ga mozes i koristiti; ako ga nemas, nabavi ga binarnog sa neke Linux FTP lokacije, ili nadi najnoviji i najbolji izvorni kod sa <ftp://ftp.isc.org/isc/bind/src/>. Ovaj KAKO govori o verziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je jos uvijek dostupna na <http://www.math.uio.no/~janl/DNS/> u slucaju da koristis bind 4 (nazalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako namedova man stranica govori o named.conf, imas BIND 8; ako govori o datoteci named.boot, imas BIND 4. Ako imas 4 i brines o sigurnosti, stvarno bi trebao nadograditi na najnoviju 8-icu. Odmah. 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 zbog krivog upravljanja. 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 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 mozes postici isti prakticni 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 nece nauciti istom sto i citanje ovog KAKOa. Dakle, instaliraj pakete, i onda citaj provjeravajuci datoteke koje su oni instalirali. 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 (Debian: /etc/bind/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"; }; ______________________________________________________________________ Paketi Linux distribucija mogu koristiti razlicita imena datoteka za svaku vrstu datoteka spomenutih ovdje; one ce ipak sadrzavati skoro iste stvari. Linija 'directory' govori namedu gdje da potrazi datoteke. Sve datoteke nazvane slicno ce biti relativne ovome. Takoder, 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 sadrzavati ovo: (_A_k_o _i_z_r_e_z_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_c_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 pocetnih razmaka u datoteci, tj. sve linije trebaju poceti znakom koji nije razmak. Neki programi za obradu dokumenata ce ubaciti razmake na pocetak redaka, uzrokujuci nesto zabune. U tom slucaju molim maknite pocetne 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 odrzavati svako nekoliko. 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 napravi datoteku zvanu 127.0.0 sljedeceg sadrzaja, u poddirektoriju pz: (_O_p_e_t_, _m_o_l_i_m _t_e _m_a_k_n_i _p_o_c_e_t_n_e _r_a_z_m_a_k_e _a_k_o _i_z_r_e_z_e_s _i _z_a_l_i_j_e_p_i_s _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 ces /etc/resolv.conf koji ce izgledati slicno 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' odreduje koje ce se domene pretrazivati za neki host na kojeg se zelis spojiti. Linija `nameserver' odreduje adresu tvog imenskog servera, u ovom slucaju 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 zelis vise imenskih servera, stavi `nameserver' liniju za svaki. (Napomena: named nikada ne cita ovu datoteku, to radi resolver koji koristi named. Napomena 2: U nekim /etc/resolv.conf datotekama ces naci redak "domain". To je u redu, ali nemoj koristiti i "search" i "domain", samo jedan od njih ce raditi.) 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 na kraju bla. Ne bi trebao staviti puno domena u "search" liniju, jer treba vremena kako bi se sve pretrazile. 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 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: (_S_j_e_t_i _s_e _m_a_k_n_u_t_i _p_o_c_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. Ocito trebas staviti prava imena domena umjesto ovih primjera. Molim te uoci kako nema tocke na krajevima imena domena. Ovo je vazno; molim te uoci kako nema tocke na krajevima imena domena. 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) 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 greskama, mora da je doslo do greske. named ce imenovati datoteku u kojoj je greska. Vrati se i provjeri datoteku. Pokreni `ndc restart' kada je popravis. Sada mozete isprobati svoje postavke. Tradicionalno se za to koristio program nslookup. Danas se preporuca 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 dobijes, onda radi. Nadajmo se. Ako se razlikuje, 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: $ 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 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 buduci da on pretrazuje sve domene koje si naveo u /etc/resolv.conf datoteci. Molim te primijeti "aa" u "flags:" retku. To znaci da je odgovor bio sluzben, da je svjeze dobiven od nadleznog servera (eng. "authoritative"). Objasnit cu "authoritative" kasnije. Ako upitas isto to ponovo, dobit ces 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 znaci da named ovaj put nije otisao traziti po mrezi, 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) mogucnosti jer nema "aa". Ipak, sada znas 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 ce ih izvora dobijati se na Linuxu (i nekim drugim Unixima) konfigurira u /etc/nsswitch.conf. 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. Nakon toga nadi liniju koja pocinje sa `hosts:', i ona bi trebala biti ovakva: ______________________________________________________________________ hosts: files dns ______________________________________________________________________ (_Z_a_p_a_m_t_i_o _s_i _s_t_o _s _p_o_c_e_t_n_i_m _r_a_z_m_a_c_i_m_a_, _z_a_r _n_e_? _N_e_c_u _i_h _v_i_s_e _s_p_o_m_i_n_j_a_t_i_.) 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 u DNS-u, prema resolv.conf-u. 33..33.. CCeessttiittaamm Sada znas kako podesiti caching named. Popij pivo, mlijeko, ili sto vec volis kako bi to proslavio. 44.. FFoorrwwaarrddiinngg U velikim, dobro organiziranim, akademskim ili ISP (eng. `Internet Service Provider', pruzatelj Internet usluga) mrezama cete katkad naci da su ljudi koji se brinu o mrezi podesili hijerarhiju DNS servera koji proslijeduju (eng. `forwarders') sto pomaze u olaksavanju pritiska na internu mrezu pa i pritiska na vanjske servere. Ipak, to nije bitno i koristenjem DNS servera vaseg pruzatelja mreznih usluga kao ``forwardera'' mozete uciniti odgovore na upite brzima i manje opterecujucima za vasu mrezu. Ako koristite modem, ovo bi moglo biti prilicno dobro. Za potrebe ovog primjera, pretpostavit cemo da vas pruzatelj mreznih usluga ima dva imenska servera koje zele da koristite, s IP brojevima