Naprej Nazaj Kazalo

3. Imenski strežnik s predpomnilnikom.

Prvi korak v konfiguraciji DNS-a, zelo uporaben za uporabnike klicnega dostopa

Imenski strežnik s predpomnilnikom bo našel odgovore na imenske poizvedbe in si jih zapomnil za naslednjič, ko jih boste potrebovali. To bo precej skrajšalo čakalni čas, še posebej, če imate počasno povezavo.

Za začetek potrebujete datoteko /etc/named.conf, ki jo named prebere, ko se zažene. Za zdaj naj vsebuje le:


// Konfiguracijska datoteka za imenski strežnik s predpomnilnikom

options {
        directory "/var/named";

        // Odkomentiranje tega lahko pomaga, če ste za požarnim zidom in
        // stvari ne delujejo, kot bi morale:

        // query-source port 53;
};

zone "." {
        type hint;
        file "root.hints";
};

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

Vrstica `directory' pove named, kje naj pogleda za datoteke. Vse datoteke, navedene zatem, se nahajajo relativno na to mesto - mapa pz se nahaja v /var/named in je torej v resnici /var/named/pz. /var/named je prava mapa glede na Standard Linux-ovega datotečnega sistema.

V named.conf je omenjena tudi datoteka /var/named/root.hints. Ta naj vsebuje:


;
; Če to datoteko že imate, se lahko tu nahajajo komentarji.
; Če se ne, ne skrbite.
;
.                       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

Datoteka opisuje korenske imenske strežnike po svetu. Ti podatki se sčasoma spreminjajo, zato jih morate ohranjati točne. Preberite si poglavje Vzdrževanje za navodila, kako to storiti.

Naslednji razdelek v named.conf je zadnji vnos zone. Njegov namen in uporabo bom razložil v naslednjem poglavju, za zdaj samo ustvarite datoteko 127.0.0 v podmapi pz:


@               IN      SOA     ns.linux.izmislek. hostmaster.linux.izmislek. (
                                1       ; Serijska številka
                                8H      ; Osveževanje
                                2H      ; Ponoven poskus
                                1W      ; Potek
                                1D)     ; Minimum TTL
                        NS      ns.linux.izmislek.
1                       PTR     localhost.

Vaš /etc/resolv.conf mora izgledati približno takole:


search poddomena.vasa-domena.edu vasa-domena.edu
nameserver 127.0.0.1

Vrstica `search' pove, katere domene je potrebno preiskati za vsako ime računalnika, na katerega se želite priključiti. `nameserver' vsebuje naslov vašega imenskega strežnika, v tem primeru vašega lastnega računalnika, na katerem bo named tekel (127.0.0.1 je v redu, tudi če ima vaš računalnik še kakšen naslov). Če želite navesti več imenskih strežnikov, vpišite za vsakega po eno `nameserver' vrstico. (Zapomnite si: named te datoteke ne bo nikoli prebral, potreboval jo bo le del sistema, ki bo uporabljal named.)

Za ilustracijo, kaj ta datoteka počne: če poskuša program poizvedeti za foo, bo najprej poskusil foo.poddomena.vasa-domena.edu, nato foo.vasa-domena.edu in šele na koncu foo. Če program poskuša poizvedeti za sunsite.unc.edu, bo najprej poskusil sunsite.unc.edu.poddomena.vasa-domena.edu (priznam, da se zdi butasto, ampak tako stvar pač deluje), nato sunsite.unc.edu.vasa-domena.edu in končno sunsite.unc.edu. Pametno je, da v to vrstico ne vnesete preveč domen, ker iskanje po vseh zahteva kar nekaj časa.

Primer predpostavlja, da spadate v domeno poddomena.vasa-domena.edu in je vaš računalnik potemtakem vas-racunalnik.poddomena.vasa-domena.edu. Vrstica naj ne vsebuje vaše vrhnje domene (ang.: TLD, Top Level Domain), v tem primeru `edu'. Če se pogosto priključujete na računalnike v drugi domeni, lahko dodate tudi to:


search subdomain.your-domain.edu your-domain.edu druga-domena.com

in tako naprej. Vsekakor morate tukaj navedene primere zamenjati s pravimi domenami. Prosim, zapomnite si, da na koncu domen ni pik. To je zelo pomembno, prosim, zapomnite si, da na koncu domen ni pik.

Sedaj je treba glede na različico vaše C knjižnice (libc) popraviti /etc/nsswitch.conf ali /etc/host.conf. Če že imate /etc/nsswitch.conf, bomo popravili to, sicer pa /etc/host.conf.

/etc/nsswitch.conf

