<!doctype linuxdoc system>
<!-- -*-SGML-*- -->
<!-- ---------------------------------------------------------------- -->
<!-- Opomba (Dora): Angl. zone = slov. območje. (zona pomeni v slov. srh,
npr. zona me oblije, cona pa ni lep izraz in je v rabi le v pogovornem
jeziku, pomeni pa območje ali pas). Tam, kjer zone ni bilo v
narekovajih, sem popravila v območje ali v območni.  Predlagam, da
popravite še drugje, kjer 'zone' ni mišljeno angleško. Zone datoteka
bi bila potemtakem območna datoteka. -->
<!-- ---------------------------------------------------------------- -->
<article>
<title>DNS HOWTO <author>Nicolai Langfeldt (<tt>janl@linpro.no</tt>),
Jamie Norrish and others 
<date>Version 3.1, 2001-01-18
<abstract>
Kako postati mali upravitelj DNS.
V slovenščino prevedel Andrej Lajovic <tt>andrej.lajovic@guest.arnes.si</tt>, 7. avgusta
2000. Prevod posodobil in dopolnil Rok Papež <tt>rok.papez@lugos.si</tt>, 8. aprila
2002.
</abstract>

<toc>

<sect>Predgovor

<p>Ključni izrazi: DNS, BIND, BIND 4, BIND 8, named, povezava na klic, PPP, slip,
ISDN, internet, domena, ime, ločljivost, računalniki, predpomnenje.

<p>Ta dokument je del projekta Linux Documentation Project.

<sect1>Pravne zadevščine

<p>(C)opyright 1995-1999 Nicolai Langfeldt. Pri popravljanju in/ali razširjanju tega
dokumenta ohranite tudi sporočilo o avtorskih pravicah in ga ustrezno dopolnite.

<p>V slovenščino prevedel Andrej Lajovic
<tt>andrej.lajovic@guest.arnes.si</tt>, 7. avgusta 2000.  Za
razširjanje slovenskega prevoda velja enako kakor za izvirnik.

<p>Prevod malce posodobil in dopolnil Rok Papež
<tt>rok.papez@lugos.si</tt>, 8. aprila 2002.

<sect1>Zahvala in prošnja za pomoč

<p>Rad bi se zahvalil Arntu Gulbrandsenu, ki se je pregrizel skozi vse delovne
različice tega dokumenta in mi pomagal s številnimi uporabnimi predlogi. Rad bi se
zahvalil tudi mnogim, ki so mi predloge in opozorila poslali po elektronski pošti.

<p>To, kar prebirate, je dokument v trajnem razvoju, zato vas prosim, da me
obveščate o morebitnih uspehih in težavah. Tako mi boste pomagali izboljševati ta
HOWTO. Komentarje in/ali vprašanja ter denarne prispevke pošiljajte na
janl@math.uio.no. Lahko pa kupite tudi mojo knjigo o DNS. O njej si preberite v
bibliografskem razdelku. Preden mi pošljete sporočilo, na katerega želite odgovor,
preverite, ali je vaš naslov, naveden v pismu, <em>zagotovo</em> pravilen in delujoč.
Preden mi pišete, si preberite poglavje <ref id="qanda" name="Vprašanja in
odgovori">. Pa še tole: razumem le norveško in angleško.

<p>To je HOWTO. Vzdržujem ga kot del LDP že od leta 1995. Leta 2000 sem napisal
knjigo na isto temo. Rad bi poudaril, da ta HOWTO, čeprav je v marsičem podoben
knjigi, <em>ni</em> le razvodenela različica knjige, ki naj bi promovirala knjižno
izdajo. Knjigo najdete navedeno v bibliografskem razdelku na koncu HOWTO.  Bralci
tega HOWTO so mi pomagali uvideti, kaj je pri DNS težko doumljivo. To mi je pomagalo
pri pisanju knjige, pri tem početju pa sem obenem uvidel, kaj bi bilo nujno za ta
HOWTO.  HOWTO je torej pomagal oblikovati knjigo, knjiga pa je sooblikovala
različico 3 tega HOWTO.  Zahvalo dolgujem tudi založniku knjige, Que, da se je sploh
spustil v tveganje z menoj :-)

<!-- 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)

If you want to translate this HOWTO please notify me so I can keep
track of what languages it has been published in, and also I can
notify you when the HOWTO has been updated. -->

<sect1>Posvetilo

<p>Ta HOWTO posvečam Anne Line Norheim Langfeldt, čeprav ga verjetno ne bo nikoli
prebrala - pač ni take vrste dekle.

<sect>Uvod<label id="intro">

<p><bf>Kaj to je in kaj ni</bf>

<p>DNS (Domain Name System) preslikuje imena računalnikov v številke IP, ki jih
imajo vsi računalniki v internetu. Preslikuje imena v naslove, naslove v imena in še
nekaj drugih stvari. Ta HOWTO opisuje, kako ustvariti tak preslikovalni imenik v
sistemu Unix z nekaterimi značilnostmi Linuxa.

<p>Preslikava je preprosta povezava med dvema rečema, v tem primeru med imenom
računalnika, na primer <tt>ftp.linux.org</tt>, in njegovo številko IP (oz. 
naslovom) <tt>199.249.150.4</tt>. DNS zmore tudi obratne preslikave, iz številke IP v
ime računalnika; temu se reče angleško "reverse mapping".

<p>DNS je za nepoučene (vas ;-) eno bolj nejasnih področij upravljanja omrežij. Na
srečo pa ni tako zelo zapleten. Ta HOWTO poskuša pojasniti nekatere stvari. Opisuje,
kako postaviti <em>preprost</em> imenski strežnik DNS. Začeli bomo s predpomnilnim
imenskim strežnikom in prešli na postavitev primarnega strežnika DNS. Kar zadeva
bolj zapletene postavitve, si lahko ogledate poglavje <ref id="qanda"
name="Vprašanja in odgovori">. Če niso opisane tam, boste morali <em>prebrati</em> nekaj
prave dokumentacije. Kaj sestavlja pravo dokumentacijo, sem navedel v poglavju <ref
id="bigger" name="Zadnje poglavje">.

<p>Preden začnete, naj bo vaš računalnik nastavljen tako, da se lahko telnetate vanj
in iz njega ter uspešno izvajate različne povezave v omrežje. Še posebej pomembno
je, da lahko izvedete ukaz <tt>telnet 127.0.0.1</tt> in dobite svoj računalnik
(preizkusite zdaj!).  Za začetek potrebujete tudi ustrezno nastavljene datoteke
<tt>/etc/nsswitch.conf</tt>, <tt>/etc/resolv.conf</tt> in
<tt>/etc/hosts</tt>, ker njihovih funkcij tu ne bom razlagal.  Če
računalnika še nimate ustrezno nastavljenega, si oglejte
Networking-HOWTO in/ali Networking-Overview-HOWTO, kjer je razloženo,
kako se vse to vzpostavi. Preberite si to.

<p>Ko rečem 'vaš računalnik', mislim računalnik, na katerem postavljate DNS, in ne
kak drug računalnik, ki sodeluje pri vaših omrežnih podvigih.

<p>Predpostavljam, da niste za takim ali drugačnim požarnim zidom, ki bi preprečeval
imenske poizvedbe. Če ste, boste potrebovali posebno konfiguracijo --- poglejte v
poglavje <ref id="qanda" name="Vprašanja in odgovori">.

<p>Strežnik za imenske poizvedbe je v Unixu program <tt>named</tt>.  Je del paketa
``BIND'', ki ga vzdržuje The Internet Software Consortium. <tt>Named</tt> je del
večje distribucije Linuxa in je najpogosteje nameščen v sklopu paketa <tt>BIND</tt> kot
<tt>/usr/sbin/named</tt>.

<p>Če imate named, ga verjetno lahko uporabite; drugače pa lahko prevedeni program
dobite z Linuxove strani ftp ali si pretočite zadnjo različico izvirne kode z <url
url="ftp://ftp.isc.org/isc/bind/src/">. Ta HOWTO govori o različici bind 8. Starejša
različica tega HOWTO, ki velja za bind 4, je še vedno dosegljiva na <url
url="http://www.math.uio.no/~janl/DNS/">. Če vaš priročnik named (man) govori (na
koncu, v razdelku FILES) o <tt>named.conf</tt>, imate bind 8, če govori o
<tt>named.boot</tt>, pa imate bind 4. Če imate različico 4 in se vam zdi varnost
pomembna, bi morali vsekakor nadgraditi na različico 8.

<p>DNS je čez ves internet segajoča zbirka. Pazite, kaj vpišete vanjo. Če boste
namreč vanjo vpisovali neumnosti, boste (in to velja tudi za druge) iz nje tudi
dobili neumnosti.  Vzdržujte svoj DNS urejen in pregleden, da vam bo dobro služil.
Naučite se ga uporabljati, upravljati, odpravljati napake in bodite še en v vrsti
dobrih upraviteljev, ki skrbijo, da internet zgledno deluje.

<p><bf>Nasvet:</bf> Naredite si rezervne kopije vseh datotek, ki jih boste spreminjali -
če kaj ne bo delovalo, lahko sistem še vedno vrnete v staro, delujoče stanje.

<sect>Predpomnilni imenski strežnik<label id="caching">

<p><bf>Prvi korak pri nastavljanju DNS, zelo uporaben za uporabnike
klicnega dostopa</bf>

<p>V Red Hat in sorodnih distribucijah lahko dosežete enak učinek kakor z napotki v
prvih odsekih tega HOWTO z namestitvijo paketov <tt>bind</tt>, <tt>bind-utils</tt> in
<tt>caching-nameserver</tt>. Če uporabljate Debian, preprosto namestite paketa <tt>bind</tt>
in <tt>bind-doc</tt>. Seveda se z namestitvijo teh paketov ne boste naučili toliko kakor
ob branju tega HOWTO, zato namestite pakete in ob prebiranju tega razdelka preverite
nameščene datoteke.

<p>Predpomnilni imenski strežnik poišče odgovor na imensko poizvedbo in si jo
zapomni za naslednjič. S tem se znatno skrajša čakalni čas ob prihodnji poizvedbi,
še posebej, če imate počasno povezavo.

<p>Najprej potrebujete datoteko <tt>/etc/named.conf</tt> (Debian:
<tt>/etc/bind/named.conf</tt>). Ta se prebere, ko se named zažene, in naj za zdaj
vsebuje le:

<code>
// Konfiguracijska datoteka za predpomnilni imenski strežnik

