Contents

Ključne riječi: DNS, BIND, BIND 4, BIND 8, named, dialup, PPP, slip, ISDN, Internet, domain, name, resolution, hosts, caching.

Ovaj dokument je dio Linux Documentation Projecta.

stvari

(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.

i poziv za pomoć

Ž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.

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 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 provjerite je li povratna adresa ispravna i da radi. Također, molim vas, pročitajte ?? (PiO) poglavlje prije nego mi e-mailate. Još jedna stvar, ja razumijem samo norveški i engleski.

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 nije 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 :-)

Ovaj HOWTO je posvećen Anne Line Norheim Langfeldt. Mada ga ona vjerojatno nikada neće pročitati jer ona nije takav tip djevojke.

. Što ovo je, a što nije.

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.

Mapiranje je jednostavno povezivanje između dvije stvari, u ovom slučaju imena stroja, kao ftp.linux.org, i IP broja (ili adrese) stroja, kao 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").

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 jednostavan DNS server. Počet ćemo sa caching only serverom da bi došli do podešavanja primarnog DNS imenskog servera za domenu. Za kompleksnije postavke možeš pogledati ?? (PiO) poglavlje ovog dokumenta. Ako to nije opisano tamo trebat ćeš pročitati Pravu Dokumentaciju. Što je i od čega se sastoji Prava Dokumentacija bit će objašnjeno u ?? (zadnjem poglavlju).

Prije nego počneš s ovim, trebao bi konfigurirati svoj stroj tako da se možeš telnetirati na i s njega, i uspješno uspostaviti sve vrste veza na mrežu, i posebno bi trebao moći napraviti telnet 127.0.0.1 i time doći na svoj stroj (probaj sad!).

Za početak također trebaš ispravne /etc/nsswitch.conf, /etc/resolv.conf

i /etc/hosts 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.

Kada kažem ’tvoj stroj’, mislim na stroj na kojem pokušavaš podesiti DNS, ne na niti jedan drugi stroj koji imaš, a koji je uključen u tvoje mrežne napore.

Pretpostavit ću da nisi iza bilo kakvog firewalla koji blokira upite o imenima. Ako jesi, trebat ćeš posebnu konfiguraciju – pogledaj poglavlje ?? (PiO).

Opsluživanje imenima na Unixu je omogućeno programom zvanim named. On je dio “BIND” paketa kojim koordinira Paul Vixie uime Internet Software Consortiuma. Named je uključen u većinu Linux distribucija i obično je instaliran kao /usr/sbin/named, obično iz paketa zvanog BIND.

Ako imaš 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 <ftp://ftp.isc.org/isc/bind/src/>. Ovaj KAKO govori o ver-

ziji 8. Stara verzija ovog HOWTO-a, o verziji 4, je još uvijek dostupna na

<http://www.math.uio.no/~janl/DNS/> u slučaju da koristiš bind 4 (naža-

lost, KAKO za verziju 4 ne postoji :( op. prev.). Ako namedova man stranica govori o named.conf, imaš BIND 8; ako govori o datoteci named.boot, imaš BIND 4. Ako imaš 4 i brineš o sigurnosti, stvarno bi trebao nadograditi na najnoviju 8-icu. Odmah.

DNS je baza podataka cijele 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.

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.

imenski server koji nalazi adrese. Prva stavka DNS konfiguracije, vrlo korisna korisnicima koji se spajaju modemima, kabelskim modemima i ADSL-om.

Na Red Hat i Red Hat baziranim distribucijama možeš postići isti praktični 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 neće naučiti istom što i čitanje ovog KAKOa. Dakle, instaliraj pakete, i onda čitaj provjeravajući datoteke koje su oni instalirali.

Caching only imenski server će naći odgovor na upite o imenima i zapamtiti odgovor sljedeći put kad ga budeš trebao. Ovo će znatno skratiti vrijeme čekanja sljedeći put, posebno ako si na sporoj vezi.

Prvo ćeš trebati datoteku zvanu /etc/named.conf (Debian: /etc/bind/named. conf). Ona je pročitana kad se pokreće named. Za sada ona treba sadržavati samo ovo:

// Konfiguracijska datoteka za caching only imenski server
options {
        directory "/var/named";
        // Odkomentiravanje ovoga može pomoći ako moraš proći kroz
        // firewall, a stvari baš i ne rade:
        // query-source address * port 53;
};

