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</em>ni/ 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/) <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>$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 >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 [<em>prekladanju datotek -ed</em>]. 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, <ic@deakin.edu.au>. 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 & 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>