options {
        directory "/var/named";

        // Odkomentiranje tega lahko pomaga, če ste za požarnim zidom in
        // stvari ne delujejo, kakor bi morale. Kljub temu se pogovorite
        // s svojim upraviteljem požarnega zidu.

        // query-source 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 distribucij Linuxa lahko uporabijo drugačna imena datotek; kljub temu
imajo približno enake nastavitve.

<p>Vrstica `<tt>directory</tt>' pove named, kje naj pogleda za datoteke. Vse datoteke,
navedene zatem, so spravljene relativno na to mesto.  Imenik <tt>pz</tt> je v
<tt>/var/named</tt> in je torej v resnici <tt>/var/named/pz</tt>.
<tt>/var/named</tt> je pravilni imenik glede na datotečni hierarhični standard
<em>Linux File system Standard</em>.

<p>V <tt>named.conf</tt> je omenjena tudi datoteka
<tt>/var/named/root.hints</tt>.  Ta naj vsebuje: (<em>Pri kopiranju
vsebine datoteke prek odlagališča iz elektronske različice tega
dokumenta preverite, da v datoteki <bf>ni</bf> začetnih presledkov,
tj.  vse vrstice se morajo začeti z nepraznim znakom. Nekatero
programje za urejanje besedil vnese na začetke vrstic presledke in
povzroči zmedo. V tem primeru odstranite začetne presledke.</em>)

<code>
;
; Če to datoteko že imate, so lahko tu komentarji.
; Če je še nimate, naj vas to ne skrbi.
;
.                       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>Datoteka opisuje korenske imenske strežnike po svetu. Ti podatki se sčasoma
spreminjajo, zato jih je treba tu in tam posodobiti. V poglavju
<ref id="maint" name="Vzdrževanje"> si preberite navodila, kako to storiti.

<p>Naslednji razdelek v <tt>named.conf</tt> je zadnji vnos <tt>zone</tt>. Njegov
namen in uporabo bom razložil v naslednjem poglavju, za zdaj samo ustvarite datoteko
<tt>127.0.0</tt> v podimeniku <tt>pz</tt>: (<em>Spet po potrebi odstranite začetne
presledke</em>)

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

<p>Vaš <tt>/etc/resolv.conf</tt> mora biti videti približno takole:
(<em>Spet odstranite presledke!</em>)

<code>
search poddomena.vasa-domena.edu vasa-domena.edu
nameserver 127.0.0.1
</code>

<p>Vrstica `<tt>search</tt>' pove, katere domene je treba preiskati za vsako ime
računalnika, na katerega se želite priključiti. `<tt>nameserver</tt>' določa 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, četudi ima vaš računalnik še drug naslov). Če
želite navesti več imenskih strežnikov, vpišite za vsakega po eno
`<tt>nameserver</tt>' vrstico. (Napotek: named te datoteke ne bo nikoli prebral,
potreboval jo bo le del sistema, ki bo uporabljal named. Napotek 2: V nekaterih
datotekah resolv.conf je vrstica "domain". To je v redu, samo ne uporabite "search"
in "domain", ti dve nastavitvi se izključujeta).

<p>Za ponazoritev, kaj ta datoteka počne: če poskuša program opraviti poizvedbo za
<tt>foo</tt>, bo najprej poskusil <tt>foo.poddomena.vasa-domena.edu</tt>, nato
<tt>foo.vasa-domena.edu</tt> in šele na koncu <tt>foo</tt>. Pametno je, da v to
vrstico ne vnesete preveč domen, ker iskanje po vseh vzame kar nekaj časa.

<p>Zgled predpostavlja, da spadate v domeno <tt>poddomena.vasa-domena.edu</tt> in je
vaš računalnik potemtakem <tt>vas-racunalnik.poddomena.vasa-domena.edu</tt>. V
vrstici "search" naj ne bo vaše vrhnje domene (ang.: TLD, Top Level Domain), v tem
primeru `<tt>edu</tt>'. Če se pogosto priključujete na računalnike v drugi domeni,
lahko dodaste tudi vrstico: (<em>Odstranite presledke, če je treba</em>)

<code>
search poddomena.vasa-domena.edu vasa-domena.edu druga-domena.com
</code>

in tako naprej. Vsekakor morate tu navedene zglede nadomestiti s pravimi domenami.
Zapomnite si, da na koncu domen ni pik. To je zelo pomembno; zapišite si za uho, da
na koncu domen ni pik.

<sect1>Zagon named<label id="starting">

<p>Po vsem tem je čas, da zaženemo named. Če uporabljate povezavo na klic, jo
vzpostavite. Napišite `<tt>ndc start</tt>' in pritisnite enter. Če to ne deluje,
poskusite `<tt>/usr/sbin/ndc start</tt>'. Če vam tudi tu spodleti, si oglejte
poglavje <ref id="qanda" name="Vprašanja in odgovori">. V datoteki, v katero vaš
syslog piše sporočila (navadno <tt>/var/adm/messages</tt>, lahko tudi v imeniku
<tt>/var/log</tt>, morda tudi v datoteki <tt>syslog</tt>), se mora med zagonom named
(naredite <tt>tail -f /var/log/messages</tt>) izpisati nekaj takega:

<p>(vrstice, ki se končajo s \, se nadaljujejo v naslednji vrstici)

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


<p>Če zagledate tako ali drugačno sporočilo o napaki, ste se verjetno nekje
zmotili. Named vam bo povedal, v kateri datoteki je napaka. Odpravite
napako in izvedite "ndc restart".

<p>Zdaj lahko preverite svoje nastavitve. Tradicionalno je bil za to
uporabljen program <tt>nslookup</tt>. Dandanes se priporoča naslednje:

<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>Če dobite to, vse deluje, kot je treba. Vsaj upamo tako. Če ne, se vrnite in še
enkrat vse preglejte. Vsakič, ko spremenite datoteko <tt>named.conf</tt>, morate znova
zagnati named. To lahko storite z ukazom <tt>ndc restart</tt>.

<p>Zdaj lahko izvedete poizvedbo. Poskusite poizvedeti po kakem računalniku, ki je
blizu vas. V moji bližini je na primer <tt>pat.uio.no</tt> - univerza v Oslu.

<tscreen><verb>
$ dig pat.uio.no

; <<>> DiG 8.2 <<>> pat.uio.no 
;; 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: 3, ADDITIONAL: 3
;; QUERY SECTION:
;;      pat.uio.no, type = A, class = IN

;; ANSWER SECTION:
pat.uio.no.             1D IN A         129.240.130.16

;; AUTHORITY SECTION:
uio.no.                 1D IN NS        nissen.uio.no.
uio.no.                 1D IN NS        ifi.uio.no.
uio.no.                 1D IN NS        nn.uninett.no.

;; ADDITIONAL SECTION:
nissen.uio.no.          1D IN A         129.240.2.3
ifi.uio.no.             1H IN A         129.240.64.2
nn.uninett.no.          1D IN A         158.38.0.181

;; 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>Tokrat je dig povprašal named za poizvedbo o <tt>pat.uio.no</tt>. Ta je nato
stopil v stik z enim od imenskih strežnikov, navedenih v datoteki
<tt>root.hints</tt>, in iskal od tam naprej. Poizvedovanje utegne trajati nekaj
časa, ker je treba preiskati vse domene v <tt>/etc/resolv.conf</tt>.  Naj vas
opozorim na zastavico "aa" v vrstici "flags:". Oznanja, da je odgovor prišel
neposredno od strežnika, ki je odgovoren za domeno, o kateri smo poizvedovali
(odgovor "authoritive"). Pozneje bomo povedali več o odgovorih "authoritive".

<p>Če še enkrat izvedete isto poizvedbo, dobite naslednje:

<tscreen><verb>
$ dig pat.uio.no

; <<>> DiG 8.2 <<>> pat.uio.no 
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUERY SECTION:
;;      pat.uio.no, type = A, class = IN

;; ANSWER SECTION:
pat.uio.no.             23h59m58s IN A  129.240.130.16

;; AUTHORITY SECTION:
UIO.NO.                 23h59m58s IN NS  nissen.UIO.NO.
UIO.NO.                 23h59m58s IN NS  ifi.UIO.NO.
UIO.NO.                 23h59m58s IN NS  nn.uninett.NO.

;; ADDITIONAL SECTION:
nissen.UIO.NO.          23h59m58s IN A  129.240.2.3
ifi.UIO.NO.             1d23h59m58s IN A  129.240.64.2
nn.uninett.NO.          1d23h59m58s IN A  158.38.0.181

;; 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>Bodite pozorni, da tokrat manjka zastavica "aa". To pomeni, da named ni šel še
enkrat izvajat iste poizvedbe po internetu, saj jo ima že v svojem predpomnilniku.
<em>Lahko</em> pa se zgodi, da je informacija v tem času zastarela. Na to (zelo malo
verjetno) možnost ste opozorjeni s tem, da ni zastavice "aa". Zdaj veste, da
predpomnenje poizvedb deluje.

<sect1>Poizvedovalci (ang. Resolvers)

<p>Vsi OS imajo standardizirane klice C API gethostbyname in gethostbyaddr, ki lahko
prejemajo podatke iz več virov. Ti viri so določeni v <tt>/etc/nsswitch.conf</tt> v
Linuxu (in nekaterih drugih Unixih). To je dolga datoteka, ki določa, iz katere
datoteke ali zbirke podatkov se dobi različne podatke. Ponavadi so pri vrhu uporabne
opombe, ki bi jih bilo nemara pametno prebrati. Najdite vrstico, ki se začne z
`<tt>hosts:</tt>'; bila naj bi:

<code>
hosts:      files dns
</code>

(<em>Saj se še spomnite nasvetov o začetnih presledkih? Ne bom jih namreč več
ponavljal.</em>)