zone "." {
        type hint;
        file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

Paketi Linux distribucija mogu koristiti različita imena datoteka za svaku vrstu datoteka spomenutih ovdje; one će ipak sadržavati skoro iste stvari.

Linija ’directory’ govori namedu gdje da potraži datoteke. Sve datoteke nazvane slično će biti relativne ovome. Također, pz je direktorij ispod /var/named, tj. /var/named/pz. /var/named je pravi direktorij prema Linux File system standardu.

Datoteka zvana /var/named/root.hints se spominje ovdje. Ona treba sadržavati ovo: (Ako izrežete i zalijepite ovu datoteku iz elektroničke verzije ovog dokumenta, molim primijetite kako 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)

;
; 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 održavati svako nekoliko. Pogledaj poglavlje ?? (Održavanje) za upute kako ih osvježavati.

Sljedeći odjeljak u named.conf datoteci je opis zone. Objasnit ću njenu upotrebu u kasnijim poglavljima, zasad samo napravi datoteku zvanu 127.0.0 sljedećeg sadržaja, u poddirektoriju pz: (Opet, molim te makni početne razmake ako izrežeš i zalijepiš ovo)

$TTL 3D
@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                4W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Dalje, trebat ćeš /etc/resolv.conf koji će izgledati slično ovome: (Opet, makni razmake!)

search poddomena.tvoja-domena.hr tvoja-domena.hr
nameserver 127.0.0.1

Linija ‘search’ određuje koje će se domene pretraživati za neki host na kojeg se želiš spojiti. Linija ‘nameserver’ određuje adresu tvog imenskog servera, u ovom slučaju tvoj stroj jer je to adresa na kojoj radi tvoj named (127.0.0.1 je prava, nema veze ako tvoj stroj ima i neku drugu adresu). Ako želiš više imenskih servera, stavi ‘nameserver’ liniju za svaki. (Napomena: named nikada ne čita ovu datoteku, to radi resolver koji koristi named. Napomena 2: U nekim /etc/resolv.conf datotekama ćeš naći redak "domain". To je u redu, ali nemoj koristiti i "search" i "domain", samo jedan od njih će raditi.)

Da ilustriram što ova datoteka radi: ako klijent stroj pokuša 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 pretražile.

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 sadržavati tvoju TLD/ND (Top Level Domain, Najviša Domena, ‘hr’ u ovom slučaju). Ako se često trebaš spajati na strojeve u drugoj domeni, možeš tu domenu dodati u search liniju ovako: (Sjeti se maknuti početne razmake, ako postoje)

search poddomena.tvoja-domena.hr tvoja-domena.hr neka-domena.hr

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.

named-a

Nakon svega, vrijeme je da startamo named. Ako modemski biraš providera, prvo se spoji. Otipkaj ‘ndc start’, i pritisni enter, bez opcija. Ako to ne uspije, probaj ‘/usr/sbin/ndc start’. Ako ni to ne uspije, pročitaj poglavlje ?? (PiO). Sada možeš testirati svoje postavke. Ako pogledaš svoju datoteku sa syslog porukama (obično se zove /var/adm/messages, drugi direktorij može biti /var/log, a druga datoteka syslog) dok startaš named (učini ‘tail -f /var/log/messages’) trebao bi vidjeti nešto kao ovo:

(linije koje završavaju sa \ nastavljaju se u sljedećem retku)

     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 greškama, mora da je došlo do greške. named će imenovati datoteku u kojoj je greška. Vrati se i provjeri datoteku. Pokreni ‘ndc restart’ kada je popraviš.

Sada možete isprobati svoje postavke. Tradicionalno se za to koristio program nslookup. Danas se preporuča dig:

     $ dig -x 127.0.0.1
     ; <
     \begin{verbatim}
     > DiG 8.2 <
     \begin{verbatim}

CONTENTS 6

> -x
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUERY SECTION:
;;      1.0.0.127.in-addr.arpa, type = ANY, class = IN
;; ANSWER SECTION:
1.0.0.127.in-addr.arpa.  1D IN PTR  localhost.
;; AUTHORITY SECTION:
0.0.127.in-addr.arpa.   1D IN NS        ns.penguin.bv.
;; Total query time: 30 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 00:16:12 2000
;; MSG SIZE  sent: 40  rcvd: 110

Ako to dobiješ, onda radi. Nadajmo se. Ako se razlikuje, vrati se i provjeri sve. Svaki put kad promijeniš named.conf datoteku, moraš ponovo startati named koristeći ‘ndc restart’ naredbu.

Sada možeš postaviti upit. Probaj pogledati ime stroja koji ti je blizu. jagor.srce.hr je meni blizu, na SRCE-u:

$ dig jagor.srce.hr
; <
\begin{verbatim}
> DiG 8.2 <
\begin{verbatim}
> 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

CONTENTS 7

;; 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 potraži stroj jagor.srce.hr. On se onda spojio na jedan od imenskih servera navedenih u tvojoj root.hints datoteci, i upitao za put od tamo. Možda će trebati malo vremena dok ne dobiješ rezultat budući da on pretražuje sve domene koje si naveo u /etc/resolv.conf 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.

Ako upitaš isto to ponovo, dobit ćeš ovo:

$ dig jagor.srce.hr
; <
\begin{verbatim}
> DiG 8.2 <
\begin{verbatim}
> 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 znači da named ovaj put nije otišao tražiti po mreži, jer je informacija sada bila u cacheu. Ali informacija u cache-u bi mogla biti zastarjela (eng. ‘stale’). Zato si informiran o ovoj (vrlo maloj) mogućnosti jer nema "aa". Ipak, sada znaš da cache radi.