Sljedeći dio Prethodni dio Sadržaj

3. Caching only imenski server

Prva stavka DNS konfiguracije, vrlo korisna korisnicima koji se spajaju modemskim biranjem providera.

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. 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";
};

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, npr. /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:


.                      6D IN NS        G.ROOT-SERVERS.NET.
.                      6D IN NS        J.ROOT-SERVERS.NET.
.                      6D IN NS        K.ROOT-SERVERS.NET.
.                      6D IN NS        L.ROOT-SERVERS.NET.
.                      6D IN NS        M.ROOT-SERVERS.NET.
.                      6D IN NS        A.ROOT-SERVERS.NET.
.                      6D IN NS        H.ROOT-SERVERS.NET.
.                      6D IN NS        B.ROOT-SERVERS.NET.
.                      6D IN NS        C.ROOT-SERVERS.NET.
.                      6D IN NS        D.ROOT-SERVERS.NET.
.                      6D IN NS        E.ROOT-SERVERS.NET.
.                      6D IN NS        I.ROOT-SERVERS.NET.
.                      6D IN NS        F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4
J.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.10
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241

Ova datoteka opisuje korijenske imenske servere u svijetu. Oni se mijenjaju s vremenom i lista se mora održavati. 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 napravite datoteku zvanu 127.0.0 sljedećeg sadržaja, u poddirektoriju pz:


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

Dalje, trebat ćeš /etc/resolv.conf koji će izgledati slično ovome:


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 na kojoj je imenski server, u ovom slučaju tvoj stroj jer je to adresa na kojoj radi named (127.0.0.1 je prava, i ako tvoj stroj ima i neku drugu adresu). Ako želiš više imenskih servera, stavi `nameserver' liniju za svaki. (Napomena: named nikada ne čita ovu datoteku, to radi resolver koji koristi named.)

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 posljednja bla. Ako klijent stroj pokuša odrediti adresu za hlapic.srce.hr, hlapic.srce.hr.poddomena.tvoja-domena.hr se pokuša prvo, pa hlapic.srce.hr.tvoja-domena.hr, i na kraju hlapic.srce.hr. Ne bi trebao staviti puno domena u search liniju, jer treba vremena dok se sve pretraže.

Ovaj primjer pretpostavlja da si ti u domeni poddomena.tvoja-domena.hr, a tvoj stroj se vjerojatno zove tvoj-stroj.poddomena.tvoja-domena.hr. Search linija ne bi trebala sadržavati tvoju TLD/ND (Top Level Domain, Najviša Domena, `hr' u ovom slucaju). Ako se često trebaš spajati na strojeve u drugoj domeni, možeš tu domenu dodati u search liniju ovako:


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

i tako dalje. Očito je da trebaš staviti prava imena domena umjesto ovih primjera. Uoči da nema točke na krajevima imena domena.

Dalje, ovisno o verziji tvog libc-a ili trebaš popraviti /etc/nsswitch.conf ili /etc/host.conf. Ako već imaš /etc/nsswitch.conf, to je ono što ćemo popraviti, ako ne, popravit ćemo host.conf.

/etc/nsswitch.conf

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, sada. Nakon toga nađi liniju koja počinje sa `hosts:', i ona bi trebala biti ovakva:


hosts:      files dns

Ako ne postoji linija koja počinje s `hosts:', onda umetni onu gornju. Ona govori da programi prvo trebaju pogledati u /etc/hosts datoteku, i onda provjeriti kod DNS-a prema resolv.conf-u.

/etc/host.conf

Ona vjerojatno sadrži puno linija, od kojih jedna počinje sa 'order' i treba izgledati ovako:


order hosts,bind

Ukoliko ne postoji `order' linija, trebaš ubaciti takvu. Ona govori da rutine za određivanje imena strojeva prvo gledaju u /etc/hosts, onda pitaju imenski server (za kog si rekao u resolv.conf-u da je 127.0.0.1). Ove dvije posljednje datoteke su dokumentirane u resolv(8) man stranici (učini `man 8 resolv') u većini Linux distribucija. Ta man stranica je IMHO čitljiva, i svi, pogotovo DNS administratori, bi je trebali pročitati. Učini to sada, jer ako kažeš "napravit ću to kasnije" nikad se nećeš vratiti i učiniti to.

3.1 Startanje 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)

Feb 15 01:26:17 roke named[6091]: starting.  named 8.1.1 Sat Feb 14 \
  00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
  (IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Ako je bilo ikakvih poruka o greškama, mora da je došlo do greške. named će imenovati datoteku u kojoj je (ili named.conf ili root.hints nadam se :-). Ubij (kill) named, vrati se i provjeri datoteku.

Sada je vrijeme da startamo nslookup da pregledamo tvojih ruku djelo.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>

Ako je to sve što dobiješ, onda radi. Nadajmo se. Ako nije, 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:

> jagor.srce.hr
Server:  localhost
Address:  127.0.0.1

Name:    jagor.srce.hr
Address:  161.53.2.130

nslookup je sada upitao tvoj named da 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 pošto on pretražuje sve domene koje si naveo u /etc/resolv.conf datoteci.

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

> jagor.srce.hr
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    jagor.srce.hr
Address:  161.53.2.130

Primijeti liniju `Non-authoritative answer:' koju smo ovaj put dobili. To znači da named ovaj put nije otišao tražiti po mreži, već je pogledao u svoj cache i našao ga tamo. Ali informacija u cache-u može biti zastarjela (stale). Tako da znaš za ovu (vrlo malu) opasnost kada dobiješ `Non-authoritative answer:'. Kada nslookup kaže ovo drugi put kada ti upitaš za stroj, to je siguran znak da named cache-ira informaciju i to radi. Iz nslookup-a izlaziš dajući naredbu `exit'.

Sada znaš kako podesiti caching named. Popij pivo, mlijeko, ili što već voliš da to proslaviš.


Sljedeći dio Prethodni dio Sadržaj