<p>Če ni vrstice, ki bi se začela s `<tt>hosts:</tt>', jo sami vstavite, tako kot je
navedeno zgoraj. Vrstica pravi, naj se najprej preveri datoteka <tt>/etc/hosts</tt>
in šele nato DNS, tako je navedeno v <tt>resolv.conf</tt>.

<sect1>Čestitam

<p>Zdaj znate postaviti named s predpomnilnikom. Natočite si piva, mleka ali
tistega, kar pač najraje žulite, in zažurajte.

<sect>Posredovanje (ang. forwarding)

<p>V velikih, dobro organiziranih akademskih omrežjih ali omrežjih ponudnikov
interneta boste včasih ugotovili, da ima omrežje nastavljeno posredovalno hierarhijo
strežnikov DNS, kar pomaga razbremeniti tako strežnike v lastnem omrežju kakor tudi
zunanje strežnike. Pogosto je težko ugotoviti, ali ste v takem omrežju ali ne. To
pravzaprav sploh ni pomembno, če nastavite strežnik DNS vašega ponudnika interneta
kot ``posredovalnik'' in tako opravite poizvedbe hitreje ter zmanjšate obremenitev
vašega omrežja. Če uporabljate dostop prek modema, je to lahko kar precejšnja
pridobitev. Za ta zgled bomo predpostavili, da ima vaš ponudnik interneta dva
imenska strežnika, ki ju želite uporabljati, njuni številki IP pa sta
<tt>10.0.0.1</tt> in <tt>10.1.0.1</tt>. V svoji datoteki <tt>named.conf</tt> torej
vstavite v razdelek ``options'' naslednje vrstice:

<code>
           forward first;
           forwarders {
                10.0.0.1;
                10.1.0.1;
            };
</code>

<p>Za računalnike s povezavo na klic, ki uporabljajo posredovalce, je na voljo
imenitna zvijača. Opisana je v razdelku <ref id="qanda" name="Vprašanja in
odgovori">.

<p>Znova zaženite svoj imenski strežnik in ga preverite z dig. To naj bi delovalo.

<sect><em>Preprosta</em> domena<label id="simple">

<p><bf>Kako postaviti svojo domeno</bf>

<sect1>Najprej kanček teorije

<p>Najprej: Saj ste prebrali vse do tu, kajne? To je namreč nujno.

<p>Preden se <em>zares</em> lotimo tega poglavja, vam bom postregel z nekaj teorije in
zgledi o tem, kako deluje DNS. In vi boste to prebrali, ker vam bo koristilo. Če se
vam tega zares ne ljubi brati, pa bi bilo dobro, ko bi vsaj na hitro preleteli. 
Branje upočasnite, ko pridete do tistega, kar mora iti v vašo datoteko
<tt>named.conf</tt>.

<p>DNS je hierarhičen, drevesno strukturiran sistem. Vrh se imenuje `<tt>.</tt>' in
izgovarja `koren' (ang.: root), kot je značilno za drevesne podatkovne strukture.
Pod <tt>.</tt> je veliko število vrhnjih domen (ang.: TLD, Top Level Domain), od katerih
so najbolj znane <tt>ORG</tt>, <tt>COM</tt>, <tt>EDU</tt> in <tt>NET</tt>, seveda pa jih je še
veliko več. Struktura je prav taka kakor drevo - ima korenino in je razvejena. Če
imate vsaj nekaj računalniškega znanja, boste v DNS prepoznali iskalno drevo, našli
boste stičišča, liste in robove. Pike so stičišča in robovi so na imenih.

<p>Ko iščemo določen računalnik, gre poizvedba rekurzivno po hierarhiji, začenši pri
vrhu. Če hočete izvedeti naslov <tt>prep.ai.mit.edu</tt>, mora vaš imenski strežnik
nekje začeti. Začne s svojim predpomnilnikom. Če je v predpomnilniku odgovor, bo
odgovoril, kakor  smo videli v prejšnjem razdelku. Če odgovora ne pozna, bo začel
odstranjevati dele imena, začenši na levi strani. Pogledal bo, ali ve, kaj o
<tt>ai.mit.edu.</tt>, potem o <tt>mit.edu.</tt>, potem o <tt>edu.</tt>. Vedno pa pozna <tt>.</tt>,
saj je v datoteki <tt>root.hints</tt>. Potem bo povprašal <tt>.</tt> strežnik o
<tt>prep.ai.mit.edu</tt>. Ta <tt>.</tt> strežnik ne bo poznal odgovora, bo pa pomagal s
preusmeritivjo (ang. refferal), s katero bo nakazal, kje naj se išče odgovor. Prek
preusmeritev bo naš strežnik prišel do strežnika, ki bo imel pravi odgovor. To bom
zdaj ponazoril. <tt>+norec</tt> pomeni, naj dig sprašuje nerekurzivno, tako da moramo
sami delati rekurzijo. Z drugimi stikali zmanjšamo obseg podatkov, ki jih izpisuje
dig:

<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>To je preusmeritev. Dobili samo samo "Authority section", brez "Answer section".
Naš lastni imenski strežnik nas preusmeri. Izberimo naključno enega:

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

Takoj nas preusmeri na strežnik MIT.EDU. Znova naključno izberemo neki strežnik:

<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>Tokrat smo dobili tudi "ANSWER SECTION" in odgovor na naše vprašanje. V razdelku
"AUTHORITY SECTION" je podatek, katere strežnike naj naslednjič povprašamo o
<tt>ai.mit.edu</tt>. Tako lahko neposredno njih vprašamo, kadar bomo spraševali po
imenih iz <tt>ai.mit.edu</tt>.

<p>Začenši s <tt>.</tt>, smo našli imenski strežnik za vsako stopnjo v imenu domene s
preusmeritvijo. Če bi uporabili svoj strežnik DNS namesto vseh drugih strežnikov, bi
se vsi tako zbrani podatki shranili v predpomnilnik in kar nekaj časa mu ne bi bilo
treba ponoviti že opravljenih poizvedb.

<p>V drevesni prispodobi je vsaka ``<tt>.</tt>'' v imenu vejišče. Vsak del med dvema
``<tt>.</tt>'' je ime posameznih vej v drevesu. Po drevesu se gre tako, da se vzame
želeno ime (<tt>prep.ai.mit.edu</tt>) in poizvemo pri korenu (<tt>.</tt>) ali pri
kateremkoli že strežniku od korena proti prep.ai.mit.edu, ki ga imamo v
predpomilniku. Šele ko v predpomnilniku ni več iskanih zapisov, se rekurzivne
poizvedbe opravijo pri zunanjih strežnikih in se sledi preusmeritvam (ang. refferal)
vse dlje proti imenu.

<p>Domena, o kateri se manj govori, a je vseeno zelo pomembna, je <tt>in-addr.arpa</tt>.
Prav tako kakor `navadne' domene je ugnezdena, vendar nam omogoča ravno nasprotno -
da izvemo imena računalnikov iz njihovih naslovov. Pomembno si je zapomniti, da so
naslovi IP v domeni <tt>in-addr.arpa</tt> zapisani v nasprotnem vrstnem redu. Če je
naslov računalnika <tt>192.128.52.43</tt>, je postopek, ki ga ubere named, prav tak
kakor za <tt>prep.ai.mit.edu</tt>: najdi strežnik za <tt>arpa.</tt>, najdi strežnik
<tt>in-addr.arpa.</tt>, najdi strežnik za <tt>192.in-addr.arpa.</tt>, najdi strežnik
za <tt>128.192.in-addr.arpa.</tt>, najdi strežnik za
<tt>52.128.192.in-addr.arpa.</tt> in končno najdi zapise za
<tt>43.52.128.192.in-addr.arpa.</tt> Bistro, kaj? (Recite `da'.) Prav dejstvo, da so
številke obrnjene, lahko povzroči veliko zmešnjavo.

<sect1>Naša lastna domena

<p>Zdaj bomo definirali svojo domeno - <tt>linux.izmislek</tt> - in v njej definirali
računalnike. Uporabil sem popolnoma izmišljeno domeno; tako smo lahko gotovi, da ne
bomo komu skočili v zelje.

<p>Še nekaj, preden začnemo: v imenih računalnikov ne sme biti določenih znakov --
omejeni smo na črke angleške abecede: a-z, na številke:0-9 in na znak '-'
(pomišljaj).  Držite se jih.  DNS ne razlikuje različnih velikosti črk, zato je
<tt>pat.uio.no</tt> zanj isto kakor <tt>Pat.UiO.No</tt>.

<p>Delo smo začeli že s tem razdelkom v <tt>named.conf</tt>:

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

<p>Prosim, zapomnite si, da na koncu domen v tej datoteki ni pike `<tt>.</tt>'. Ta
razdelek pove, da bomo zdaj definirali <tt>0.0.127.in-addr.arpa</tt>, da smo za to
domeno glavni (angl. master) strežnik in da so podatki zanjo shranjeni v datoteki
<tt>pz/127.0.0</tt>. Datoteko smo že prej ustvarili, v njej pa je:

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

<p>Prosim, zapomnite si pike `<tt>.</tt>' na koncu vseh polnih domen v tej datoteki kot
nasprotje datoteki <tt>named.conf</tt>. Nekateri začnejo vsako območno datoteko z ukazom
<tt>&dollar;ORIGIN</tt>, vendar je to popolnoma odveč. Izvor (kam v hierarhiji DNS
spada) območne datoteke je namreč naveden v <tt>named.conf</tt>, v tem primeru je to
<tt>0.0.127.in-addr.arpa</tt>.

<p>V tej območni datoteki so tri zapisi virov (ang.: RRs, resource records): SOA, NS
in PTR. SOA pomeni začetek pristojnosti (ang.: Start Of Authority). `@' je oznaka za
izvor in ker je v stolpcu `domena' za to datoteko navedena 0.0.127.in-addr.arpa,
prva vrstica v resnici pomeni

<tscreen><verb>
0.0.127.in-addr.arpa.	IN	SOA ...
</verb></tscreen>

<p>NS je zapis vira imenskega strežnika (ang.: Name Server RR). Na začetku te
vrstice ni oznake `@', ker se to ohranja še iz prejšnje vrstice - to prihrani veliko
tipkanja. Zapis vira NS bi torej lahko zapisali tudi kot

<tscreen><verb>
0.0.127.in-addr.arpa.	IN	NS	ns.linux.izmislek
</verb></tscreen>

<p>DNS pove, kateri računalnik je strežnik za domeno <tt>0.0.127.in-addr.arpa</tt>, in
to je <tt>ns.linux.izmislek</tt>. 'ns' je standardno ime za imenske strežnike, kot je
<tt>www.</tt><em>nekaj</em> standardno ime za spletne strežnike, vendar to ni pravilo - ime
je lahko karkoli.

<p>Zapis vira PTR (ang.: Domain Name Pointer) pravi, da se računalniku na naslovu 1
v podomrežju <tt>0.0.127.in-addr.arpa</tt>, torej 127.0.0.1, imenuje <tt>localhost</tt>.

<p>Zapis SOA (Start Of Authority) je glava za <em>vse</em> območne datoteke, v katerih
mora biti natanko en zapis SOA. Ta zapis obsega podatke o domeni, od kod prihaja
(računalnik z imenom <tt>ns.linux.izmislek</tt>), kdo je odgovoren za njeno vsebino
(<tt>hostmaster@linux.izmislek</tt> - tu vstavite svoj e-naslov), katera različica
območne datoteke je to (serijska številka: 1) in druge podatke, ki imajo opraviti s
strežniki DNS s predpomnenjem ter s sekundarnimi strežniki DNS. Za vsa druga polja
(osveževanje - refresh, vnovični poskus - retry, razveljavljenje - expire in
minimum) se zanesite na številke, ki so navedene v tem HOWTO, in vse bi moralo
ustrezno delovati. Pred zapisom SOA pride obvezna vrstica <tt>$TTL 3D</tt>. Naj bo v
vseh vaših območnih datotekah.

<p>Zdaj spet zaženite named (ukaz je <tt>ndc restart</tt>) in uporabite dig, če si
želite ogledati svoje delo. <tt>-x</tt> opravi obratno poizvedbo (ang.: reverse query):

<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>Torej uspe preslikati 127.0.0.1 v <tt>localhost</tt>. Odlično. Zdaj se lahko lotimo
našega poglavitnega opravila, domene <tt>linux.izmislek</tt>. Najprej vstavimo nov
območni (ang.: zone) razdelek v <tt>named.conf</tt>:

<code>
zone "linux.bogus" {
	notify no;
	type master;
        file "pz/linux.izmislek"; };
</code>

<p>Spet si zapomnite, da na koncu domen v <tt>named.conf</tt> ni pik `<tt>.</tt>'.

<p>V območno datoteko <tt>linux.izmislek</tt> bomo napisali nekaj popolnoma izmišljenih
podatkov:

<code>
;
; Območna datoteka za linux.izmislek
;
; Polna območna datoteka
;
$TTL 3D
@	IN	SOA	ns.linux.izmislek. hostmaster.linux.izmislek. (
			199802151	; serial, današnji datum + današnja serijska številka
			8H		; refresh, sekund
			2H		; retry, sekund
			4W		; expire, sekund
			1D )		; minimum, sekund
;
		NS	ns		; internetni naslov imenskega strežnika
		MX	10 mail.linux.izmislek		; Primarni poštni strežnik
		MX	20 mail.prijatelj.izmislek.	; Sekundarni poštni strežnik
;
localhost	A	127.0.0.1
ns		A	192.168.196.2
mail		A	192.168.196.4
</code>

<p>O zapisu SOA si morate zapomniti dvoje. <tt>ns.linux.izmislek</tt> <em>mora</em> biti
resničen računalnik z zapisom A. Prepovedano je imeti zapis CNAME za računalnik,
naveden v zapisu SOA. Vsekakor ni pomembno, da  se imenuje 'ns', lahko ima
kakršnokoli veljavno ime. Drugo, hostmaster.linux.izmislek se bere kot
hostmaster@linux.izmislek in mora biti veljaven naslov ali preusmeritev naslova, na
katerega bo tisti, ki vzdržuje DNS, prejemal pošto (ta človek naj pošto tudi redno
pregleduje). Ni nujno, da je to ravno `hostmaster', lahko je vaš navaden e-naslov,
vendar se pogosto pričakuje tudi naslov `hostmaster'.

<p>V tej datoteki je nov zapis vira, in sicer MX, kar pomeni poštni strežnik
(ang.: Mail eXchanger). Ta zapis pove sistemom, kam naj pošljejo pošto, ki
je naslovljena na <tt>nekdo@linux.izmislek</tt>, v tem primeru na
<tt>mail.linux.izmislek</tt> ali <tt>mail.prijatelj.izmislek</tt>. Številka pred imeni
računalnikov pomeni prednost. Če je le mogoče, se pošta pošlje strežniku z najmanjšo
številko (10), drugače pa naslednjemu z najmanjšo številko, v tem primeru
<tt>mail.prijatelj.izmislek</tt>, ki ima prednost 20.

<p>Znova zaženite named z ukazom <tt>ndc restart</tt> in opazujte rezultate z digom:

<tscreen><verb>
$ dig any linux.izmislek +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.izmislek, type = ANY, class = IN

;; ANSWER SECTION:
linux.izmislek.            3D IN MX        10 mail.linux.izmislek.linux.izmislek.
linux.izmislek.            3D IN MX        20 mail.prijatelj.izmislek.
linux.izmislek.            3D IN NS        ns.linux.izmislek.
linux.izmislek.            3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum
</verb></tscreen>

<p>Po pazljivem opazovanju boste odkrili napako. Vrstica

<tscreen><verb>
linux.izmislek.            3D IN MX        10 mail.linux.izmislek.linux.izmislek.
</verb></tscreen>

<p>je popolnoma napačna. Morala bi biti

<tscreen><verb>
linux.izmislek.            3D IN MX        10 mail.linux.izmislek.
</verb></tscreen>

<p>Namenoma sem naredil napako, da se boste lahko iz nje učili :-) Če pogledate v
območno datoteko, boste ugotovili, da v vrstici:

<tscreen><verb>
		MX	10 mail.linux.izmislek		; Primarni poštni strežnik
</verb></tscreen>

<p>manjka pika. Ali, drugače povedano, ima 'linux.izmislek' preveč. Če se v
območni datoteki ime računalnika ne konča s piko, se mu doda izvor in v tem primeru
povzroči dvojni <tt>linux.izmislek.linux.izmislek</tt>. Torej je

<code>
		MX	10 mail.linux.izmislek.		; Primarni poštni strežnik
</code>

ali

<code>
		MX	10 mail			; Primarni poštni strežnik
</code>

pravilno. Priporočam uporabo druge možnosti, ker je treba manj tipkati. Nekateri
strokovnjaki za BIND se s tem ne bodo strinjali, nekateri drugi pa se bodo. V
območni datoteki je lahko domena napisana in se konča s `<tt>.</tt>' ali pa ni napisana
in se namesto nje privzame izvirna domena.

<p>Poudariti moram, da v named.conf <em>ne sme</em> biti pike na koncu domen. Še sanja
se vam ne, kolikokrat je `<tt>.</tt>' tu povzročila pošteno zmešnjavo.

<p>Zdaj, ko vse to veste, je pred vami nova, popravljena območna datoteka s še nekaj
dodatnimi informacijami:

<code>
;
; Območna datoteka za linux.izmislek
;
; Polna območna datoteka
;
$TTL 3D
@	IN	SOA	ns.linux.izmislek. hostmaster.linux.izmislek. (
			199802151	; serial, današnji datum + današnja serijska številka
			8H		; refresh, sekund
			2H		; retry, sekund
			4W		; expire, sekund
			1D )		; minimum, sekund
;
		TXT	"Linux.Izmislek, vaš svetovalec za DNS"
		NS	ns		; internetni naslov imenskega strežnika
		NS	ns.prijatelj.izmislek.
		MX	10 mail		; Primarni poštni strežnik
		MX	20 mail.prijatelj.izmislek.	; Sekundarni poštni strežnik
;
localhost	A	127.0.0.1

gw		A	192.168.196.1
		HINFO	"Cisco" "IOS"
		TXT	"Usmerjevalnik"

ns		A	192.168.196.2
		MX	10 mail
		MX	20 mail.prijatelj.izmislek.
		HINFO	"Pentium" "Linux 2.0"
www		CNAME	ns

donald		A	192.168.196.3
		MX	10 mail
		MX	20 mail.prijatelj.izmislek.
		HINFO	"i486"	"Linux 2.0"
		TXT	"DEK"

mail		A	192.168.196.4
		MX	10 mail
		MX	20 mail.prijatelj.izmislek.
		HINFO	"386sx" "Linux 1.2"

ftp		A	192.168.196.5
		MX	10 mail
		MX	20 mail.prijatelj.izmislek.
		HINFO	"P6" "Linux 2.1.86"
</code>

<p>Tu smo spoznali še cel kup novih zapisov: HINFO, informacija o računalniku (ang.:
Host INFOrmation), ima dva dela in k dobrim navadam sodi, da ju izpolnite. Prvi del
je strojna oprema ali procesor računalnika, drugi pa operacijski sistem. Računalnik
z imenom 'ns' ima procesor Pentium in poganja Linux 2.0. CNAME, kanonično ime (ang.:
Canonical NAME) je način za poimenovanje istega računalnika z več različnimi imeni.
V našem primeru je www alternativno ime za ns.

<p>Uporaba zapisa CNAME je nekoliko sporna, vendar se je popolnoma varno ravnati po
pravilu, da se zapisi MX, CNAME in SOA ne smejo <em>nikoli</em> nanašati na zapis CNAME,
temveč samo na nekaj z zapisom A. Ni, denimo, priporočljivo imeti

<code>
foobar		CNAME	www			; NE!
</code>

pravilno pa je takole

<code>
foobar		CNAME	ns			; Da!
</code>

<p>Prav tako se je varno zanašati na to, da CNAME ni dovoljeno ime računalnika za
e-naslov: <tt>webmaster@www.linux.izmislek</tt> na primer ni dovoljen naslov glede na
zgoraj navedene nastavitve. Pričakujete lahko, da bo kar nekaj upraviteljev hotelo,
da to pravilo upoštevate, čeprav pri vas morda deluje. Težavam se izognete z uporabo
zapisov A (in še nekaterih drugih, na primer MX):

<code>
www		A	192.168.196.2
</code>

<p>Nekaj super strokovnjakov za BIND celo priporoča, naj se zapisi CNAME <em>sploh</em>
ne uporabljajo, vendar razprava o tem, 'zakaj da' in 'zakaj ne', ne sodi v ta HOWTO.

<p>Kakor ste že opazili, ta HOWTO in številni strežniki ne upoštevajo tega pravila.

<p>Naložite novo zbirko podatkov z ukazom <tt>ndc reload</tt>, ki pove named, naj še
enkrat prebere svoje datoteke.

<tscreen><verb>
$ dig linux.izmislek axfr

; <<>> DiG 8.2 <<>> linux.bogus axfr 
$ORIGIN linux.izmislek.
@                       3D IN SOA       ns hostmaster (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

                        3D IN NS        ns
                        3D IN NS        ns.prijatelj.izmislek.
                        3D IN MX        10 mail
                        3D IN MX        20 mail.prijatelj.izmislek.
                        3D IN TXT       "Linux.Izmislek, vaš svetovalec za DNS"
gw                      3D IN TXT       "Usmerjevalnik"
                        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.prijatelj.izmislek.
                        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.prijatelj.izmislek.
                        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.prijatelj.izmislek.
                        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.prijatelj.izmislek.
                        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>Tole je v redu. Kakor vidite, je izpis zelo podoben območni datoteki. Poglejmo,
kaj pravi samo za <tt>www</tt>:

<tscreen><verb>
$ dig www.linux.izmislek +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.izmislek, type = A, class = IN

;; ANSWER SECTION:
www.linux.izmislek.        3D IN CNAME     ns.linux.izmislek.
ns.linux.izmislek.         3D IN A         192.168.196.2
</verb></tscreen>

<p>Z drugimi besedami, pravo ime <tt>www.linux.izmislek</tt> je <tt>ns.linux.izmislek</tt>,
poleg tega pa vam poda še nekaj drugih informacij o ns, dovolj, da bi se lahko
priključili nanj, če bi bili program.

<p>Zdaj smo na polovici poti.

<sect1>Obratni vnosi (ang. reverse zone)

<p>Zdaj lahko programi pretvorijo imena v domeni linux.izmislek v naslove, na katere
se lahko priključijo, potrebujemo pa še obratne vnose, ki bodo omogočili DNS, da
pretvarja naslove v imena. Imena so pomembna informacija za številne strežnike (FTP,
IRC, WWW in druge), saj se na podlagi tega odločajo, ali se bodo sploh pogovarjali z
vami ali ne in kakšno prednost vam bodo dali, če se bodo. Za popoln dostop do vseh
storitev v internetu torej potrebujete obratne vnose.
<p>Dodajte tole v <tt>named.conf</tt>:

<code>
zone "196.168.192.in-addr.arpa" {
	notify no;
        type master;
        file "pz/192.168.196";
};
</code>

<p>Stvar je natanko taka kakor pri <tt>0.0.127.in-addr.arpa</tt>, pa tudi vsebina je
podobna:

<code>
$TTL 3D
@	IN	SOA	ns.linux.izmislek. hostmaster.linux.izmislek. (
			199802151 ; Serial, todays date + todays serial
			8H	; Refresh
			2H      ; Retry
			4W	; Expire
			1D)	; Minimum TTL
		NS      ns.linux.izmislek.

1		PTR	gw.linux.izmislek.
2		PTR	ns.linux.izmislek.
3		PTR	donald.linux.izmislek.
4		PTR	mail.linux.izmislek.
5		PTR	ftp.linux.izmislek.
</code>

<p>Znova zaženite named (<tt>ndc restart</tt>) in spet preglejte svoje
delo z dig:

<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.izmislek.
</code>

<p>Zaenkrat je videti v redu, preglejmo še vse naenkrat:

<code>
dig -x 192.168.196 AXFR

; <<>> DiG 8.2 <<>> -x AXFR 
$ORIGIN 196.168.192.in-addr.arpa.
@                       3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        4W              ; expiry
                                        1D )            ; minimum

                        3D IN NS        ns.linux.izmislek.
4                       3D IN PTR       mail.linux.izmislek.
2                       3D IN PTR       ns.linux.izmislek.
5                       3D IN PTR       ftp.linux.izmislek.
3                       3D IN PTR       donald.linux.izmislek.
1                       3D IN PTR       gw.linux.izmislek.
@                       3D IN SOA       ns.linux.izmislek. hostmaster.linux.izmislek. (
                                        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>Odlično! Če vaš izpis ni videti takole, poglejte v syslog za sporočila o napakah,
kot sem razložil na začetku tega poglavja, pod naslovom <ref id="starting"
name="Zagon named">.

<sect1>Opozorila

<p>Rad bi še nekaj dodal. Številke IP, ki sem jih uporabil v zgledih, navedenih tu,
so vzete iz blokov 'zasebnih omrežij', kar pomeni, da se jih v internetu ne sme
uporabljati za prave naslove. So pa zato varne za uporabo v zgledih. Drugo, na kar
vas moram opozoriti, je vrstica <tt>notify no;</tt>, ki pove named, naj svojih
sekundarnih strežnikov ne opozarja na spremembe območnih datotek. V BIND-8 lahko
named opozori druge strežnike, navedene v zapisih NS, kadar se katera od teh
spremeni. To je sicer pripravno pri resnični uporabi, za zasebne poskuse pa mora
biti izključeno - saj vendar nočemo, da bi naši poskusi onesnažili internet, kajne
da ne?

<p>In seveda, ta domena je popolnoma izmišljena, kot so izmišljeni tudi naslovi v
njej. Zgled prave domene si oglejte v naslednjem poglavju.

<sect1>Zakaj obratne poizvedbe ne delujejo.

<p>Pri postavljanju obratnih vnosov preži na nas nekaj ``pasti'', ki jih navadno
rešimo z imenskimi poizvedbami. Preden greste naprej, potrebujete delujoče obratne
vnose - če vam ne delujejo, se vrnite in jih popravite.

<p>Razložil bom dve možnosti, zakaj obratni vnosi ne delujejo, kot so videti zunaj
vašega omrežja.

<sect2>Obratni vnosi niso pristojni

<p>Ko dobite od ponudnika internetnih storitev svoj del omrežja in domeno, je domena
navadno pristojna za ta del omrežja. Pristojnost je zapis NS, lepilo, ki vam
omogoča, da pridete od enega imenskega strežnika do drugega, kot sem pojasnil v
poglavju o teoriji. Saj ste ga prebrali?  Če vaši obratni vnosi ne delujejo, se
vrnite in si preberite poglavje. Takoj zdaj.

<p>Tudi obratni vnosi morajo biti pristojni za določen del omrežja. Če ste dobili
omrežje <tt>192.168.192</tt> z domeno <tt>linux.izmislek</tt>, mora ponudnik v svoje
območne datoteke zapisati tako vnos NS za imenske poizvedbe kakor tudi vnos NS za
obratne poizvedbe. Če sledite verigi od <tt>in-addr.arpa.</tt> do vas, boste verjetno
našli prekinitev - najverjetneje pri svojem ponudniku. V tem primeru stopite v stik
z njim in ga prosite, naj odpravi napako.

<sect2>Imate brezrazredno podomrežje

<p>To je dokaj zapletena tema, vendar so brezrazredna podomrežja dandanes zelo
pogosta in če niste vsaj srednje veliko podjetje, ste najverjetneje tudi vi v takem
podomrežju.

<p>Brezrazredna podomrežja danes ohranjajo internet pri življenju. Nekaj let nazaj
se je veliko razpravljalo o pomanjkanju številk IP. Bistre glave v IETF (Internet
Engineering Task Force, organizacija, ki skrbi za internet) so se staknile in
iznašle rešitev. Za določeno ceno. Ta cena je, da dobite manj kakor podomrežje
``C'', poleg tega pa se lahko zgodi, da nekatere stvari ne bodo delovale. Oglejte si
<url name="Ask Mr. DNS at" url="http://www.acmebw.com/askmrdns/00007.htm" >, če si
želite dobre razlage tega in napotkov, kako se s tem spopasti.

<p>Ste prebrali? Tega ne bom razlagal, zato si, prosim, preberite.

<p>Prvi del problema je, da mora vaš ponudnik interneta razumeti tehniko, ki jo
opisuje g. DNS. Nekateri majhni ponudniki je ne razumejo popolnoma, zato jim jo
boste morda morali razložiti. Prej se prepričajte, ali jo sploh sami obvladate ;-)
Ponudnik bo nato postavil obratne vnose v njihovem strežniku. To lahko preverite z
dig.

<p>Drugi in zadnji del problema pa je, da morate tudi vi razumeti tehniko. Če o tem
niste prepričani, se vrnite in si znova preberite, nato pa lahko postavite svoje
brezrazredne obratne vnose, kot vam opisuje g. DNS.

<p>Je pa še ena težava. Stari programi <em>ne bodo</em> sposobni slediti zvijači
<tt>CNAME</tt> v verigi poizvedovanja in zato ne bodo sposobni opraviti obratnih
poizvedb za vaš računalnik. To lahko pomeni, da vas bo strežnik razvrstil v napačen
razred, vam prepovedal dostop ali storil kaj podobnega. Če res potrebujete njegove
storitve, je edina možnost (ki jo jaz poznam), da poprosite svojega ponudnika, naj
vstavi vaš zapis PTR v njihovo brezrazredno območno datoteko namesto v zvijačo z
vnosom CNAME.

<p>Nekateri ponudniki interneta vam bodo ponudili tudi drugačne rešitve, kot so
spletni forumi za obratne vnose in podobni avtomagični sistemi.

<sect1>Sekundarni (ang. slave) strežniki

<p>Po tem, ko ste pravilno vzpostavili svoje območje v primarnem strežniku, morate
vzpostaviti vsaj še en sekundarni strežnik. Ti so potrebni zaradi zanesljivosti. Če
vaš strežnik pade, bodo uporabniki še vedno dobili potrebne podatke za vašo domeno s
pomočjo sekundarnega strežnika. Sekundarni strežnik naj bo čim dlje od vas in imejta
čim manj skupnega z naslednjim: električno napajanje, povezava LAN, ponudnik
internetnih storitev, mesto in dežela. Če so vsi našteti atributi za primarni in
sekundarni strežnik različni, imate zelo dober sekundarni strežnik.

<p>Sekundarni strežnik je imenski strežnik, ki prekopira vse območne datoteke iz
primarnega strežnika. Nastavite ga takole:

<code>
zone "linux.izmislek" {
	type slave;
	file "sz/linux.izmislek";

	masters { 192.168.196.2; };
};
</code>

<p>Uporabi se mehanizem, imenovan prenos območja (ang. zone-transfer). Tega nadzira
vaš SOA.

<code>
@	IN	SOA	ns.linux.izmislek. hostmaster.linux.izmislek. (
			199802151	; serial, todays date + todays serial #
			8H		; refresh, seconds
			2H		; retry, seconds
			4W		; expire, seconds
			1D )		; minimum, seconds
</code>

<p>Območje se prenese le, če je serijska številka na primarnem strežniku večja od
tiste na sekundarnem. Na vsak osveževalni interval (ang. refresh) sekundarni
preveri, ali ima primarni novejši zapis. Če zaradi nedosegljivosti ni mogoče
preveriti zapisa, bo poskusil vsak interval, kot je določeno v polju vnovični poskus
(ang. retry). Če bo primarni nedosegljiv ves čas do izteka razveljavitnega (ang.
expire) intervala, sekundarni odstrani to območje iz datotečnega sistema in ne bo
več posredoval njegovih podatkov.

<sect>Temeljne varnostne nastavitve <label id="security">

<p><em>Avtor Jamie Norrish</em>

<p><bf>Nastavitve, s katerimi zmanjšate možnosti za težave</bf>

<p>Nekaj preprostih korakov, ki povečajo varnost in potencialno zmanjšajo
obremenitev. Tu predstavljena snov je le začetek; če vas skrbi varnost (in ta bi vas
morala skrbeti), si oglejte še  preostalo gradivo v internetu (glej <ref id="bigger"
name="Zadnje poglavje">).

<p>Naslednje nastavitve se pokažejo v <tt>named.conf</tt>. Če se nastavitev pokaže v
razdelku <tt>options</tt>, zadeva vsa območja v tisti datoteki. Če se pokaže znotraj
vnosa <tt>zone</tt>, zadeva le tista območja. Zapis v vnosu <tt>zone</tt> je močnejši od
tistega v razdelku <tt>options</tt>.

<Sect1>Omejevanje prenosa območja

<p>Da bi lahko sekundarni strežniki odgovarjali na poizvedbe, morajo najprej
prenesti območje iz vašega primarnega strežnika. Zelo malo drugih ima to potrebo.
Zato omejite prenose območja z <tt>allow-transfer</tt> nastavitvijo. Privzemimo, da je
192.168.1.4 številka IP strežnika ns.friend.izmislek in dodajte še sebe za
razhroščevalne namene:

<code>
zone "linux.izmislek" {
      allow-transfer { 192.168.1.4; localhost; };
};
</code>

<p>S to omejitvijo so ljudem na voljo le podatki, ki jih neposredno zahtevajo. Nihče
ne more dobiti natančnih podatkov o vaši postavitvi.

<Sect1>Zaščita pred prikrivanjem naslova

<p>Najprej onemogočite poizvedbe za domene, ki jih nimate v lasti, razen iz vaših
notranjih/krajevnih računalnikov. S tem ne le onemogočite zlonamerno uporabo vašega
strežnika, ampak tudi omejite nepotrebno uporabo tega strežnika.

<code>
options {
      allow-query { 192.168.196.0/24; localhost; };
};

zone "linux.izmislek" {
      allow-query { any; };
};

zone "196.168.192.in-addr.arpa" {
      allow-query { any; };
};
</code>

<p> Zatem onemogočite rekurzivne poizvedbe, razen iz vaših notranjih/krajevnih
računalnikov. S tem se izognete napadom z okvarjenimi podatki (ang. cache poisoning
attack - napačni podatki se podtaknejo vašemu strežniku).

<code>
options {
	allow-recursion { 192.168.196.0/24; localhost; };
};
</code>

<Sect1>Uporaba named kot ne-root

<p>Zelo dobro je, da vaš strežnik named teče pod drugim uporabnikom, kot je root.
Tako morebitni vlomilec (ang.: cracker) nima na voljo vseh pravic. Najprej morate
ustvariti uporabnika in skupino, pod katero naj teče named, nato pa popravite
zagonsko (ang.: init) skripto named. Namedu nastavite uporabniško ime in skupino s
stikaloma -u in -g.

<p>Na primer, v Debian GNU/Linux 2.2 spremenite skripto <tt>/etc/init.d/bind</tt>
tako, da je v njej vrstica:

<code>
start-stop-daemon --start --quiet --exec /usr/sbin/named -- -u named -g named
</code>

<p>Enako je mogoče narediti pri Red Hat in drugih distribucijah. Dave Lugo je opisal
varno dvojno postavitev z ječo (ang.: chroot) <url
url="http://www.etherboy.com/dns/chrootdns.html">, ki bi utegnila biti zanimiva za
branje.

<sect>Zgled prave domene<label id="real-example">

<p><bf>Tu je nekaj <em>pravih</em> datotek `zone'</bf>

<p>Uporabniki so predlagali, da poleg učnih zgledov dodam tudi datoteke prave in
delujoče domene.

<p>Te zglede uporabljam z dovoljenjem Davida Bullocka z LAND-5. Datoteke so bile
posnete 24. septembra 1996 in sem jih nato nekoliko popravil, da delujejo z BIND-8,
zato se to, kar vidite tu, nekoliko razlikuje od rezultatov, ki jih dobite, če
poizvedujete pri imenskih strežnikih LAND-5.

<sect1>/etc/named.conf (ali /var/named/named.conf)

<p>Tu najdemo poglavitne razdelke `zone' za dvoje obratnih vnosov: omrežje 127.0.0
in omrežje LAND-5 <tt>206.6.177</tt>. Tu je tudi primarni razdelek za <tt>land-5.com</tt>.
Bodite pozorni na to, da datoteke niso shranjene v mapi <tt>pz</tt>, kot v tem HOWTO,
temveč v mapi <tt>zone</tt>.

<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>Če boste to datoteko prekopirali v svoj named.conf, da bi se igrali, <bf>PROSIM</bf>,
vpišite še vrstico ``<tt>notify no;</tt>'' v razdelke `zone' za obe <tt>land-5</tt>
in tako preprečite nesrečo.

<sect1>/var/named/root.hints

<p>Zapomnite si, da je ta datoteka dinamična in zato tale ni več veljavna. Svojo
lahko naredite z digom, kot sem razložil.

<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.uio.no 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; nujen zapis SOA in zapis, ki preslika 127.0.0.1 v <tt>localhost</tt>.
Oba sta potrebna. Ni treba, da je v tej datoteki še kaj. Verjetno je ne bo nikoli
treba popravljati, razen če se spremeni imenski strežnika ali e-naslov upravitelja
DNS.

<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>Če si ogledate naključno namestitev BIND, boste najbrž ugotovili, da manjka
<tt>$TTL</tt>, tako kakor tu. Prej ni bila uporabljena in šele različica BIND 8.2 je
začela opozarjati na to, da je ni. Svetujem, da v vsako območno datoteko vstavite
vrstico <tt>$TTL</tt>.

<sect1>/var/named/zone/land-5.com

<p>Tu vidimo zapis SOA in potrebni zapis NS. Kot lahko opazite, ima LAND-5 tudi
sekundarni imenski strežnik na <tt>ns2.psi.net</tt>. Tako tudi mora biti: <em>vedno</em>
mora biti zunaj določene strani še sekundarni imenski strežnik, za vsak primer.
Vidimo lahko, da je glavni računalnik, <tt>land-5</tt>, ki skrbi za veliko različnih
internetnih storitev in ima tudi nekaj alternativnih imen, narejenih s CNAME (druga
možnost je uporaba zapisov A).

<p>Iz zapisa SOA je razvidno, da domena izvira iz <tt>land-5.com</tt>, kontaktna oseba
je <tt>root@land-5.com</tt>. Tudi <tt>hostmaster</tt> je pogosto uporabljeni naslov za
kontaktno osebo. Serijska številka je v formatu yyyymmdd (leto, mesec, dan) s
pripeto dnevno serijsko številko; to je verjetno šesta različica te datoteke na dan
20. septembra 1996. Zapomnite si, da se serijska številka <em>mora</em> povečevati
monotono, in ker je današnja serijska številka omejena na <em>eno</em> cifro, mora po 9
popravkih počakati do naslednjega dne, da lahko spet popravlja datoteko. Premislite,
ali ne bi uporabili dveh številk.

<code>
@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        8H		; refresh, seconds
                        2H		; retry, seconds
                        4W		; expire, seconds
                        1D )		; minimum, seconds
                NS      land-5.com.
                NS      ns2.psi.net.
                MX      10 land-5.com.  ; Primary 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

