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).
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
'.
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.
Sedaj znate postaviti named s predpomnilnikom. Vzemite si pivo, mleko ali kar pač imate najraje in proslavite to.