DNS KAKO <author>Nicolai Langfeldt, <htmlurl url="mailto:janl@math.uio.no" name="janl@math.uio.no">; preveo Josip Rodin, <htmlurl url="mailto:jrodin@jagor.srce.hr" name="jrodin@jagor.srce.hr">; <date>inačica 1.2, 21. prosinca 2000. (u originalu verzija 3.0) <abstract> KAKO postati mali DNS administrator. </abstract> <toc> <sect>Uvod <p>Ključne riječi: DNS, BIND, BIND 4, BIND 8, named, dialup, PPP, slip, ISDN, Internet, domain, name, resolution, hosts, caching. <p>Ovaj dokument je dio Linux Documentation Projecta. <sect1>Pravne stvari <p>(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 zadržavanje ove poruke o autorskim pravima. <sect1>Zasluge i poziv za pomoć <p>Želio bih zahvaliti Arntu Gulbrandsenu kojeg sam napatio nedovršenim dijelovima ovoga i koji je dao puno korisnih prijedloga. Također bih želio zahvaliti ljudima koji su e-mailom poslali prijedloge i bilješke. <p>Ovo nikada neće biti završen dokument, molim vas šaljite mi e-mail o vašim problemima i uspjesima. Vi možete učiniti ovaj HOWTO boljim. Dakle, molim vas, šaljite komentare i/ili pitanja, ili novac, na <htmlurl url="mailto:janl@math.uio.no" name="janl@math.uio.no">. Ili kupite moju knjigu o DNS-u. Pogledajte bibliografiju za informacije o njoj. Ako pošaljete e-mail i želite odgovor, molim vas budite toliko pristojni da <em/provjerite/ je li povratna adresa ispravna i da radi. Također, molim vas, pročitajte <ref id="qanda" name="PiO"> poglavlje prije nego mi e-mailate. Još jedna stvar, ja razumijem samo norveški i engleski. <p>Ovo je jedan KAKO. Održavao sam ga kao dio LDP-a od 1995. U 2000. godini sam napisao knjigu o istoj temi. Želio bih reći da iako je ovaj KAKO na mnogo načina sličan knjizi, on <em>nije</em> razvodnjena verzija izmišljena kako bi reklamirala knjigu. Ipak, knjigu ćete naći među bibliografijom na kraju ovog KAKOa. Čitatelji ovog KAKOa su mi pomogli razumjeti ono što je teško razumjeti o DNS-u. Ovo je pomoglo knjizi, ali je i knjiga pomogla meni da više razmislim o potrebama ovog KAKOa. Knjiga je proizašla iz KAKOa. Treća verzija KAKOa je proizašla iz knjige. Zahvaljujem se izdavaču knjige, Que, koji je riskirao sa mnom :-) <!-- This is a comment meant for translators: If you're a translator you may put information about reaching someone speaking the language you translate to, and that can help with DNS problems, such as yourself, here (otherwise I get mail in chinese and spanish asking for help about DNS) Ako želiš prevesti ovaj HOWTO (sad je gotovo :), molim te, obavijesti me tako da mogu pratiti na kojim sam jezicima objavljen, a da bih te mogao obavijestiti kad se ovaj HOWTO promijeni. --> <sect1>Posveta <p>Ovaj HOWTO je posvećen Anne Line Norheim Langfeldt. Mada ga ona vjerojatno nikada neće pročitati jer ona nije takav tip djevojke. <sect>Upoznavanje.<label id="intro"> <p><bf/Što ovo je, a što nije./ <p>DNS znači Domain Name System -- sustav imenovanja domena. DNS pretvara imena strojeva u IP adrese koje imaju svi strojevi na mreži. 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 koristeći Unix sustav, uz par stvari specifičnih Linux sustavu. <p>Mapiranje je jednostavno povezivanje između dvije stvari, u ovom slučaju imena stroja, kao <tt/ftp.linux.org/, i IP broja (ili adrese) stroja, kao <tt/199.249.150.4/. DNS također sadrži mapiranja u drugom smjeru, iz IP broja u ime stroja; ovo se zove obrnuto mapiranje (eng. "reverse mapping"). <p>DNS je, neupoznatom (tebi ;-), jedno od mračnijih područja administriranja mreže. Srećom, DNS nije stvarno tako težak. Ovaj KAKO će pokušati učiniti neke stvari jasnijima. On opisuje kako podesiti <em/jednostavan/ DNS server. Počet ćemo sa caching only serverom da bi došli do podešavanja primarnog DNS imenskog servera za domenu. Za kompleksnije postavke možeš pogledati <ref id="qanda" name="PiO"> poglavlje ovog dokumenta. Ako to nije opisano tamo trebat ćeš <em/pročitati/ Pravu Dokumentaciju. Što je i od čega se sastoji Prava Dokumentacija bit će objašnjeno u <ref id="bigger" name="zadnjem poglavlju">. <p>Prije nego počneš s ovim, trebao bi konfigurirati svoj stroj tako da se možeš telnetirati na i s njega, i uspješno uspostaviti sve vrste veza na mrežu, i posebno bi trebao moći napraviti <em/telnet 127.0.0.1/ i time doći na svoj stroj (probaj sad!). Za početak također trebaš ispravne <file>/etc/nsswitch.conf</file>, <file>/etc/resolv.conf</file> i <file>/etc/hosts</file> datoteke, jer njihovu funkciju ovdje neću objasniti. Ako ovo već nemaš podešeno i u radu, Networking-HOWTO i/ili Networking-Overview-HOWTO objašnjavaju kako to podesiti. Pročitaj ih. <p>Kada kažem 'tvoj stroj', mislim na stroj na kojem pokušavaš podesiti DNS, ne na niti jedan drugi stroj koji imaš, a koji je uključen u tvoje mrežne napore. <p>Pretpostavit ću da nisi iza bilo kakvog firewalla koji blokira upite o imenima. Ako jesi, trebat ćeš posebnu konfiguraciju -- pogledaj poglavlje <ref id="qanda" name="PiO">. <p>Opsluživanje imenima na Unixu je omogućeno programom zvanim <tt/named/. On je dio ``BIND'' paketa kojim koordinira Paul Vixie uime Internet Software Consortiuma. <tt/Named/ je uključen u većinu Linux distribucija i obično je instaliran kao <file>/usr/sbin/named</file>, obično iz paketa zvanog <tt/BIND/. <p>Ako imaš <tt/named/, vjerojatno ga možeš i koristiti; ako ga nemaš, nabavi ga binarnog sa neke Linux FTP lokacije, ili nađi najnoviji i najbolji izvorni kod sa <url url="ftp://ftp.isc.org/isc/bind/src/">. Ovaj KAKO govori o verziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je još uvijek dostupna na <url url="http://www.math.uio.no/~janl/DNS/"> u slučaju da koristiš bind 4 (nažalost, KAKO za verziju 4 ne postoji :( op. prev.). Ako <tt/named/ova man stranica govori o <file/named.conf/, imaš BIND 8; ako govori o datoteci <file/named.boot/, imaš BIND 4. Ako imaš 4 i brineš o sigurnosti, stvarno bi trebao nadograditi na najnoviju 8-icu. Odmah. <p>DNS je baza podataka cijele mreže. Pazi što ćeš staviti u nju. Ako staviš smeće u nju, ti i drugi ćete dobiti smeće iz nje. Održavaj svoj DNS urednim i dosljednim i dobro će te služiti. Nauči ga koristiti, administrirati, ispravljati greške i bit ćeš još jedan dobar administrator koji čuva mrežu od padanja na koljena zbog krivog upravljanja. <p><bf/Napomena:/ pravi rezervne (backup) kopije svih datoteka koje ti naložim da promijeniš ako ih već imaš, tako da ako ništa ne bude radilo nakon ovoga, možeš sve vratiti u staro, radno stanje. <sect>Caching imenski server koji nalazi adrese.<label id="caching"> <p><bf/Prva stavka DNS konfiguracije, vrlo korisna korisnicima koji se spajaju modemima, kabelskim modemima i ADSL-om./ <p>Na Red Hat i Red Hat baziranim distribucijama možeš postići isti praktični rezultat kao iz prvog poglavlja ovog KAKOa instaliranjem paketa <tt/bind/, <tt/bind-utils/ i <tt/caching-nameserver/. Ako koristite Debian jednostavno instalirajte <tt/bind/ i <tt/bind-doc/. Dakako da te puko instaliranje ovih paketa neće naučiti istom što i čitanje ovog KAKOa. Dakle, instaliraj pakete, i onda čitaj provjeravajući datoteke koje su oni instalirali. <p>Caching only imenski server će naći odgovor na upite o imenima i zapamtiti odgovor sljedeći put kad ga budeš trebao. Ovo će znatno skratiti vrijeme čekanja sljedeći put, posebno ako si na sporoj vezi. <p>Prvo ćeš trebati datoteku zvanu <file>/etc/named.conf</file> (Debian: <file>/etc/bind/named.conf</file>). Ona je pročitana kad se pokreće <tt/named/. Za sada ona treba sadržavati samo ovo: <code> // Konfiguracijska datoteka za caching only imenski server options { directory "/var/named"; // Odkomentiravanje ovoga može pomoći ako moraš proći kroz // firewall, a stvari baš i ne rade: // query-source address * port 53; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; </code> <p>Paketi Linux distribucija mogu koristiti različita imena datoteka za svaku vrstu datoteka spomenutih ovdje; one će ipak sadržavati skoro iste stvari. <p>Linija '<tt/directory/' govori <tt/named/u gdje da potraži datoteke. Sve datoteke nazvane slično će biti relativne ovome. Također, <file/pz/ je direktorij ispod <file>/var/named</file>, tj. <file>/var/named/pz</file>. <file>/var/named</file> je pravi direktorij prema <em/Linux File system standardu/. <p>Datoteka zvana <file>/var/named/root.hints</file> se spominje ovdje. Ona treba sadržavati ovo: (<em/Ako izrežete i zalijepite ovu datoteku iz elektroničke verzije ovog dokumenta, molim primijetite kako <bf/ne bi/ smjelo biti početnih razmaka u datoteci, tj. sve linije trebaju početi znakom koji nije razmak. Neki programi za obradu dokumenata će ubaciti razmake na početak redaka, uzrokujući nešto zabune. U tom slučaju molim maknite početne razmake/) <code> ; ; 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 </code> <p>Ova datoteka opisuje korijenske imenske servere u svijetu. Oni se mijenjaju s vremenom i lista se mora održavati svako nekoliko. Pogledaj poglavlje <ref id="maint" name="Održavanje"> za upute kako ih osvježavati. <p>Sljedeći odjeljak u <file/named.conf/ datoteci je opis zone. Objasnit ću njenu upotrebu u kasnijim poglavljima, zasad samo napravi datoteku zvanu <file/127.0.0/ sljedećeg sadržaja, u poddirektoriju <file/pz/: (<em/Opet, molim te makni početne razmake ako izrežeš i zalijepiš ovo/) <!-- Obraćamo li se čitatelju jedninom ili množinom? (Preporučam ono prvo, jer ovako imam osjećaj da čitam katekizam.) [MV] Iako jednina zvuči pomalo previše neslužbeno, slažem se :) [JR] --> <code> $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. </code> <p>Dalje, trebat ćeš <file>/etc/resolv.conf</file> koji će izgledati slično ovome: (<em/Opet, makni razmake!/) <code> search poddomena.tvoja-domena.hr tvoja-domena.hr nameserver 127.0.0.1 </code> <p>Linija `<tt/search/' određuje koje će se domene pretraživati za neki host na kojeg se želiš spojiti. Linija `<tt/nameserver/' određuje adresu tvog imenskog servera, u ovom slučaju tvoj stroj jer je to adresa na kojoj radi tvoj <tt/named/ (127.0.0.1 je prava, nema veze ako tvoj stroj ima i neku drugu adresu). Ako želiš više imenskih servera, stavi `<tt/nameserver/' liniju za svaki. (Napomena: <tt/named/ nikada ne čita ovu datoteku, to radi resolver koji koristi <tt/named/. Napomena 2: U nekim <file>/etc/resolv.conf</file> datotekama ćeš naći redak "domain". To je u redu, ali nemoj koristiti i "search" i "domain", samo jedan od njih će raditi.) <p>Da ilustriram što ova datoteka radi: ako klijent stroj pokuša odrediti adresu za <tt/bla/, tada se prvo probava adresa <tt/bla.poddomena.tvoja-domena.hr/, pa <tt/bla.tvoja-domena.hr/, i na kraju <tt/bla/. Ne bi trebao staviti puno domena u "search" liniju, jer treba vremena kako bi se sve pretražile. <p>Ovaj primjer pretpostavlja da si ti u domeni <tt/poddomena.tvoja-domena.hr/, a tvoj stroj se tada zove <tt/tvoj-stroj.poddomena.tvoja-domena.hr/. Search linija ne bi trebala sadržavati tvoju TLD/ND (<em/Top Level Domain/, <em/Najviša Domena/, `<tt/hr/' u ovom slučaju). Ako se često trebaš spajati na strojeve u drugoj domeni, možeš tu domenu dodati u search liniju ovako: (<em/Sjeti se maknuti početne razmake, ako postoje/) <code> search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr </code> i tako dalje. Očito trebaš staviti prava imena domena umjesto ovih primjera. Molim te uoči kako nema točke na krajevima imena domena. Ovo je važno; molim te uoči kako nema točke na krajevima imena domena. <sect1>Startanje named-a <p>Nakon svega, vrijeme je da startamo <tt/named/. Ako modemski biraš providera, prvo se spoji. Otipkaj `<tt/ndc start/', i pritisni enter, bez opcija. Ako to ne uspije, probaj `<tt>/usr/sbin/ndc start</tt>'. Ako ni to ne uspije, pročitaj poglavlje <ref id="qanda" name="PiO">. Sada možeš testirati svoje postavke. Ako pogledaš svoju datoteku sa syslog porukama (obično se zove <file>/var/adm/messages</file>, drugi direktorij može biti <file>/var/log</file>, a druga datoteka <file/syslog/) dok startaš <tt/named/ (učini `<tt>tail -f /var/log/messages</tt>') trebao bi vidjeti nešto kao ovo: <p>(linije koje završavaju sa \ nastavljaju se u sljedećem retku) <tscreen><verb> 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. </verb></tscreen> Ako je bilo ikakvih poruka o greškama, mora da je došlo do greške. <tt/named/ će imenovati datoteku u kojoj je greška. Vrati se i provjeri datoteku. Pokreni `<tt/ndc restart/' kada je popraviš. <p>Sada možete isprobati svoje postavke. Tradicionalno se za to koristio program <tt/nslookup/. Danas se preporuča <tt/dig/: <tscreen><verb> $ 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 </verb></tscreen> <p>Ako to dobiješ, onda radi. Nadajmo se. Ako se razlikuje, vrati se i provjeri sve. Svaki put kad promijeniš <file/named.conf/ datoteku, moraš ponovo startati <tt/named/ koristeći `<tt/ndc restart/' naredbu. <p>Sada možeš postaviti upit. Probaj pogledati ime stroja koji ti je blizu. <tt/jagor.srce.hr/ je meni blizu, na SRCE-u: <tscreen><verb> $ 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 </verb></tscreen> <p><tt/dig/ je sada upitao tvoj <tt/named/ da potraži stroj <tt/jagor.srce.hr/. On se onda spojio na jedan od imenskih servera navedenih u tvojoj <file/root.hints/ datoteci, i upitao za put od tamo. Možda će trebati malo vremena dok ne dobiješ rezultat budući da on pretražuje sve domene koje si naveo u <file>/etc/resolv.conf</file> datoteci. Molim te primijeti "aa" u "flags:" retku. To znači da je odgovor bio služben, da je svježe dobiven od nadležnog servera (eng. "authoritative"). Objasnit ću "authoritative" kasnije. <p>Ako upitaš isto to ponovo, dobit ćeš ovo: <tscreen><verb> $ 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 </verb></tscreen> <p>Primijeti manjak "aa" oznake o ovom odgovoru. To znači da <tt/named/ ovaj put nije otišao tražiti po mreži, jer je informacija sada bila u cacheu. Ali informacija u cache-u bi <em/mogla/ biti zastarjela (eng. `stale'). Zato si informiran o ovoj (vrlo maloj) mogućnosti jer nema "aa". Ipak, sada znaš da cache radi. <sect1>`Resolveri' <p>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 <file>/etc/nsswitch.conf</file>. Ovo je duga datoteka koja određuje gdje dobiti različite vrste podataka, iz koje datoteke ili baze. Obično sadrži pomoćne komentare pri vrhu, koje bi trebao pročitati. Nakon toga nađi liniju koja počinje sa `<tt/hosts:/', i ona bi trebala biti ovakva: <code> hosts: files dns </code> (<em/Zapamtio si što s početnim razmacima, zar ne? Neću ih više spominjati./) <p>Ako ne postoji linija koja počinje s `<tt/hosts:/', onda umetni onu gornju. Ona govori da programi prvo trebaju pogledati u <file>/etc/hosts</file> datoteku, i onda provjeriti u DNS-u, prema <file/resolv.conf/-u. <sect1>Čestitam <p>Sada znaš kako podesiti caching <tt/named/. Popij pivo, mlijeko, ili što već voliš kako bi to proslavio. <sect>Forwarding <!-- proslijeđivanje? --> <p>U velikim, dobro organiziranim, akademskim ili ISP (eng. `Internet Service Provider', pružatelj Internet usluga) mrežama ćete katkad naći da su ljudi koji se brinu o mreži podesili hijerarhiju DNS servera koji proslijeđuju (eng. `forwarders') što pomaže u olakšavanju pritiska na internu mrežu pa i pritiska na vanjske servere. <!-- load =~ pritisak --> Ipak, to nije bitno <!-- WTF?! --> i korištenjem DNS servera vašeg pružatelja mrežnih usluga kao ``forwardera'' možete učiniti odgovore na upite bržima i manje opterećujućima za vašu mrežu. Ako koristite modem, ovo bi moglo biti prilično dobro. Za potrebe ovog primjera, pretpostavit ćemo da vaš pružatelj mrežnih usluga ima dva imenska servera koje žele da koristite, s IP brojevima <tt/10.0.0.1/ i <tt/10.1.0.1/. Tada ćete u početni dio <file/named.conf/ datoteke zvan ``options'' umetnuti ove retke: <code> forward first; forwarders { 10.0.0.1; 10.1.0.1; }; </code> <p>Postoji i zgodan trik za dialup strojeve za korištenje forwardera, opisan je u <ref id="qanda" name="PiO"> poglavlju. <p>Ponovo pokrenite vaš imenski server i isprobajte ga s dig-om. Trebao bi raditi. <sect><em/Jednostavna/ domena.<label id="simple"> <p><bf/Kako podesiti vlastitu domenu./ <sect1>Ali prvo malo suhoparne teorije <p>Kao prvo: pročitao si sve ono prije ovoga, zar ne? Morao bi. <p>Prije nego što zapravo počnemo ovo poglavlje, servirat ću ti malo teorije i primjera rada DNS-a. I ti ćeš to pročitati jer je to dobro za tebe. Ako ti se `ne da', ipak bi trebao nabrzinu prolistati. Prestani listati kada dođeš do dijela gdje se opisuje <file/named.conf/ datoteka. <p>DNS je hijerarhijski sustav, strukturiran kao stablo. Vrh se piše `<tt/./' i čita `<bf/korijen/' (eng. `root'), kao što je uobičajeno za strukture podataka u obliku stabla. Ispod <tt/./ su mnoge `Top Level Domains' (TLD) odn. <bf/Najviše Domene/; najpoznatije su <tt/ORG/, <tt/COM/, <tt/EDU/ i <tt/NET/, ali postoje mnoge druge (<tt/HR/, <tt/BA/, <tt/SI/, op.prev.). Kao jedno stablo, ima korijen i grana se. Ako imate ikakvog iskustva u računarstvu, <!-- computer science, hmmm --> prepoznat ćete DNS kao `search tree', i moći ćete naći elemente (`nodes'), krajnje točke (`leaf nodes') i rubove (`edges'). Točke su elementi, rubovi su na imenima. <!-- netko s computer _science_ backgroundom bi trebao ovo prevesti <shrug> --> <p>Kada traži stroj, upit prolazi rekurzivno kroz hijerarhiju, počevši od vrha. Ako želiš saznati adresu stroja <tt/prep.ai.mit.edu/, tvoj imenski server mora negdje početi tražiti. Počinje gledajući u svoj cache. Ako on zna odgovor, jer ga je prije spremio, odgovorit će odmah, kako smo vidjeli u prošlom poglavlju. Ako ne zna, brisat će dijelove imena počevši s lijeve strane, provjeravajući zna li što o <tt/ai.mit.edu./, pa <tt/mit.edu./, pa <tt/edu./, i ako ne to, zna o <tt/./ jer je to u `hints' datoteci. Onda će pitati jednog <tt/./ servera o <tt/prep.ai.mit.edu/. Ovaj <tt/./ server neće znati odgovor, ali će pomoći tvom serveru dajući mu preporuku, govoreći mu gdje da gleda. Ove preporuke će na kraju dovesti tvoj server do imenskog servera koji zna odgovor. Sada ću ovo ilustrirati. <tt/+norec/ znači da će <tt/dig/ pitati nerekurzivna pitanja kako bi smo mogli sami raditi rekurziju. Ostale postavke su tu da smanje iznos informacija koje će <tt/dig/ prikazati kako se ovo ne bi protegnulo na previše stranica: <tscreen><verb> $ 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 </verb></tscreen> <p>Ovo je preporuka. Daje nam samo "Authority section", nema "Answer section". Naš imenski server nas upućuje na jedan imenski server. Odaberi jednog, nasumce: <tscreen><verb> $ 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 </verb></tscreen> On nas odmah upućuje na MIT.EDU servere. Opet nasumce izaberi jednog: <tscreen><verb> $ 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 </verb></tscreen> <p>Ovaj put smo dobili "ANSWER SECTION", i odgovor na naše pitanje. "AUTHORITY SECTION" sadrži informacije o tome koje servere trebamo pitati o <tt/ai.mit.edu/ sljedeći put. Tako sada možete pitati njih direktno, sljedeći put kada budete znatiželjni o <tt/ai.mit.edu/ imenima. <p>Tako smo počevši od <tt/./ uspješno našli imenske servere za sljedeći nivo imena domene, uz preporuke. Da si koristio svoj DNS server umjesto svih ovih ostalih, tvoj <tt/named/ bi naravno cacheirao sve informacije koje bi `iskopao' za tebe, i ne bi to trebao pitati ponovo neko vrijeme. <p>Analogno stablu (`tree'), svaka ``<tt/./'' u imenu je točka grananja. I svaki dio između ``<tt/./'' je ime za posebnu granu u stablu. Stablom se penjemo uzimajući ime koje želimo (<tt/prep.ai.mit.edu/) pitajući korijen (<tt/./) ili koje god servere koji su oci od korijena do <tt/prep.ai.mit.edu/ a o kojima imamo informacije u cacheu. Jednom kad se pređu granice cachea, rekurzivni `resolver' počinje pitati servere, prateći preporuke (rubove) dalje u imenu. <p>Domena o kojoj se puno manje govori, ali jednako važna domena je <tt/in-addr.arpa/. Ona se također dijeli <!-- nests, hmmm --> kao i `normalne' domene. <tt/in-addr.arpa/ nam dopušta da dobijemo ime stroja kada imamo njegovu adresu. Važna stvar kod ovoga je da primijetiš da su IP-evi zapisani obrnutim redosljedom u <tt/in-addr.arpa./ domeni. Ako imaš adresu stroja: 161.53.3.7, <tt/named/ je traži baš kao <tt/dns.srce.hr/: traži <tt/arpa./ servere. Traži u <tt/in-addr.arpa./ serverima, traži <tt/161.in-addr.arpa./ servere, traži <tt/53.161.in-addr.arpa/, traži <tt/3.53.161.in-addr.arpa./ servere. Traži potrebne podatke o <tt/7.3.53.161.in-addr.arpa./ serveru. Pametno, ha? (Reci `da'.) Ipak, obrtanje brojeva vas može godinama zbunjivati. <sect1>Naša domena. <p>Sada ćemo definirati našu domenu. Napravit ćemo domenu <tt/linux.bogus/ i definirati strojeve u njoj. Koristim totalno neispravno ime domene da ne bi smetali nikoga Tamo Vani. <p>Još jedna stvar prije nego počnemo: nisu svi znakovi dozvoljeni u imenima strojeva. Ograničeni smo na slova engleske abecede: a-z, brojeve 0-9 i znak `-' (crta). Drži se tih znakova. Velika i mala slova su ista DNS-u, tako da su <tt/dns.srce.hr/ i <tt/DNS.SRCE.Hr/ isto. <p>Već smo započeli ovaj dio sa ovom linijom u datoteci <file/named.conf/: <code> zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; }; </code> <p>Primijeti manjak znaka `<tt/./' na kraju imena domena u ovoj datoteci. Ovo govori da ćemo sada definirati zonu <tt/0.0.127.in-addr.arpa/, tako da smo glavni (`master') server za nju i da je ona pohranjena u datoteci `<file>pz/127.0.0</file>'. Već smo podesili ovu datoteku, i u njoj stoji: <code> $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. </code> <p>Primijeti znak `<tt/./' na kraju svih punih imena domena u ovoj datoteci, nasuprot gornjoj datoteci <file/named.conf/. Neki ljudi vole započeti svaku datoteku zone sa <tt/$ORIGIN/ direktivom, ali to je višak. Porijeklo (mjesto iz DNS hijerarhije gdje pripada) datoteke zone je određeno u `zone' sekciji <file/named.conf/ datoteke; u ovom slučaju to je <tt/0.0.127.in-addr.arpa/. <p>Ova `<bf/datoteka zone/' sadrži 3 `<bf/zapisa o resursu/' (<em/resource record/, RR): SOA RR, NS RR, i PTR RR. SOA je skraćenica od <em/Start Of Authority/ (početak nadležnosti). Znak `@' je posebna oznaka koja znači porijeklo, i zbog toga što `domain' kolona za ovu datoteku kaže <tt/0.0.127.in-addr.arpa/, prva linija zapravo znači: <tscreen><verb> 0.0.127.in-addr.arpa. IN SOA ... </verb></tscreen> <p>NS je <bf/Name Server RR/ (imenski server). Nema znaka `@' na početku ove linije; ovo se podrazumijeva jer je zadnja linija započela sa `@'. To nas štedi od tipkanja. Tako da bi se NS linija mogla pisati i ovako: <tscreen><verb> 0.0.127.in-addr.arpa. IN NS ns.linux.bogus </verb></tscreen> <p>Ona govori DNS-u koji stroj je imenski server domene <tt/0.0.127.in-addr.arpa/, a to je <tt/ns.linux.bogus/. '<tt/ns/' je uobičajeno ime za imenske servere, ali kao i kod web servera, koji se obično zovu <tt/www./<em/nešto/, to ime može biti bilo što. <p>I konačno, PTR (`Domain Name Pointer', pokazivač na ime domene) zapis govori da se stroj na adresi 1 u podmreži <tt/0.0.127.in-addr.arpa./ odn. <tt/127.0.0.1/ zove <tt/localhost/. <p>SOA zapis je uvod u <em/svaku/ datoteku zone, i treba biti točno jedan takav zapis u svakoj datoteci zone. On opisuje zonu, odakle dolazi (stroj zvan <tt/ns.linux.bogus/), tko je odgovoran za njen sadržaj (<tt/hostmaster@linux.bogus/; ovdje trebate staviti vašu 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 <tt/$TTL 3D/ redak. Stavi ga u sve svoje datoteke zona. <p>Sada ponovo pokreni svoj <tt/named/ (naredba je `<tt/ndc restart/') i upotrijebi <tt/dig/ kako bi pregledao što si napravio. <tt/-x/ pita obrnuti upit: <tscreen><verb> $ 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 </verb></tscreen> <p>Dakle on uspijeva dobiti ime <tt/localhost/ iz adrese 127.0.0.1, dobro. Sada za naš glavni zadatak, domenu <tt/linux.bogus/, ubaci novi `zone' odjeljak u <file/named.conf/-u: <code> zone "linux.bogus" { notify no; type master; file "pz/linux.bogus"; }; </code> <p>Primijeti nastavljeni nedostatak krajnjeg `<tt/./' na imenu domene u datoteci <file/named.conf/. <p>U datoteci zone <file/linux.bogus/ stavit ćemo neke totalno neispravne podatke: <code> ; ; Datoteka zone za domenu linux.bogus ; ; Potpuna datoteka zone ; $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, današnji datum + današnja 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 </code> <p>Dvije stvari se moraju zapaziti kod SOA zapisa. <tt/ns.linux.bogus/ <em/mora/ biti pravi stroj sa A zapisom (<em/Address/ = adresa, op.prev.). Nije ispravno imati CNAME (<em/Canonical NAME/ = osnovno ime, op.prev.) zapis za stroj koji se navede u SOA zapisu. Njegovo ime ne mora biti `<tt/ns/', može biti bilo koje ispravno ime stroja. Dalje, <tt/hostmaster.linux.bogus/ treba biti pročitano kao <tt/hostmaster@linux.bogus/. Ovo treba biti mail alias (drugo ime e-maila, op.prev.), ili mailbox (e-mail `sandučić', op.prev.), gdje osoba (osobe) koja održava DNS redovno čita postu. Bilo kakav e-mail koji se tiče domene bit će poslan na adresu navedenu ovdje. Ime ne mora biti `<tt/hostmaster/', može biti bilo kakva ispravna e-mail adresa, ali se često očekuje da e-mail adresa `<tt/hostmaster/' također radi. <p>Postoji jedan novi zapis o resursu (RR) u ovoj datoteci, <bf/MX zapis/, ili <em/Mail eXchanger RR/ (zapis o resursu razmjenitelja pošte). On govori sustavima za poštu gdje slati poštu koja je adresirana na <tt/netko@linux.bogus/, odn. na <tt/mail.linux.bogus/ ili <tt/mail.friend.bogus/. Broj ispred imena svakog stroja je prioritet tog MX RR-a. RR s najmanjim brojem (ovdje 10) je onaj kome će se e-mail slati prvom. Ako njemu ne uspije, pošta će biti poslana onome s prvim većim brojem, sekundarnim strojem za poštu, tj. <tt/mail.friend.bogus/ koji ovdje ima prioritet 20. <p>Restartaj <tt/named/ pokrećući '<tt/ndc restart/'. Pregledaj rezultate <tt/dig/om: <tscreen><verb> $ 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 </verb></tscreen> <p>Nakon pažljivijeg pregleda otkrit ćeš grešku. Redak <tscreen><verb> linux.bogus. 3D IN MX 10 mail.linux.bogus.linux.bogus. </verb></tscreen> <p>je sasvim neispravan. Treba biti: <tscreen><verb> linux.bogus. 3D IN MX 10 mail.linux.bogus. </verb></tscreen> <p>Namjerno sam napravio grešku kako bi ti mogao učiti iz nje :-) Gledajući u datoteku zone naći ćemo ovaj redak: <tscreen><verb> MX 10 mail.linux.bogus ; primarni Mail eXchanger </verb></tscreen> <p>Nedostaje mu točka. Ili ima `<tt/linux.bogus/' viška. Ako ime stroja u datoteci zone ne završava točkom, porijeklo se dodaje na njen kraj uzrokujući dvostruki linux.bogus.linux.bogus. Dakle ili <code> MX 10 mail.linux.bogus. ; primarni Mail eXchanger </code> ili <code> MX 10 mail ; primarni Mail eXchanger </code> je ispravno. Ja više volim zadnji oblik, kraći je za tipkanje. Postoje neki BIND znalci koji se ne slažu, a i neki koji se slažu s ovim. U datoteci zone zapis bi trebao završavati domenom i `<tt/./', ili bez ičega, kada bi se nadopunio porijeklom. <p>Moram naglasiti da u datoteci <file/named.conf/ <em/ne smije/ biti `<tt/./' nakon imena domena. Nemaš pojma koliko puta je `<tt/./' viška ili manjka `sredila' stvari i užasno zbunila ljude. <p>Nakon što sam ovo naglasio, evo nove datoteke zone, i sa nekim dodatnim informacijama: <code> ; ; Datoteka zone za domenu linux.bogus ; ; Potpuna datoteka zone ; $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, današnji datum + današnja 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" </code> <p>Više je novih RR-ova ovdje: <bf/HINFO/ (<em/Host INFOrmation/ = 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 `<tt/ns/' ima Pentium CPU i radi pod Linuxom 2.0. <bf/CNAME/ (<em/Canonical NAME/ = osnovno ime) je način da date svakom stroju više imena. Tako je `<tt/www/' drugo ime za `<tt/ns/'. <p>Korištenje CNAME zapisa je pomalo kontroverzno. Ali je sigurno postupati po pravilu da MX, CNAME ili SOA zapis <em/nikad/ ne smiju upućivati na CNAME zapis, već na nešto sa A zapisom, i ne preporučuje se imati: <code> bla CNAME www ; NE! </code> ali je ispravno imati: <code> bla CNAME ns ; Da! </code> <p>Također je sigurno pretpostaviti da CNAME nije ispravno ime stroja za e-mail adresu: <tt/webmaster@www.linux.bogus/ je neispravna e-mail adresa prema gornjim postavkama. Možeš očekivati priličan broj administratora mail sustava Tamo Vani koji će nametati ovo pravilo čak i ako takve adrese tebi budu radile. Način kako izbjeći ovo je koristeći A zapise (i možda neke druge, kao MX zapis): <code> www A 192.168.196.2 </code> <p>Stanovit broj starih BIND stručnjaka preporučuje uopće <em/ne/ koristiti CNAME. Ipak, rasprava o tome zašto ili zašto ne je izvan okvira ovog KAKOa. <p>Ali kako vidiš, ovaj KAKO i puno servera ne prate to pravilo. <p>Učitaj novu bazu podataka pokrećući `<tt/ndc reload/', što uzrokuje da <tt/named/ ponovo pročita svoje datoteke. <tscreen><verb> $ 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 </verb></tscreen> <p>To je dobro. Kako vidiš, izgleda vrlo slično samoj datoteci zone. Provjerimo što kaže za sam <tt/www/: <tscreen><verb> $ 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 </verb></tscreen> <p>Drugim riječima, pravo ime za <tt/www.linux.bogus/ je <tt/ns.linux.bogus/, i daje ti neke informacije o <tt/ns/-u također, dovoljno da se spojiš na njega, da si program. <p>Sada smo na pola puta. <sect1>Obrnuta zona <p>Sada programi mogu prebacivati imena u <tt/linux.bogus/-u u adrese na koje se mogu spojiti. Ali također je potrebna i obrnuta zona, koja omogućuje da DNS prebacuje iz adrese u ime. Ovu metodu koriste mnogi serveri raznih vrsta (FTP, IRC, WWW i drugi) da bi odredili hoće li pričati s tobom ili ne, a ako hoće, možda i koliko će ti prioriteta pridati. Za puni pristup svim uslugama na Internetu obrnuta zona je obavezna. <p>Stavi ovo u <file/named.conf/: <code> zone "196.168.192.in-addr.arpa" { notify no; type master; file "pz/192.168.196"; }; </code> <p>Ovo je upravo kao i sa <tt/0.0.127.in-addr.arpa/, a i sadržaj je sličan: <code> $TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; Serial, današnji datum + današnja 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. </code> <p>Sada trebaš opet restartati svoj <tt/named/ (<tt/ndc restart/) i pregledati svoj rad <tt/dig/-om: <code> $ 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. </code> <p>tako, izgleda OK, neka izbaci cijelu stvar da i to pregledaš: <code> 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 </code> <p>Izgleda dobro! Ako kod tebe nije tako izgledalo, potraži poruke o greškama u syslogu, objasnio sam kako to učiniti u prvom poglavlju, pod naslovom "Startanje nameda". <sect1>Riječi opreza <p>Postoji nekoliko stvari koje bi trebao dodati ovdje. IP brojevi korišteni gore su uzeti iz jednog od blokova `privatnih mreža', tj. brojevi koje nije dopušteno koristiti javno na Internetu. Zato su prikladni i sigurni kao primjer u ovom KAKO-u. Druga stvar je `<tt/notify no;/' linija. Ona govori <tt/named/u da ne obavijesti svoje sekundarne (<em/slave/ = ropske) servere kada se dogodi promjena u jednoj od datoteka zona. U BIND-u 8 <tt/named/ može obavijestiti ostale servere navedene u NS zapisima u datoteci zone kada je zona promijenjena. Ovo je zgodno za uobičajenu upotrebu, ali za privatne pokuse sa zonama ova funkcija treba biti isključena -- ne želimo da pokus zagadi Internet, zar ne? <p>I, naravno, ova domena je stvarno neispravna, kao i sve adrese u njoj. Za pravi primjer domene iz stvarnosti pogledaj sljedeće poglavlje. <sect1>Zašto ne rade obrnuti upiti. <p>Postoji par ``kvaka'' koje se normalno izbjegnu s upitima za imenima, ali koje se često vidi pri podešavanju 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. <p>Raspravit ću dva neuspjeha obrnutih upita koji se mogu vidjeti izvan tvoje mreže. <sect2>Obrnuta zona nije prepuštena. <!-- nije delegated... --> <p>Kada od pružatelja usluga zatražiš opseg mrežnih adresa i ime domene, to se ime normalno uvijek prepusti tebi, ti bivaš opunomoćen za administriranje (eng. delegate). Postupak prepuštanja (eng. delegation) je povezujući NS zapis koji pomaže u prelaženju s jednog imenskog servera na drugi, kao što je objašnjeno u gornjem poglavlju o suhoparnoj teoriji. Pročitao si to, zar ne? Ako tvoja obrnuta zona ne radi, vrati se i pročitaj. Sada. <p>Obrnuta zona također treba biti prepuštena. Ako si od svog pružatelja usluga dobio mrežu <tt/192.168.196/ s <tt/linux.bogus/ domenom, oni trebaju postaviti <tt/NS/ zapise za tvoju obrnutu zonu kao i za normalnu zonu. Ako pratiš lanac od <tt/in-addr.arpa/ do tvoje mreže, vjerojatno ćeš naći prekid u lancu, vrlo vjerojatno kod tvog pružatelja usluga. Nakon što nađeš problem, obrati se svom pružatelju usluga i traži od njih da isprave grešku. <sect2>Imaš podmrežu bez klasa <p>Ovo je pomalo napredna tema, ali podmreže bez klasa su danas vrlo česte i vjerojatno je imaš ako si u maloj tvrtci. <p>Podmreža bez klasa je ono što čini da Internet danas radi. <!-- keeps going, argh --> Prije par godina je bilo puno buke oko nedostatka IP brojeva. Pametni ljudi iz IETF-a (Internet Engineering Task Force, oni održavaju Internet) su razmislili i riješili problem. Za određenu cijenu. Cijena je to da ćeš dobiti manje od ``C'' podmreže i neke stvari će se možda pokvariti. Molim pogledaj <url name="Ask Mr. DNS at" url="http://www.acmebw.com/askmrdns/00007.htm"> za dobro objašnjenje ovoga i kako s tim raditi. <p>Jesi li pročitao? Neću to objašnjavati, molim te pročitaj. <p>Prvi dio problema je to što tvoj ISP mora shvaćati tehniku koju opisuje Mr. DNS. Ovo ne poznaju svi mali ISP-ovi, pa ćeš im možda 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 moći provjeriti <tt/dig/om. <p>Drugi i posljednji dio problema je to da ti moraš razumjeti tehniku. Ako nisi siguran, vrati se i ponovo pročitaj o njoj. Tada ćeš moći podesiti svoju besklasnu obrnutu zonu kao što je opisao Mr. DNS. <p>Ovdje vreba još jedna zamka. Stariji `resolveri' <em/neće/ moći pratiti <tt/CNAME/ trik u lancu i neće uspjeti naći ime tvog stroja iz IP adrese. Ovo može rezultirati time da neke mrežne usluge tvoj stroj stave u krivu klasu pristupa, onemoguće mu pristup ili tako nešto. Ako naletiš na tako nešto, jedino rješenje (meni znano) je da tvoj ISP umetne tvoj <tt/PTR/ zapis direktno u njihovu trik besklasnu datoteku zone umjesto trik <tt/CNAME/ zapisa. <p>Neki ISP-ovi će ponuditi druge načine rješavanja ovoga, kao što su Web-bazirani formulari u koje možeš upisati svoja obrnuta prepisivanja <!-- mapping, mapiranje, funkcija (matematički), preslikavanje, sranje --> ili drugi automagični sustavi. <sect1>`Slave' serveri <p>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 sruši, ljudi s mreže će još uvijek moći doći do informacija o tvojoj domeni od `slave' servera. Jedan `slave' server treba biti što je dalje moguće od `mastera'. Tvoji `master' i `slave' serveri trebaju dijeliti što je manje moguće od ovoga: napajanje, lokalnu mrežu, ISP, grad i zemlja. Ako su sve ove stvari različite za tvoje `master' i `slave' servere, našao si jako dobar `slave'. <p>`Slave' je jednostavno imenski server koji kopira datoteke zona od `mastera'. Podešavaš ga ovako. <code> zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 192.168.196.2; }; }; </code> <p>Mehanizam nazvan `zone-transfer' se koristi za kopiranje podataka. Prebacivanje zone se kontrolira kroz tvoj <tt/SOA/ zapis. <code> @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 199802151 ; serial, današnji datum + današnja revizija 8H ; refresh, seconds 2H ; retry, seconds 4W ; expire, seconds 1D ) ; minimum, seconds </code> <p>Zona se jedino prenosi ako je `serial' (tj. serijski broj) na `masteru' veći od onoga na `slaveu'. Nakon svakog `refresh' (tj. osvježavanje) intervala, `slave' će provjeriti da li se što mijenjalo na `masteru'. Ako provjera ne uspije (jer je `master' nedostupan), on će ponovo pokušati nakon `retry' (tj. ponovljen pokušaj) intervala. Ako nastavi s neuspjesima do `expire' (tj. istek roka) intervala, `slave' će izbrisati zonu sa svog datotečnog sustava i više neće biti server za nju. <sect>Primjer prave domene<label id="real-example"> <p><bf/(u kojem ćemo pokazati neke prave datoteke zone)/ <p>Korisnici su predložili da, uz školski primjer, uključim i pravi primjer domene koja radi. <p>Koristim ovaj primjer sa dozvolom Davida Bullocka iz LAND-5. Ove datoteke su bile aktualne 24. rujna 1996., i uređivane su da se uklope u BIND 8 ograničenja i koriste moje nadopune. Tako da ovo što vidite ovdje se ponešto razlikuje od onoga što ćete dobiti ako sada postavite upit LAND-5-ovim imenskim serverima. <sect1>/etc/named.conf (ili /var/named/named.conf) <p>Ovdje nalazimo `master' zone sekcije za dvije potrebne obrnute zone: mreža 127.0.0, kao i LAND-5-ova <tt/206.6.177/ podmreža, te `primary' liniju za LAND-5-ovu normalnu zonu <tt/land-5.com/. Također primijeti da se umjesto stavljanja datoteka u direktorij zvan `<file/pz/', kako ja to radim u ovom KAKO-u, on ih stavlja u direktorij zvan `<file/zone/'. <code> // 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"; }; </code> <p>Ako ovo staviš u svoju <file/named.conf/ datoteku za igru, <bf/MOLIM TE/ stavi ``<tt/notify no;/'' u `zone' sekcije za dvije LAND-5 zone, kako bi izbjegli nezgode. <sect1>/var/named/root.hints <p>Ne zaboravi da je ova datoteka dinamička, i da je ova navedena ovdje stara. Bolje ti je da koristiš onu napravljenu sada, <tt/dig/om, kao što je to objašnjeno prije. <code> ; <<>> 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 </code> <sect1>/var/named/zone/127.0.0 <p>Samo osnove, obavezni SOA zapis, i zapis koji određuje 127.0.0.1 kao <tt/localhost/. Oba su nužna. Ništa više ne treba biti u ovoj datoteci. Ona se vjerojatno nikad neće morati mijenjati, osim ako se adresa tvog imenskog servera ili održavatelja DNS-a promijeni. <code> @ 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. </code> <p>Ako pogledaš na nasumično odabranu BIND instalaciju, vjerojatno ćeš primijetiti da <tt/$TTL/ redak nedostaje, kao i ovdje. On prije nije korišten, i tek je verzija BIND-a 8.2 počela upozoravati na njegovo nepostojanje. Preporučujem stavljanje <tt/$TTL/ retka u datoteke zona kako budeš nalazio da nedostaju. <sect1>/var/named/zone/land-5.com <p>Ovdje vidimo obavezni SOA zapis, i potrebne NS zapise. Možemo vidjeti da on ima sekundarni name server na <tt/ns2.psi.net/. Ovo je kako treba biti, <em/uvijek/ treba imati vanjski site za sekundarni server kao rezervnu kopiju (eng. backup). Možemo također vidjeti da on ima glavni stroj zvan <tt/land-5/ koji se brine o mnogim Internet uslugama, i da je to napravio sa CNAME-ovima (alternativa je korištenje A zapisa). <p>Kao što vidiš iz SOA zapisa, datoteka zone dolazi iz <tt/land-5.com/, osoba za kontakt je <tt/root@land-5.com/. `<tt/hostmaster/' je još jedna često korištena adresa za kontakt osobu. Serijski broj je u uobičajenom ggggmmdd formatu sa dodanom današnjom revizijom; ovo je vjerojatno šesta inačica datoteke zone dana 20. rujna 1996.g. Zapamti da se serijski broj <em/mora/ monotono povećavati, ovdje je samo <em/jedna/ znamenka za današnji serijski broj, tako da nakon 9 uređivanja on mora čekati do sutra prije nego što promijeni datoteku ponovo. Razmisli o korištenju dvije znamenke. <code> @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, današnji datum + današnja 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 </code> <p>Ako pregledaš LAND-5 imenski server naći ćeš da su imena strojeva u obliku <tt/ws_/<em/broj/. Od kasnijih BIND 4 verzija, <tt/named/ je počeo provoditi ograničenja u znakovima koji se smiju koristiti u imenima strojeva. Tako da to uopće ne radi sa BIND-8, i ja sam zamijenio `_' (podvlaku) `-' (crtom) za upotrebu u ovom KAKOu. <p>Još jednu stvar treba primijetiti, da radne stanice nemaju individualna imena, već predmetak i zadnja dva dijela IP broja. Koristeći takav sustav možeš znatno pojednostaviti održavanje, ali to može biti pomalo neosobno, i zapravo biti izvor nezadovoljstva među tvojim korisnicima. <p>Također vidimo da je <tt/funn.land-5.com/ drugo ime za <tt/land-5.com/, ali koristeći A zapis, ne CNAME zapis. Ovo je dobro načelo, kao što smo već ustvrdili. <sect1>/var/named/zone/206.6.177 <p>Ovu datoteku ću komentirati ispod <code> @ 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. </code> <p>Obrnuta zona je dio podešavanja koji izgleda uzrokuje najviše nevolja. Koristi se da se nađe ime stroja ako imaš IP broj istog. Primjer: ti si IRC server i prihvaćaš veze od IRC klijenata. Ipak, ti si norveški IRC server tako da želiš prihvatiti veze samo iz Norveške i ostalih skandinavskih zemalja. Kada uspostaviš vezu s klijentom, C biblioteka ti može reći IP broj drugog stroja zato što se IP broj klijenta pojavljuje u svim paketima koji prolaze mrežom. Sada možeš pozvati funkciju `gethostbyaddr' koja će pogledati ime stroja određenog IP brojem. `Gethostbyaddr' će pitati DNS server, koji će onda pregledati DNS tražeći stroj. <p>Pretpostavimo da se klijent spaja s adrese <tt/ws-177200.land-5.com/. IP broj kojeg C library daje IRC serveru jest 206.6.177.200. Da bismo saznali ime tog stroja, moramo naći <tt/200.177.6.206.in-addr.arpa/. DNS server će prvo naći <tt/arpa./ servere, pa <tt/in-addr.arpa./ servere, prateći obrnuti trag kroz <tt/206/, pa <tt/6/, i na kraju će naći server za <tt/177.6.206.in-addr.arpa/ zonu na LAND-5. Iz toga će na kraju dobiti odgovor da za <tt/200.177.6.206.in-addr.arpa/ imamo ``<tt/PTR ws-177200.land-5.com/'' zapis, što znači da ime koje ide uz <tt/206.6.177.200/ jest <tt/ws-177200.land-5.com/. Kao i objašnjenje kako se pogleda <tt/prep.ai.mit.edu/, i ovo je pomalo fiktivno. <p>Vratimo se na primjer IRC servera. IRC server prihvaća samo veze iz skandinavskih zemalja, odn. <tt/*.no/, <tt/*.se/, i <tt/*.dk/, pa ime <tt/ws-177200.land-5.com/ očito ne zadovoljava nijedan uvjet, i server će se odbiti povezati. Kada <em/ne bi/ postojalo reverzno mapiranje IP-a <tt/206.2.177.200/ kroz <tt/in-addr.arpa/ zonu, server ne bi nikako mogao naći ime stroja, i morao bi usporediti 206.2.177.200 sa <tt/*.no/, <tt/*.se/, i <tt/*.dk/, što ne bi uspjelo. <p>Neki ljudi će ti reći da je obrnuto `mapiranje' bitno samo za servere, ili nije uopće bitno. Nije tako, jer puno FTP, NNTP (news), IRC pa čak i neki HTTP (WWW) serveri <em/neće/ prihvatiti veze sa strojevima čije ime ne mogu pronaći. Zato je obrnuto `mapiranje' strojeva zapravo <em/obavezno/. <sect>Održavanje<label id="maint"> <!-- LaTeX se guši na labelama koje sadrže hrvatske znakove. [MV] Da, ionako je glupost prevoditi labele, jer se tako kidaju linkovi. [JR] --> <p><bf/Samo neka radi./ <p>Jednu stvar moraš činiti za održavanje <tt/named/a, osim da ih puštaš da rade. To je održavanje <file/root.hints/ datoteke ažurnom. Najlakši način je korištenje <tt/dig/a. Prvo pokreni <tt/dig/ bez parametara, i dobit ćeš <file/root.hints/ svog servera. Onda pitaj jedan od izlistanih korijenskih servera sa <tt/dig @rootserver/. Vidjet ćeš da izlazni podaci jako sliče onima u <file/root.hints/ datoteci. Sačuvaj ih u datoteku (<tt/dig @e.root-servers.net . ns > root.hints.new/) i zamijeni staru <file/root.hints/ datoteku s novom (<file/root.hints.new/, op.prev.). <p>Zapamti da treba restartati <tt/named/ nakon promjene cache datoteke. <p>Al Longyear mi je poslao ovu skriptu koja se može pokrenuti automatski da obnovi <file/root.hints/. Unesite je u <tt/crontab/ kako bi se pokretala jednom mjesečno i zaboravite na nju. Ova skripta pretpostavlja da imaš podešen i radeći e-mail, te da je alias `<tt/hostmaster/' definiran. Moraš je hackirati da je uskladiš sa svojim postavkama. (sačuvati kao izvršnu datoteku <file>/etc/cron.monthly/hints.new</file>, op.prev.) <code> #!/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 <hostmaster>" echo "From: system <root>" # 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 </code> <p>Neki su možda vidjeli <file/root.hints/ datoteku koja je dostupna FTP-om od InterNIC-a. Molim vas, nemojte koristiti FTP da obnovite <file/root.hints/, jer je gornja metoda puno bolja za mrežu, i InterNIC. <sect>Prebacivanje s verzije 4 na verziju 8<label id="bind8"> <p>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. <p>Nema puno posla. Osim što se koristi <file/named.conf/ umjesto <file/named.boot/ datoteke, sve je identično. I BIND 8 dolazi sa perl skriptom koja prevodi stare datoteke u nove. Primjer stare <file/named.boot/ datoteke za caching only imenski server: <code> directory /var/named cache . root.hints primary 0.0.127.IN-ADDR.ARPA 127.0.0.zone primary localhost localhost.zone </code> <p>Ukoliko imaš source distribuciju, na komandnoj liniji, u <file>bind8/src/bin/named</file> direktoriju ćeš otipkati sljedeće: (Ako imaš binarni paket, skripta je vjerojatno tu negdje, ali nisam siguran gdje op.a.). <code> ./named-bootconf.pl < named.boot > named.conf </code> Što će napraviti ovakav <file/named.conf/: <code> // 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"; }; </code> <p>Radi za sve što može biti u <file/named.boot/ datoteci, mada ne dodaje sva nova unapređenja i konfiguracijske opcije koje dopušta BIND 8. Evo kompletnijeg <file/named.conf/-a koji radi isto to, samo malo učinkovitije. <code> // 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"; }; </code> <p>U <file>bind8/src/bin/named/test</file> direktoriju BIND 8 source distribucije možete naći ovo i kopije datoteka zona koje mnogi ljudi mogu samo ubaciti i odmah koristiti. <p>Formati datoteka zona i <file/root.hints/ datoteke su identični, kao i naredbe za njihovo mijenjanje. <sect>Pitanja i Odgovori<label id="qanda"> <p>Molim te, pročitaj ovo poglavlje prije nego mi e-mailaš. <enum> <item>Moj <tt/named/ traži datoteku <file/named.boot/. <p>Čitaš krivi KAKO (HOWTO). Molim pogledati staru verziju ovog HOWTO-a, koja pokriva bind 4, na <url url="http://www.math.uio.no/~janl/DNS/">. <item>Kako koristiti DNS unutar firewalla? <p>Prijedlog: <tt/forward only;/. Možda ćeš isto trebati <code> query-source port 53; </code> unutar ``options'' dijela <file/named.conf/ datoteke, kao što se preporučuje u primjeru <ref id="caching" name="caching"> poglavlja. <item>Kako da učinim da DNS kruži kroz dostupne adrese za uslugu, recimo <tt/www.busy.site/ da dobije `load balancing' efekt, ili nešto slično? <p>Napravi više <bf/A/ zapisa za <tt/www.busy.site/ i koristi BIND 4.9.3 ili noviji. Tada će bind izokretati (eng. round-robin) odgovore. Ovo <em/neće/ raditi s ranijim verzijama BIND-a. <item>Želim podestiti DNS na (zatvorenom) intranetu. Što da radim? <p>Izbaci <file/root.hints/ datoteku i samo podesi datoteke zone. To također znači da ne moraš nabavljati novu `hint' datoteku cijelo vrijeme. <item>Kako da podesim sekundarni (slave) imenski server? <p>Ako primarni/glavni server ima adresu 127.0.0.1, stavi liniju kao ovu u <file/named.conf/ datoteku svog sekundarnog servera: <code> zone "linux.bogus" { type slave; file "sz/linux.bogus"; masters { 127.0.0.1; }; }; </code> Možeš navesti više alternativnih master servera s kojih se zona može kopirati, unesi ih u <tt/masters/ listu, odvojene znakom `;' (točka-zarez). <item>Želim da BIND radi dok nisam spojen na mrežu. <p>Postoje dvije stvari vezane za ovo: <itemize> <item>Specifično za BIND 8, Adam L Rice mi je poslao ovaj e-mail, o tome kako bezbolno imati DNS na stroju koji se spaja modemom: <tscreen><verb> Otkrio sam da s novim verzijama BIND-a ovo [<em/micanje datoteka, op.a./] više nije potrebno. Postoji "forward" naredba uz "forwarders" naredbu koja kontrolira kako se one koriste. Pretpostavljena vrijednost je "forward first", što znači da će <tt/named/ prvo pitati servere iz `forwarders' retka, i tek ako to ne uspije, pokušati normalni pristup. Ovo uzrokuje ponašanje slično gethostbyname()-u, samo što predugo traje ako nema veze na mrežu. Ali, ako je podešen "forward only", onda će BIND odustati kada ne dobije odgovor od imenskih servera, a gethostbyname() odustaje odmah. Zato nema potrebe žonglirati <!-- hmm, sleight of hand --> datotekama u /etc i ponovo pokretati server. U mom slučaju, 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. </verb></tscreen> <item>Dobio sam ovaj e-mail od Iana Clarka, <ic@deakin.edu.au>, gdje on objašnjava svoj način kako to učiniti: <tscreen><verb> Ja pokrećem named na svom 'masquerading' stroju. Imam dvije root.hints datoteke, jedna se zove root.hints.real i sadrži prava imena korijenskih servera, i druga koja se zove root.hints.fake koja sadrži: ---- ; root.hints.fake ; this file contains no information ---- Kada odlazim s mreže (off line), kopiram root.hints.fake u root.hints i restartam named. Kada idem na mrežu (on line), kopiram root.hints.real u root.hints i restartam named. Ovo se radi automatski iz ip-down 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 mreže bez timeout zastoja za vanjska imena domena, a dok sam na mreži, upiti za vanjske domene rade normalno. </verb></tscreen> <p>Peter Denison je pak mislio da Ian ne ide dovoljno daleko. On piše: <tscreen><verb> Kada sam spojen) serviraj sve cacheirane unose (i one s lokalne mreže) odmah za ne-cacheirane unose, i proslijedi imenskom serveru mog ISPa Kada nisam spojen) serviraj sve upite za lokalnu mrežu odmah odustani od svih ostalih upita **odmah** Kombinacija mijenjanja root cache datoteke i prosljeđivanja upita ne radi. Zato sam podesio (nakon nešto rasprave o ovome u obližnjem LUG-u) dva nameda ovako: named-online: proslijeđuje 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 sluša na portu 60053 named-offline: ne proslijeđuje "lažna" root cache datoteka slave za 3 lokalne zone (master je 127.0.0.1:60053) sluša na portu 61053 I kombinirao ih s proslijeđivanjem 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 neće baš odmah raditi, jer postoji sitan bug u BIND 8.2, kojeg sam prijavio razvijateljima, a koji sprečava slave da ima mastera na istoj IP adresi (pa i ako je port drugi). Zakrpa je trivijalna, i brzo bi se trebala uključiti, nadam se. </verb></tscreen> <item>Također sam dobio informaciju kako bind radi interaktivno s NFS-om i portmapper-om na većinom offline stroju, od Karl-Maxa Wangera: <tscreen><verb> Ja obično pokrećem svoj named na svim svojim strojevima koji se tek povremeno vezuju na Internet modemom. Imenski server služi samo kao cache, nema svoju domenu i sve provjerava kod imenskih servera u root.cache datoteci. Kao što je to uobičajeno kod 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 većinu vremena to nije radilo. Isto se događalo neovisno da li sam koristio PLIP, PCMCIA ethernet karticu ili PPP preko serijske veze. Nakon nekog vremena nagađanja i eksperimentiranja shvatio sam izgleda da je named brljao s procesom registracije nfsd-a i mountd-a koji oni moraju proći s portmapperom na dizanju sustava (startam te demone pri dizanju kao i obično). Startanje named-a nakon nfsd-a i mountd-a potpuno je uklonilo ovaj problem. Kako ne treba očekivati bilo kakve probleme pri takvoj izmijenjenoj sekvenci dizanja sustava, preporučio bih svima da to naprave na taj način i spriječe mogući problem. </verb></tscreen> <item>I na kraju, postoje HOWTO informacije o ovome kod <url name="Ask Mr. DNS na" url="http://www.acmebw.com/askmrdns/#linux-dialup">. Radi se o o BIND-u 4, doduše, pa ćete morati prilagoditi ono što on kaže na BIND 8. </itemize> <item>Gdje caching only imenski server drži svoj cache? Postoji li način da kontroliram veličinu cachea? <p>Kompletan se cache drži u memoriji, i nikad se ne zapisuje na disk. Svaki put kad ubiješ named, cache se gubi. Cache se nikako <em/ne može/ kontrolirati. <tt/named/ ga nadgleda prema nekim jednostavnim pravilima i to je to. Ne možeš kontrolirati cache niti njegovu veličinu ni iz kojeg razloga. Ako to želiš, možeš to ``popraviti'' hackirajući named. Ipak, ovo nije preporučeno. <item>Da li named čuva cache između restarta? Mogu li ga natjerati da ga sačuva? <p>Ne, <tt/named/ <em/ne/ sačuva cache kada umre. To znači da se cache mora ponovo graditi svaki put kada ubiješ i restartaš <tt/named/. <em/Nema/ načina da natjeraš named da sačuva cache u datoteku. Ako želiš, možeš to ``popraviti'' hackirajući named. Ipak, ovo nije preporučeno. <item>Kako mogu dobiti domenu? Želim podesiti svoju domenu koja će se zvati (naprimjer) <tt/linux-rules.net/. Kako da se domena koju želim dodijeli meni? <p>Molim te kontaktiraj svog pružatelja mrežnih usluga. Oni će ti moći pomoći s ovim. Molim primijetiti da u većini svijeta moraš platiti kako bi dobio domenu. <item>Kako mogu osigurati svoj DNS server? Kako da podesim podijeljeni DNS? <p>Oba ova pitanja su napredne teme. Obje su pokrivene u <url url="http://www.etherboy.com/dns/chrootdns.html">. Neću ih dalje objašnjavati ovdje. </enum> <sect>Kako postati veći DNS admin.<label id="bigger"> <p><bf/Dokumentacija i alati./ <p>Prava Dokumentacija postoji. Na mreži i tiskana. Čitanje nekoliko knjiga je potrebno da od malog DNS admina postaneš veliki admin. Od tiskanih izdanja ja sam napisao <em/The ConciseGuide to DNS and BIND/, Nicolai Langfeldt, objavio Que (ISDN0-7897-2273-9). Knjiga je slična ovom KAKO-u. Samo ima više detalja, i puno više svega. Ali, standardna knjiga je <em/DNS and BIND/, C. Liu i P. Albitz, izdaje O'Reilly & Associates, (ISBN 0-937175-82-X). Također je odlična, mada opisuje BIND 4, to i nije neki problem. Postoji i poglavlje o DNS-u u <em>TCP/IP Network Administration</em>, 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 <em/Zen and the Art of Motorcycle Maintenance/, Robert M. Pirsig :-) Dostupna kao ISBN 0688052304 i drugi. <p>Na mreži ćeš naći stvari na <url url="http://www.dns.net/dnsrd/"> (DNS Resources Directory), <url url="http://www.isc.org/bind.html">; <em/FAQ/, referentne upute (<em/BOG/; <em/Bind Operations Guide/) kao i papiri i definicije protokola i DNS hackovi (ovi, i većina, ako ne i svi, od RFC-ova navedenih dolje, su distribuirani sa samim BIND-om). Nisam pročitao većinu ovih, pa ipak, ni ja nisam veliki DNS admin. Arnt Gulbrandsen, s druge strane, je pročitao <em/BOG/ i on je ushićen zbog toga :-). USENET grupa <url url="news:comp.protocols.tcp-ip.domains"> je o DNS-u. Također postoji i veliki broj RFC-ova o DNSu, a najvažniji su navjerojatnije ovi: <descrip> <tag/RFC 2052/ A. Gulbrandsen, P. Vixie, <em/A DNS RR for specifying the location of services (DNS SRV)/, October 1996 <tag/RFC 1918/ Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear, <em/Address Allocation for Private Internets/, 02/29/1996. <tag/RFC 1912/ D. Barr, <em/Common DNS Operational and Configuration Errors/, 02/28/1996. <tag/RFC 1912 Errors/ B. Barr <em/Errors in RFC 1912/, this is available at <url url="http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html"> <tag/RFC 1713/ A. Romao, <em/Tools for DNS debugging/, 11/03/1994. <tag/RFC 1712/ C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, <em/DNS Encoding of Geographical Location/, 11/01/1994. <tag/RFC 1183/ R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, <em/New DNS RR Definitions/, 10/08/1990. <tag/RFC 1035/ P. Mockapetris, <em/Domain names - implementation and specification/, 11/01/1987. <tag/RFC 1034/ P. Mockapetris, <em/Domain names - concepts and facilities/, 11/01/1987. <tag/RFC 1033/ M. Lottor, <em/Domain administrators operations guide/, 11/01/1987. <tag/RFC 1032/ M. Stahl, <em/Domain administrators guide/, 11/01/1987. <tag/RFC 974/ C. Partridge, <em/Mail routing and the domain system/, 01/01/1986. </descrip> </article>