;
;       Workstations
;
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
; {Many repetitive definitions deleted - 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>Če si ogledate imenski strežnik land-5, boste ugotovili, da so imena računalnikov
v obliki <tt>ws_</tt><em>številka</em>. Po BIND-4 je named namreč začel zahtevati, da se
točno držite znakov, ki se smejo uporabiti v imenih. BIND-8 s tem sploh ne bi
deloval več, zato sem zamenjal `_' s pomišljajem (-).

<p>Zanimivo je tudi to, da delovne postaje nimajo individualnih imen, temveč so
le-ta sestavljena iz predpone in zadnjih delov številk IP. Uporaba takega sistema
lahko zelo olajša vzdrževanje, vendar je precej neosebna in utegne vznejevoljiti
vaše stranke.

<p>Vidimo tudi, da je <tt>funn.land-5.com</tt> alternativno ime za <tt>land-5.com</tt>,
vendar z uporabo zapisa A in ne CNAME. To je dobra politika, kot sem povedal že
prej.

<sect1>/var/named/zone/206.6.177

<p>Komentarji za to datoteko sledijo.

<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.
;
;       Servers
;
1       PTR     router.land-5.com.
2       PTR     land-5.com.
2       PTR     funn.land-5.com.
;
;       Workstations
;
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.
; {Many repetitive definitions deleted - 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>Obratni vnosi so del nastavitev, ki povzroča največ težav. Uporabljajo se za
iskanje imena računalnika, če imate njegovo številko IP.  Zgled: ste strežnik IRC in
sprejemate povezave odjemalcev IRC. A ker ste norveški strežnik IRC, želite
sprejemati le povezave odjemalcev na Norveškem in v drugih skandinavskih državah. Ko
se na vas priključi odjemalec, vam lahko vaša knjižnica C pove številko IP 
računalnika, ki se je priključil, ker je napisana v vsakem paketu podatkov, ki pride
po internetu. Zdaj lahko pokličete funkcijo gethostbyaddr, ki preslika številko IP v
ime računalnika. Gethostbyaddr bo vprašal strežnik DNS in ta bo prevzel iskanje
imena. Predpostavimo, da se je poskusil priključiti odjemalec z
ws-177200.land-5.com. Številka IP, ki vam jo pove knjižnica C, je 206.6.177.200. Da
bi ugotovili ime računalnika, moramo najti <tt>200.177.6.206.in-addr.arpa</tt>.
Strežnik DNS bo najprej našel strežnike za <tt>arpa.</tt>, nato strežnike za
<tt>in-addr.arpa.</tt> in sledil po številkah 206 in 6 ter končno našel strežnik za
<tt>177.6.206.in-addr.arpa.</tt> na LAND-5. Od njega bo dobil odgovor, da ima za
<tt>200.177.6.206.in-addr.arpa</tt> zapis ``<tt>PTR ws-177200.land-5.com</tt>'', kar
pomeni, da k naslovu
<tt>206.6.177.200</tt> sodi ime <tt>ws-177200.land-5.com</tt>. Tako kakor opis
poizvedbe za <tt>prep.ai.mit.edu</tt> je tudi ta malce fiktiven.

<p>Vrnimo se k zgledu strežnika IRC. Strežnik sprejema samo povezave iz
skandinavskih dežel, to je <tt>*.no</tt>, <tt>*.se</tt> in <tt>*.dk</tt>. Ime
<tt>ws-177200.land-5.com</tt> vsekakor ne ustreza nobeni od teh možnosti, zato bo
strežnik zavrnil povezavo. Če <em>ne bi</em> bilo obratnih preslikav za
<tt>206.6.177.200</tt> skozi <tt>in-addr.arpa</tt>, strežnik sploh ne bi mogel najti imena
računalnika in vse, kar bi imel za primerjati z <tt>*.no</tt>, <tt>*.se</tt> in <tt>*.dk</tt>,
bi bilo <tt>206.2.177.200</tt> - to pa se seveda ne bi ujemalo.

<p>Rekli vam bodo, da so obratne poizvedbe pomembne samo za strežnike, oziroma da
sploh niso pomembne. Ni res: številni strežniki ftp, novičarski strežniki, strežniki
IRC in celo nekateri http (WWW) se vam <em>ne bodo</em> dovolili priključiti iz
računalnika, katerega imena ne morejo izvedeti. Zato so obratne poizvedbe v resnici
<em>obvezne</em>.

<sect>Vzdrževanje<label id="maint">

<p><bf>Skrbite, da bo vse delovalo</bf>

<p>Poleg tega, da skrbite, da bo vse delovalo, imate še eno nalogo - vzdržujte
datoteko <tt>root.hints</tt> točno. To je najenostavneje z uporabo programa dig. Najprej
ga zaženite brez argumentov in dobili boste <tt>root.hints</tt> glede na vaš strežnik,
nato pa zaženite dig še z enim od korenskih strežnikov: <tt>dig @korenski-strežnik</tt>.
Izhod, ki ga dobite, je nova datoteka root.hints. Shranite ga v datoteko (<tt>dig
@e.root-servers.net . ns &gt;root.hints.nov</tt>) in zamenjajte staro datoteko
<tt>root.hints</tt> z njo.

<p>Ne pozabite znova zagnati named po tem, ko ste zamenjali datoteko.

<p>Al Longyear mi je poslal skript za vzdrževanje <tt>root.hints</tt>, ki ga lahko
poganjate samodejno - v crontab vpišite vnos, ki ga bo pognal vsak mesec, nato pa
lahko nanj pozabite. Skript predpostavlja, da imate delujočo elektronsko pošto in da
je v vašem računalniku naslov `hostmaster'. Da bo ustrezala vašim nastavitvam, jo
morate prirediti svojim potrebam.

<code>
#!/bin/sh
#
# Posodobimo predpomnilniško datoteko imenskega strežnika enkrat na mesec.
# To skripto samodejno zaganja vnos v crontabu.
#
# Izvirnik je napisal Al Longyear
# Za BIND 8 priredil Nicolai Langfeldt
# David A. Ranch je poročal o različnih možnih napakah
# Preizkus s pingom je predlagal Martin Foster
# Ali named deluje? - preizkus predlagal 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: V /var/named smejo pisati le ta skripta in ustrezni uporabniki
 # ne bo odprl možnosti za zlonamerno prekinitev delovanja strežnika
 # ali možnosti za vlom v račun superuporabnika - root.
 cd /var/named 2>/dev/null || {
    echo "Subject: Cannot cd to /var/named, error $?"
    echo
    echo "The subject says it all"
    exit 1
 }

 # Smo povezani v internet? Pingajmo strežnik vašega ponudnika
 case `ping -qnc 1 some.machine.net 2>&1` in
   *'100% packet loss'*)
        echo "Subject: root.hints NI posodobljen.  Mreža NE DELUJE."
	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*)
	# Delovalo je
	:;;
   *)
        echo "Posodobitev datoteke root.hints NI USPELA."
        echo
   	echo "Posodabljanje root.hints ni uspelo"
	echo "dig je sporočil naslednje:"
   	echo
   	cat root.hints.new errors
        exit 1
	;;
 esac

 echo "Subject: Datoteka root.hints je posodobljena"
 echo
 echo "V datoteki root.hints so zdaj naslednji podatki:"
 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 "Imenski strežnik je bil vnovič zagnan in zdaj ve za morebitne spremembe."
 echo "Prejšnja datoteka root.hints se zdaj imenuje /var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