To je dolga datoteka, v kateri je navedeno, kje dobiti različne tipe podatkov - iz datoteke ali baze podatkov. Na začetku je navadno nekaj komentarjev, ki vam bodo pomagali pri razumevanju. Nato poiščite vrstico, ki se začne z `hosts:' - popraviti jo morate v:


hosts:      files dns

Če te vrstice še nimate, jo dodajte. Ta vrstica pove programom, naj najprej pogledajo v datoteko /etc/hosts in šele nato preverijo DNS glede na /etc/resolv.conf.

/etc/host.conf

Verjetno že vsebuje nekaj vrstic, med katerimi se ena začne z order in mora izgledati takole:


order hosts,bind

Če takšne vrstice še ni, jo dodajte. Ta vrstica pove podprogramom, ki imajo opraviti z imensko poizvedbo, naj najprej pogledajo v datoteko /etc/host.conf, nato pa povprašajo imenski strežnik (za katerega v /etc/resolv.conf piše, da je na 127.0.0.1).

3.1 Zagon named

Po vsem tem je čas, da zaženemo named. Če uporabljate povezavo na klic, jo vzpostavite. Napišite `ndc start' in pritisnite enter. Če to ne deluje, poskusite `/usr/sbin/ndc start'. Če vam tudi tu spodleti, si poglejte poglavje Vprašanja in odgovori. V datoteki, kamor vaš syslog piše sporočila (navadno /var/adm/messages, lahko pa tudi /var/log/messages), se mora med zagonom named (naredite tail -f /var/log/messages) izpisati nekaj takšnega:

(vrstice, ki se končajo z \ se nadaljujejo v naslednji vrstici)

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.

Če vidite kakršna koli sporočila o napakah, ste se verjetno nekje zmotili. Named vam bo povedal, kje je napaka (upam, da v eni izmed datotek named.conf ali root.hints :-) Ubijte named in še enkrat preglejte datoteko.

Sedaj lahko preverimo vaše nastavitve. Poženite naslookup in si oglejte svoje delo.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>

Če dobite to, vse deluje, kot je treba. Upajmo. Če ne, potem pojdite nazaj in še enkrat preglejte vse. Vsakič, ko spremenite datoteko named.conf, morate ponovno zagnati named, kar lahko storite z ukazom ndc restart.

Sedaj lahko vnesete poizvedbo. Poskusite poizvedeti o kakšnem računalniku, ki je blizu vas. Blizu mene je na primer pat.uio.no - univerza v Oslu.

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.130.16

nslookup je sedaj povprašal named za poizvedbo o pat.uio.no. Ta je nato kontaktiral enega od imenskih strežnikov, navedenih v datoteki root.hints in iskal od tam naprej. Poizvedba utegne trajati nekaj časa, ker je potrebno preiskati vse domene v /etc/resolv.conf.

Če še enkrat vprašate za isto poizvedbo, dobite tole:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50

Bodite pozorni na vrstico ``Non-authoritative answer:'', ki smo jo dobili tokrat. Pomeni, da named ni šel še enkrat iskati iste poizvedbe po internetu, temveč jo ima sedaj v predpomnilniku. Lahko pa se zgodi, da je informacija v tem času postala napačna. Named vas na to (izredno majhno) možnost opozori tako, da reče ``Non-authoritative answer:''. Ko nslookup pove to drugič, je to zanesljivo znamenje, da named shranjuje poizvedbe v predpomnilnik. Iz programa nslookup pridete tako, da napišete `exit'.

3.2 Naredimo nekaj še boljšega

V velikih, dobro organiziranih akademskih omrežjih ali omrežjih ponudnikov interneta boste včasih ugotovili, da ima omrežje nastavljeno posredovalno hierarhijo DNS strežnikov, kar pomaga razbremeniti tako samo omrežje, kot tudi zunanje strežnike. Pogosto je težko ugotoviti, ali ste v takšnem omrežju ali ne. To pravzaprav sploh ni pomembno, če si nastavite DNS strežnik vašega ponudnika interneta kot ``posredovalnik'' in tako naredite poizvedbe hitrejše ter zmanjšate obremenitev vašega omrežja. Če uporabljate dostop preko modema, je to lahko kar velik dosežek. Za namene tega primera bomo predpostavili, da ima vaš ponudnik interneta dva imenska strežnika, ki jih želite uporabljati, njuni IP številki pa sta 10.0.0.1 in 10.1.0.1. V vaši datoteki named.conf torej vstavite v razdelek ``options'' sledeče vrstice:


           forward first;
           forwarders {
                10.0.0.1;
                10.1.0.1;
            };

Ponovno zaženite vaš imenski strežnik in ga preverite z nslookup. Stvar mora delovati.

3.3 Čestitam

Sedaj znate postaviti named s predpomnilnikom. Vzemite si pivo, mleko ali kar pač imate najraje in proslavite to.


Naprej Nazaj Kazalo