</code>

<p>Morda ste izvedeli, da je datoteka <tt>root.hints</tt> na voljo tudi prek protokola
ftp na Internic. Prosim vas, da za posodabljanje <tt>root.hints</tt> uporabljate raje
dig, ker je ta možnost prijaznejša tako do interneta kakor do Internica.

<sect>Prehod z različice 4 na različico 8<label id="bind8">

<p>To poglavje, ki ga je napisal David E. Smith (dave@bureau42.ml.org), je bilo v
izvirniku poglavje o uporabi BIND 8. Da se sklada z novim naslovom, sem ga nekoliko
popravil.

<p>Za to temo ni treba veliko besed. Poleg tega, da se uporablja named.conf namesto
named.boot, je vse popolnoma enako. BIND 8 ima tudi skripto v perlu, ki vam pretvori
stare datoteke v nove. Zgled named.boot (starejša različica) za imenski strežnik s
predpomnilnikom:

<code>
directory /var/named
cache	.	                                root.hints
primary	0.0.127.IN-ADDR.ARPA                    127.0.0.zone
primary	localhost				localhost.zone	 	
</code>


V mapi bind8/src/bin/named (<em>tu predvidevam, da imate pred seboj izvirno kodo. Če
imate paket s prevedenim programom, je skripta verjetno prav tako nekje nameščena,
vendar ne vem točno, kje. -ed</em>) v ukazno vrstico napišite:

<code>
./named-bootconf.pl < named.boot > named.conf
</code>


To naredi 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>Deluje za vse, kar je lahko v <tt>named.boot</tt>, čeprav ne doda novih
pridobitev in možnosti, ki jih omogoča BIND 8. Tule je bolj popoln <tt>named.conf</tt>,
ki deluje enako, vendar nekoliko bolj učinkovito.

<code>
// To je nastavitvena datoteka za named (BIND 8.1 ali novejši).
// Navadno bo nameščena v /etc/named.conf
// Edina razlika med to in `že pripravljeno' datoteko (poleg tega
// komentarja :) je to, da sem odkomentiral vrstico `directory', ker
// sem območne datoteke že imel v /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>V distribuciji BIND 8 lahko v mapi bind8/src/bin/named/test najdete to in nekaj
izvodov območnih datotek, ki jih večina lahko prekopira in takoj uporabi.

<p>Formati območnih datotek in <tt>root.hints</tt> so enaki, tako kakor tudi ukazi za
njihovo posodobljenje.

<sect>Vprašanja in odgovori<label id="qanda">

<p>Prosim, preberite to poglavje, preden mi pišete.

<enum>

  <item>Moj named zahteva datoteko named.boot

  <p>Berete napačen HOWTO. Oglejte si starejšo različico tega
  HOWTO, ki pokriva bind 4, na <url 
  url="http://www.math.uio.no/~janl/DNS/">

  <item>Kako uporabljam DNS izza požarnega zidu?
  
  <p>Namig: <tt>forward only;</tt>, Verjetno boste potrebovali tudi

  <code>
  query-source port 53;
  </code>

  <p>v razdelku ``options'' v datoteki <tt>named.conf</tt>, kot je napisano
  v zgledu <ref id="caching" name="Imenski strežnik s predpomnilnikom">.

  <item>Kako naj prepričam DNS, da bo periodično obračal razpoložljive naslove za
  določeno storitev, na primer za www.zelo-zaseden.com, da se obremenitev
  porazdeli na več računalnikov?

  <p>Naredite več <bf>A</bf> zapisov za www.zelo-zaseden.com in uporabite bind
  4.9.3 ali novejšega. Potem bo bind samodejno spreminjal svoje odgovore. Pri
  prejšnjih različicah binda to <em>ne bo</em> delovalo.

  <item>Rad bi postavil DNS v (zaprtem) intranetu. Kaj moram storiti?

  <p>Izpustite datoteko <tt>root.hints</tt> in napišite le območne datoteke. To
  tudi pomeni, da vam ne bo treba posodabljati datoteke root.hints.

  <item>Kako postavim sekundarni (pomožni) imenski strežnik?

  <p>Če ima primarni/glavni strežnik naslov 127.0.0.1, dodajte tale razdelek
  v named.conf sekundarnega strežnika:

  <code>
  zone "linux.izmislek" {
	type slave;
	file "sz/linux.izmislek";
	masters { 127.0.0.1; };
  };
  </code>

  <p>V polje <tt>masters</tt> lahko vpišete tudi več glavnih strežnikov,
  ločenih s ';' (podpičji).


  <item>Rad bi poganjal bind tudi, ko nisem priključen v internet.

  <p>V zvezi s tem so na voljo štiri rešitve:

<itemize>

  <item>Specifično za BIND 8, Adam L Rice mi je poslal naslednje e-sporočilo
  o tem, kako teče DNS brez težav v računalniku z dostopom na klic:

<tscreen><verb>

Odkril sem novo različico BIND, pri kateri ni več potrebe po
[prekladanju datotek -ed];.  Poznamo nastavitev "forward" poleg
nastavitve "forwarders", ki nadzira, kako se uporabljajo. Privzeta
nastavitev je "forward first", ki najprej povpraša vse strežnike,
podane v nastavitvi "forwarders", in šele zatem poskuša opraviti
normalen, dolgotrajen postopek.  Zato klic gethostbyname() traja tako
dolgo časa, ko povezave ni. Toda če se nastavi "forward only", potem
BIND obupa, ko ne dobi odgovora od posredovalcev. Tako se
gethostbyname() hitro vrne. Zato se potem ni treba igrati s
premeščanjem datotek v /etc in vnovičnim zagonom strežnika.

V svojem zgledu sem le dodal vrstice 

forward only;
forwarders { 193.133.58.5; };

v options { } razdelku moje datoteke named.conf. Deluje zelo
lepo. Edina pomanjkljivost je, da spremeni zelo napreden kos programja
DNS v neumen predpomnilnik. Ponekod bi želel uporabljati samo neumen
predpomnilnik DNS, toda ni videti, da bi bilo kaj takega na voljo za
Linux.
</verb></tscreen>


  <item>To pismo sem prejel od Iana Clarka, &lt;ic@deakin.edu.au&gt;. V
  njem opisuje, kako je kos temu.

<tscreen><verb>
Named tukaj poganjam v računalniku za 'Maškarado'. Imam dve datoteki
root.hints, ena se imenuje root.hints.real in so v njej resnični podatki,
druga pa je root.hints.fake in so v njej...

----
; root.hints.fake
; this file contains no information
----

Ko se odklopim iz interneta, prekopiram datoteko root.hints.false v root.hints in
vnovič zaženem named.

Ko pa se priključim v internet, prekopiram root.hints.real v root.hints in vnovič
zaženem named.

Oboje postorita skripti ip-down in ip-up.

Prvič, ko opravim poizvedbo o domeni, named nima podatkov o njej in v `messages'
napiše...

Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN

A to me ne moti.

Kar se mene tiče, vsekakor odlično deluje. Imenski strežnik lahko uporabljam za
krajevne računalnike, ko niso priključeni v internet, in sicer brez poteka časa za
zunanje domene; ko sem priključen v internet, pa delujejo poizvedbe normalno.
</verb></tscreen>

<p>Peter Denison je menil, da Ian ne gre dovolj daleč, in je napisal:

<tscreen><verb>
Ko povezan)	Ponudi predpomnjene (in LAN) vnose takoj.
		Nepredpomnjene vnose pa posreduj imenskemu strežniku ISP
Ko nepovezan)	Ponudi LAN vnose takoj
		Za druge poizvedbe **takoj** vrni napako.

Kombinacija spreminjanja datoteke root.cache in posredovanja poizvedb ne
deluje.

Zato sem vzpostavil (po debati s krajevno LUG - Linux Users Group) dva
Nameda, kot je dano:

named-povezan:	posreduje imenskemu strežniku ISP
		primarni za območje lokalnet
                primarni za obratno območje lokalnet (1.168.192.in-addr.arpa)
                primarni za 0.0.127.in-addr.arpa
                posluša na vratih 60053

named-zaprt:	brez posredovanja
		datoteka "nepravi" root.cache 
                sekundarni za 3 območja localnet (primarni je 127.0.0.1:60053)
                posluša na vratih 61053

Skupaj s preusmerjanjem vrat, ki preusmeri vrata 53 na 61053, ko sem povezan,
in na 60053, ko sem nepovezan. (Uporabljam novi paket netfilter pod 2.3.18,
toda stari (ipchains) mehanizem bi tudi moral delovati.)

Opozorilo: to ne bo delovalo čisto takoj po priključitvi, ker hrošček v BIND
8.2, ki sem ga že posredoval razvijalcem, prepreči delovanje sekundarnega,
če je primarni na istem IP (četudi na drugih vratih). Gre za enostaven
popravek, ki bo moral biti kmalu dodan.
</verb></tscreen>


<item>Od Karla-Maxa Wagnerja sem prejel tudi informacijo, kako bind deluje
vzajemno z NFS in portmapperjem v računalniku, ki večinoma ni priključen
v internet:

<tscreen><verb>

Navadno poganjam lasten named v vseh računalnikih, ki so le občasno priključeni v
internet prek modema. Imenski strežnik se vede le kot predpomnilnik, nima območja
pristojnosti in za vse poizvedbe sprašuje strežnike iz datoteke root.hints. Kot je v
navadi za Slackware, se tudi zažene pred nfsd in mountd.

Z enim od mojih računalnikov (Libretto 30 notebook) sem imel težave - včasih sem ga
lahko dosegel iz drugega sistema, priključenega v moj LAN, večinoma pa to ni
delovalo. Ista težava se je pokazala ne glede na to, ali sem uporabljal PLIP,
omrežno kartico PCMCIA ali PPP po zaporedni povezavi.

Z nekaj ugibanja in poskušanja sem ugotovil, da je named nekako pokvaril postopek
prijave, ki ga nfsd in mountd izvedeta s portmapperjem pri zagonu (navadno takrat,
ko zaženem računalnik). Zagon named po nfsd in mountd je to težavo popolnoma
odpravil.

Ker tako spremenjena zagonska procedura nima stranskih učinkov, vam priporočam, da
jo popravite in tako preprečite morebitne težave.
</verb></tscreen>

<item>Zadnja možnost so informacije HOWTO o povezavah na klic
<url name="Ask Mr. DNS at"
url="http://www.acmebw.com/askmrdns/#linux-dialup">, ki pa govorijo o
bind 4 in jih morate zato prilagoditi bindu 8.

</itemize>

  <item>Kje ima named svoj predpomnilnik? Lahko kako vplivam na njegovo
  velikost?

  <p>Predpomnilnik je v celoti shranjen v pomnilniku in ni <em>nikoli</em> zapisan
  na disk, zato vsakič, ko ubijete named, izgubite njegovo vsebino. 
  Predpomnilnika <em>ni mogoče</em> upravljati. Named ga uredi po nekih preprostih
  pravilih in to je to. Njegove vsebine in velikosti ne morete nikakor
  spremeniti ali omejiti. Če želite, lahko to ``popravite'' s hekanjem named,
  vendar vam tega ne priporočam.

  <item>Ali named shranjuje predpomnilnik med vnovičnimi zagoni? Ga lahko
  pripravim do tega, da ga shrani?

  <p>Named svojega predpomnilnika <em>ne</em> shranjuje, ko umre. To pomeni, da
  mora predpomnilnik zgraditi na novo vsakič, ko ga ubijete in vnovič
  zaženete. <em>Ni načina</em>, da bi named shranil svoj predpomnilnik v datoteko.
  Če želite, lahko to ``popravite'' s hekanjem named, vendar vam tega ne
  priporočam.

  <item>Kako lahko dobim domeno? Želel bi svojo domeno (na primer)
  <tt>linux-rules.net</tt>. Kako bi jo lahko pripisal nase?
  
  <p>Povprašajte svojega ponudnika internetnih storitev, on vam bo zagotovo
  znal pomagati. Vendar si zapomnite, da je po svetu večinoma treba za
  domeno plačati.

  <item>Kako lahko zavarujem svoj DNS ? Kako uredim ločena DNS?

  <p>Oboje sta napredni temi in si o njima lahko preberete v <url
  url="http://www.etherboy.com/dns/chrootdns.html">. O tem tu ne bom
  več razglabljal.

</enum>


<sect>Kako postati veliki upravitelj DNS<label id="bigger">

<p><bf>Dokumentacija in orodja</bf>

<p>Prava dokumentacija je na voljo v internetu in v tiskani obliki. Nekaj je morate
prebrati in naredili boste korak od majhnega k velikemu upravitelju. V tiskani
obliki sem napisal <em>The Concise Guide to DNS and BIND</em> (avtor: Nicolai
Langfeldt), založil Que (ISDN 0-7897-2273-9). Knjiga je podobno temu HOWTO, le da je
v njej več podrobnosti in več vsega. Tipična knjiga pa je <em>DNS in BIND</em>, avtorja
sta C. Liu in P. Albitz iz O'Reilly &amp; Associates, Sebastopol, CA, ISBN
0-937175-82-X. Tudi ta je odlična. V 3. izdaji pokriva tako BIND8 kakor BIND 4.
Poglavje o DNS je tudi v <em>Upravljanje omrežja TCP/IP</em>, katerega avtor je Craig
Hunt iz O'Reilly..., ISBN 0-937175-82-X. Še eno nujno branje za dobro upravljanje
DNS (oziroma česarkoli) je <em>Zen in umetnost vzdrževanja motornih koles</em> izpod
peresa Roberta M. Pirsiga :-) Dosegljivo je kot ISBN 0688052304 in druge.

<p>V internetu boste našli marsikaj dobrega na <url url="http://www.dns.net/dnsrd/">
(Mapa z zapisi o DNS), <url url="http://www.isc.org/bind.html">; FAQ in v
referenčnem priročniku (BOG; Bind Operations Guide), pa tudi v člankih in
definicijah protokola in zvijač DNS (skoraj, če ne popolnoma vse RFC, navedene
spodaj, najdete tudi v distribuciji binda). Večine jih nisem prebral, zato tudi
nisem velik upravitelj DNS. Arnt Gulbrandsen pa je prebral BOG in je čisto vzhičen
:-). Deluje tudi novičarska skupina za DNS, <url
url="news:comp.protocols.tcp-ip.domains">, poleg tega je v internetu tudi veliko
število RFC o DNS. Najpomembnejši so verjetno spodaj nanizani. Tiste, ki imajo BCP
(ang. Best Current Practice), vam <em>toplo priporočam</em>.

<descrip>

  <tag>RFC 2671</tag> P. Vixie, <em>Extension Mechanisms for DNS (EDNS0)</em>
  avgust 1999.  

  <tag>RFC 2317</tag>, BCP 20, H. Eidnes et. al. <em>Classless IN-ADDR.ARPA
  delegation</em>, marec 1998. Govori o CIDR ali brezrazrednih obratnih
  poizvedbah.

  <tag>RFC 2308</tag>, M. Andrews, <em>Negative Caching of DNS Queries</em>,
  marech 1998. O negativnem predpomnenju in o nastavitvi $TTL območnih datotek.

  <tag>RFC 2219</tag>, BCP 17, M. Hamilton in R. Wright, <em>Use of DNS
  Aliases for Network Services</em>, oktober 1997.  O uporabi CNAME.

  <tag>RFC 2182</tag>, BCP 16, R. Elz et. al., <em>Selection and Operation
  of Secondary DNS Servers</em>, julij 1997.

  <tag>RFC 2052</tag> A. Gulbrandsen, P. Vixie, <em>A DNS RR for specifying
  the location of services (DNS SRV)</em>, oktober 1996.

  <tag>RFC 1918</tag> Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot,
  E. Lear, <em>Address Allocation for Private Internets</em>, 29. februar 1996.

  <tag>RFC 1912</tag> D. Barr, <em>Common DNS Operational and Configuration
  Errors</em>, 28. februar 1996.

  <tag>RFC 1912 Errors</tag> B. Barr <em>Errors in RFC 1912</em>, this is available
  at <url url="http://www.cis.ohio-state.edu/~barr/rfc1912-errors.html">

  <tag>RFC 1713</tag> A. Romao, <em>Tools for DNS debugging</em>, 3. november 1994.

  <tag>RFC 1712</tag> C. Farrell, M. Schulze, S. Pleitner, D. Baldoni,
  <em>DNS Encoding of Geographical Location</em>, 1. november 1994.

  <tag>RFC 1183</tag> R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart,
  <em>New DNS RR Definitions</em>, 8. oktober 1990.

  <tag>RFC 1035</tag> P. Mockapetris, <em>Domain names - implementation and
  specification</em>, 1. november 1987.

  <tag>RFC 1034</tag> P. Mockapetris, <em>Domain names - concepts and
  facilities</em>, 1. november 1987.

  <tag>RFC 1033</tag> M. Lottor, <em>Domain administrators operations
  guide</em>, 1. november 1987.

  <tag>RFC 1032</tag> M. Stahl, <em>Domain administrators guide</em>,
  1. november 1987.

  <tag>RFC 974</tag> C. Partridge, <em>Mail routing and the domain system</em>,
  1. januar 1986.

</descrip>
</article>
