<!doctype linuxdoc system>
<linuxdoc>
<!-- -*-SGML-*- -->
<article>
<titlepag>
<title>DNS HOWTO</title>
<author><name>Nicolai Langfeldt <HTMLURL URL="mailto:janl@math.uio.no"
NAME="janl@math.uio.no">, <newline> 
Vertaald door Maarten van Steenbergen <HTMLURL
URL="mailto:maarten@nl.linux.org" NAME="maarten@nl.linux.org"> 
</name></author>

<date>v2.2, 11 februari 1999</date>

<!-- Translation date: 19 and 20 November 1999 -->

<abstract>
Deze HOWTO is een inleiding in het configureren van een nameserver met BIND.
</abstract>
</titlepag>
<toc>

<sect><heading>Inleiding</heading>

<p>Keywords: DNS, bind, bind-4, bind-8, named, dialup, ppp, slip,
isdn, Internet, domain, name, hosts, resolving, caching.</p>

<p>Dit document is een onderdeel van het Linux Documentation Project.</p>


<sect1><heading>Copyright</heading>

<p>(C)opyright 1995-1999 Nicolai Langfeldt. Verander dit document niet 
zonder de copyrights te vermelden. Het document is vrij te kopi&euml;ren, maar
houd rekening met het copyright dat erop zit.</p>
</sect1>

<sect1><heading>Dank aan...</heading>

<p>Ik wil Arnt Gulbrandsen bedanken die de proefversies van dit document
heeft doorgelezen en verbeterd, en enkele handige suggesties heeft gegeven. 
Ik wil ook de talrijke mensen bedanken die suggesties en tips mailden.</p>

<p>Dit document is nooit af. Als je fouten ziet of een verbetering weet mail
dan even, dan kan de HOWTO beter worden. Zend commentaar en/of vragen of
geld naar <HTMLURL URL="janl@math.uio.no" NAME="janl@math.uio.no">. Als je
email verzendt en je wilt een antwoord, zorg er dan voor dat het antwoordadres 
er duidelijk bijstaat en het ook doet. Anders moet je even de <ref id="qanda" 
name="QnA"> sectie lezen voor je me mailt. Ik spreek Noors en Engels, dus mail 
in &eacute;&eacute;n van die twee talen.

<!-- If you're a translator you may put information about reaching
someone speaking the language you translate to, ant that can help with
DNS problems, such as yourself here. --></p>

<p>Mail me als je deze HOWTO wilt vertalen. Ten eerste kan ik dan bijhouden
in welke talen dit document is verschenen. Ten tweede kan ik je dan op de 
hoogte houden van nieuwe versies.</p>
</sect1>

<sect1><heading>Opgedragen aan...</heading>

<p>Deze HOWTO is opgedragen aan Anne Line Norheim Langfeldt. Ze zal het echter
nooit lezen, omdat dit niet haar interessegebied is.</p>
</sect1>
</sect>

<sect><heading>Introductie<label id="intro"></heading>

<p><bf/Wat is DNS?/</p>

<p>DNS staat voor 'Domain Name System'. DNS vertaalt namen van computers
naar een IP adres. Elke computer op een netwerk heeft een uniek IP adres.
DNS converteert namen naar nummers en andersom. Deze conversie is niets
anders dan een "tabel" met een kolom namen (zoals <tt/ftp.linux.org/) en
een kolom adressen (zoals <tt/199.249.150.4/).</p>

<p>DNS is voor de beginner (jij ;-) &eacute;&eacute;n van de minder
doorzichtige aspecten van systeembeheer. Dit document tracht een aantal
zaken op te helderen. Het beschrijft het opzetten van een <em/simpele/ DNS
server. Het begint met het configureren van een 'caching-only' DNS server, en
behandelt vervolgens een 'primary' DNS server voor een domein. Voor complexere
configuraties kan je bij het <ref id="qanda" name="QnA"> gedeelte terecht. Als
het daar nog niet wordt besproken zal je de Echte Documentatie moeten lezen.
In <ref id="bigger" name="het laatste hoofdstuk"> wordt naar deze Echte
Documentatie verwezen.</p>

<p>Voordat je begint met DNS en BIND zal je eerst je machine zodanig moeten
configureren dat je er vanuit en naartoe kan telnetten. In elk geval
moet <tt/telnet 127.0.0.1/ werken (test het nu!). Ook zal je reeds goede
<tt>/etc/host.conf</tt>, <tt>/etc/hosts.conf</tt>, en <tt>/etc/resolv.conf</tt>
moeten hebben; de werking van deze bestanden wordt niet in deze HOWTO
uitgelegd. Als deze basis van je netwerkconfiguratie nog niet goed is
ingesteld, lees dan eerst de NET-3/4-HOWTO.</p>

<p>Als in deze HOWTO verwezen wordt naar 'je machine', dan wordt de machine
bedoeld waarop je DNS aan het configureren bent. Dus niet een andere machine
die op het netwerk aanwezig is.</p>

<p>Ik neem aan dat je niet achter een firewall zit die DNS verkeer tegenhoudt.
Als dat wel het geval is, kijk dan in de <ref id="qanda" name="QnA"> sectie
voor een oplossing.</p>

<p>De meest gebruikte nameserver software is <tt/named/. Dit programma is
onderdeel van "BIND", dat gemaakt wordt door het Internet Software Consortium
(<tt/www.isc.org/). Named is onderdeel van bijna elke Linux distributie en
staat gewoonlijk in <tt>/usr/sbin/named</tt>. Als je het programma nog niet
hebt, kan je het downloaden van <htmlurl
url="ftp://ftp.isc.org/isc/bind/src/cur/bind-8/"
name="ftp.isc.org:/isc/bind/src/cur/bind-8/">. Deze HOWTO gaat over BIND
versie 8. De oude HOWTO, over BIND versie 4, is nog steeds beschikbaar op
<htmlurl url="http://www.math.uio.no/~janl/DNS/"
name="http://www.math.uio.no/~janl/DNS/">. Het versienummer is te controleren
in de named man pagina. Als onderaan bij de FILES sectie het bestand
<tt/named.conf/ genoemd staat, dan is het versie 8. Als gesproken wordt over
<tt/named.boot/, dan is het versie 4. Als je versie 4 draait, is het onder
meer om beveiligingsredenen aan te raden naar versie 8 te upgraden.</p>

<p>DNS is een gedistribueerde database. Let dus op wat je erin zet. Als je er
onzin in zet, dan krijg je er onzin uit en zullen ook anderen er last van
hebben. Houd je DNS configuratie schoon en consistent, dan zal DNS erg nuttig
zijn. Leer het te gebruiken, beheer het, debug het, en je zal bijdragen aan
het voorkomen van mismanagement van het Internet.</p>

<p>In dit document wordt ter vereenvoudiging niet altijd de volledige waarheid
verteld. Alles zal echter (waarschijnlijk ;) werken, als je doet wat in dit
document beschreven staat.</p>

<p><bf/Tip:/ Maak backups van alle bestanden die je wijzigt tijdens het testen
van de DNS configuratie. Mocht het misgaan, dan kan je altijd nog de oude
bestanden terugzetten.</p>
</sect>

<sect><heading>Een 'caching only' nameserver<label id="caching"></heading>

<p><bf/Een eerste probeersel met DNS, erg bruikbaar voor inbelverbindingen/
</p>

<p>Een 'caching only' nameserver zoekt adressen bij andere nameservers. De
volgende keer dat om het adres voor dezelfde machinenaam gevraagd wordt, heeft
de nameserver het antwoord al in het geheugen staan. Dit betekent een
behoorlijke tijdswinst, zeker op langzame verbindingen.</p>

<p>Eerst moet een bestand <tt>/etc/named.conf</tt> aangemaakt worden. Dit
bestand wordt gelezen als de nameserver start. Voorlopig bevat dit bestand
alleen het volgende:

<code>
// Config file for caching only name server

options {
directory "/var/named";

// Uncommenting this might help if you have to go through a
// firewall and things are not working out:

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

<p>Named kan aan de <tt/directory/ regel zien waar de configuratiebestanden
gezocht moeten worden. Elk bestand dat hierna in <tt/named.conf/ voorkomt,
staat onder de directory die je opgeeft. In dit voorbeeld is <tt/pz/ een
subdirectory van <tt>/var/named</tt>, het is dus de directory 
<tt>/var/named/pz</tt>.</p>

<p>In het bovenstaande configuratiebestand wordt <tt>/var/named/root.hints</tt>
genoemd. <tt>/var/named/root.hints</tt> moet het volgende bevatten:

<code>
;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
.			6D IN NS	G.ROOT-SERVERS.NET.
.			6D IN NS	J.ROOT-SERVERS.NET.
.			6D IN NS	K.ROOT-SERVERS.NET.
.			6D IN NS	L.ROOT-SERVERS.NET.
.			6D IN NS	M.ROOT-SERVERS.NET.
.			6D IN NS	A.ROOT-SERVERS.NET.
.			6D IN NS	H.ROOT-SERVERS.NET.
.			6D IN NS	B.ROOT-SERVERS.NET.
.			6D IN NS	C.ROOT-SERVERS.NET.
.			6D IN NS	D.ROOT-SERVERS.NET.
.			6D IN NS	E.ROOT-SERVERS.NET.
.			6D IN NS	I.ROOT-SERVERS.NET.
.			6D IN NS	F.ROOT-SERVERS.NET.

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

<p>Dit bestand levert informatie over de root nameservers op deze wereld. Deze
informatie kan mettertijd veranderen, en moet dus worden bijgehouden. Zie de 
sectie <ref id="maint" name="Onderhoud"> voor informatie over het bijhouden
van dit bestand.</p>

<p>De volgende sectie van <tt/named.conf/ is de laatste <tt/zone/. Het gebruik
hiervan wordt later uitgelegd. Voorlopig is het voldoende het volgende bestand
genaamd <tt/127.0.0/ in de subdirectory <tt/pz/ te plaatsen:

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

<p>Vervolgens heb je ook nog een <tt>/etc/resolv.conf</tt> nodig, dat er
ongeveer uitziet als:

<code>
search subdomain.your-domain.edu your-domain.edu
nameserver 127.0.0.1
</code>
</p>

<p>De `<tt/search/' regel geeft aan welke domeinen afgezocht moeten worden
naar machinenamen die je zoekt. De <tt/nameserver/ regel bevat het IP adres
van de DNS server die gebruikt moet worden. In dit geval is dat je eigen
machine. De lokale machine zit altijd op IP adres <tt/127.0.0.1/. Als je
meerdere nameservers wilt gebruiken, geef dan een aparte <tt/nameserver/ regel
op voor elke DNS server die je wilt gebruiken. Named leest dit bestand
overigens nooit in. Dit bestand wordt alleen gebruikt door applicaties die een
IP adres opzoeken.</p>

<p>Een uitleg van dit bestand: Als een programma de naam <tt>foo</tt> opzoekt,
dan wordt eerst <tt>foo.subdomain.your-domain.edu</tt> geprobeerd, daarna
<tt>foo.your-domain.edu</tt>, en tenslotte <tt>foo</tt>. Als een programma het
IP adres van <tt>www.linux.org</tt> zoekt dan wordt eerst
<tt>www.linux.org.subdomain.your-domain.edu</tt> geprobeerd, vervolgens
<tt>www.linux.org.your-domain.edu</tt>, en tenslotte <tt>www.linux.org</tt>.
Het is vreemd, maar zo werkt het nu eenmaal. Het opzoeken van elke naam kost
tijd. Je moet dus niet al te veel domeinen in de <tt/search/ regel opnemen.
</p>

<p>Dit voorbeeld gaat ervan uit dat het domein <tt>subdomain.your-domain.edu</tt> 
bestaat. Je eigen machine heet dan waarschijnlijk
<tt>your-machine.subdomain.your-domain.edu</tt>. De <tt/search/ regel moet
nooit een TLD (Top Level Domain, <tt/edu/ in dit geval) bevatten. Als je vaak
machines in een ander domein bezoekt, kan je de volgende regel opnemen:

<code>
search subdomain.your-domain.edu your-domain.edu other-domain.com
</code>
</p>

<p>Natuurlijk moet je deze regel aan je eigen situatie aanpassen. 
Merk op dat aan
het eind van deze domains geen punt staat. Dit is belangrijk!</p>

<p>Vervolgens zal je, afhankelijk van je libc versie, 
<tt>/etc/nsswitch.conf</tt>
of <tt>/etc/host.conf</tt> aan moeten passen. Als je een
<tt>/etc/nsswitch.conf</tt> bestand hebt, dan passen we dat aan. Anders passen
we <tt>/etc/host.conf</tt> aan.</p>

<p><bf>/etc/nsswitch.conf</bf></p>

<p><tt>/etc/nsswitch.conf</tt> is een lang bestand waarin beschreven wordt
waar data vandaan gehaald moet worden. Bovenin staat bruikbaar commentaar wat
je zou moeten lezen. Zoek daarna de regel die begint met <tt/hosts:/. Daar
moet staan:

<code>
hosts:      files dns
</code>
</p>

<p>Als er geen <tt/hosts:/ regel in staat, voeg dan bovenstaande regel toe.
De regel zorgt ervoor dat programma's eerst in <tt>/etc/hosts</tt> kijken, en
dan pas de nameserver om een IP adres vragen.</p>

<p><bf>/etc/host.conf</bf></p>

<p>Dit bestand bevat waarschijnlijk meerdere regels. E&eacute;n van die regels
moet beginnen met '<tt/order/', en moet er ongeveer als volgt uitzien:

<code>
order hosts,bind
</code>
</p>

<p>Als deze regel er niet staat, maak er dan &eacute;&eacute;n aan. De regel
zorgt ervoor dat eerst in <tt>/etc/hosts</tt> gekeken wordt, en dan pas de
nameserver gebruikt wordt.</p>

<sect1><heading>Starten van Named</heading>

<p>Nu is het tijd om named te starten. Als je een inbelverbinding gebruikt,
bel dan eerst in. Type '<tt/ndc start/' en tik enter. Als dat niet werkt, tik
dan <tt>/usr/sbin/ndc start</tt>. Als het dan nog niet werkt, raadpleeg dan de 
<ref id="qanda" name="QnA"> sectie. Als je het bestand <tt>/var/log/messages</tt> 
bekijkt tijdens het opstarten van named (bijvoorbeeld met het commando
"<tt>tail -f /var/log/messages</tt>"), dan zie je iets als:</p>

<p>(regels die eindigen op "\" lopen door op de volgende regel)

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

<p>Als er een foutmelding verschijnt, geeft named aan in welk bestand de fout
zit (<tt/named.conf/ of <tt/root.hints/ hoop ik ;-). Stop named, en controleer
de bestanden.</p>

<p>Nu is het zaakje klaar om getest te worden. Start nslookup om de
configuratie te testen.

<tscreen><verb>
$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>
</verb></tscreen>
</p>

<p>Als dit op het scherm verschijnt, dan werkt het. Hopen we. Als het nog niet
werkt, controleer alles dan nog eens. Altijd als <tt/named.conf/ veranderd
wordt, moet je named herstarten met <tt/ndc restart/.</p>

<p>Nu kan je proberen een IP adres op te zoeken. Gebruik een computer die
dicht in de buurt staat. In mijn geval is dat <tt/par.uio.no/, op de
Universiteit van Oslo:

<tscreen><verb>
> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.130.16
</verb></tscreen>
</p>

<p>nslookup gaf aan named de opdracht <tt/par.uio.no/ op te zoeken. Het
ondervraagt vervolgens &eacute;&eacute;n van de nameservers die in
<tt/root.hints/ genoemd staan. Het kan even duren voordat je antwoord krijgt,
omdat eerst gezocht wordt in elk domein dat in <tt>/etc/resolv.conf</tt>
genoemd staat.</p>

<p>Als je nogmaals dezelfde machine opzoekt krijg je dit:

<tscreen><verb>
> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50
</verb></tscreen>
</p>

<p>Let op de regel '<tt/Non-authoritative answer/'.  Dat betekent dat named dit
keer niet het netwerk op is gegaan om een antwoord te zoeken, maar dat het
antwoord uit de cache komt. Deze melding wordt gegeven zodat je er rekening mee
kan houden dat de informatie inmiddels incorrect kan zijn. Dat je dit antwoord
gekregen hebt betekent in elk geval dat je caching-only nameserver werkt.
nslookup kan je verlaten door het commando <tt/exit/ te tikken.</p>
</sect1>

<sect1><heading>Verbeteren van de configuratie</heading>

<p>In grote netwerken wordt vaak gebruik gemaakt van "forwarders". Deze
machines verzorgen het opzoeken van een adres voor een andere machine. Dit
vermindert de belasting op het interne en externe netwerk. Door gebruik te
maken van zo'n forwarder worden de DNS lookups sneller, en ze genereren minder
netwerkverkeer. Vooral als je een modemverbinding hebt kan dit behoorlijk wat
schelen. Voor het voorbeeld nemen we aan dat je provider 2 nameservers heeft,
met de IP nummers <tt/10.0.0.1/ en <tt/10.1.0.1/. In het <tt/named.conf/
bestand moet bij de eerste sectie, "options", worden toegevoegd:</p>
<p>
<code>
           forward first;
           forwarders {
                10.0.0.1;
                10.1.0.1;
            };
</code>
</p>
<p>Herstart named en test het met nslookup. Dit zou zonder problemen moeten
werken.</p>
</sect1>

<sect1><heading>Gefeliciteerd</heading>

<p>Nu weet je hoe je een caching nameserver opzet. Neem een biertje, een glas
melk, of wat dan ook om het te vieren!</p>
</sect1>
</sect>

<sect><heading>Een voorbeeld van een <em/simpel/ domein<label id="simple">
</heading>

<p><bf>Het opzetten van je eigen domein</bf></p>


<sect1><heading>Maar eerst wat droge theorie</heading>

<p>Voordat we <em/echt/ met deze sectie aan de slag gaan, behandel ik eerst wat
droge theorie met voorbeelden. Lees dit onderdeel, of neem het tenminste
vluchtig door. Als je het vluchtig doorneemt, pak de draad dan weer op bij het
gedeelte waar <tt/named.conf/ aangepast wordt.</p>

<p>DNS is een hierarchisch systeem met een boom-structuur. De 'top' heet <tt/./ en 
dit wordt 'root' genoemd. Onder <tt/./ zijn een aantal Top Level Domains
(TLD), waarvan de meest bekende <tt/COM/, <tt/NET/, <tt/ORG/, en <tt/EDU/
zijn. Net als een boom begint de stuctuur ergens, en het breidt zich steeds
verder uit. Als je een informatica-achtergrond hebt, dan herken je in DNS een
'search tree' met knooppunten, eindpunten, en begrenzingen.</p>

<p>Als je een machinenaam opvraagt, begint de zoektocht in de top van de
hierarchie. Als je bijvoorbeeld <tt/prep.ai.mit.edu/ zoekt dan moet je
nameserver de server vinden die het <tt/edu/ domein verzorgt. Daarvoor
ondervraagt het een <tt/./ server. Van deze servers heeft de nameserver al het
adres, dat staat namelijk in het <tt/root.hints/ bestand. De <tt/./ server
geeft een lijst van <tt/edu/ servers:</p>
<p>
<tscreen><verb>
$ nslookup
Default Server:  localhost
Address:  127.0.0.1
</verb></tscreen>
</p>
<p>Ondervraag een root server:

<tscreen><verb>
> server c.root-servers.net.
Default Server:  c.root-servers.net
Address:  192.33.4.12
</verb></tscreen>
</p>
<p>Zet het 'query type' op NS (Name Server gegevens):

<tscreen><verb>
> set q=ns
</verb></tscreen>
</p>
<p>Vraag naar <tt/edu/:

<tscreen><verb>
> edu.
</verb></tscreen>
</p>
<p>De <tt>.</tt> achter <tt>edu</tt> is erg belangrijk. Het vertelt nslookup 
dat <tt>edu</tt>
onder <tt>.</tt> zit, en niet onder een van onze `search' domeinen. Dit versnelt
het zoeken.</p>
<p>
<tscreen><verb>
edu     nameserver = A.ROOT-SERVERS.NET
edu     nameserver = H.ROOT-SERVERS.NET
edu     nameserver = B.ROOT-SERVERS.NET
edu     nameserver = C.ROOT-SERVERS.NET
edu     nameserver = D.ROOT-SERVERS.NET
edu     nameserver = E.ROOT-SERVERS.NET
edu     nameserver = I.ROOT-SERVERS.NET
edu     nameserver = F.ROOT-SERVERS.NET
edu     nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4
</verb></tscreen>
</p>
<p>Dit vertelt ons dat alle <tt/ROOT-SERVERS.NET/ vragen beantwoorden over
<tt/EDU/, dus we kunnen op dezelfde server blijven doorvragen. We blijven de
server <tt/C/ ondervragen. Nu willen we weten wat de server is voor
<tt/mit.edu/:</p>
<p>
<tscreen><verb>
> mit.edu.
Server:  c.root-servers.net
Address:  192.33.4.12

Non-authoritative answer:
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
mit.edu nameserver = STRAWB.mit.edu

Authoritative answers can be found from:
W20NS.mit.edu   internet address = 18.70.0.160
BITSY.mit.edu   internet address = 18.72.0.3
STRAWB.mit.edu  internet address = 18.71.0.151
</verb></tscreen>


<tt/strawb/, <tt/w20ns/ en <tt/bitsy/ zijn allemaal nameservers voor
<tt/mit.edu/. We kiezen hieruit een nameserver en gaan weer een stap verder,
naar <tt/ai.mit.edu/:

<tscreen><verb>
> server W20NS.mit.edu.
</verb></tscreen>
</p>
<p>Het maakt niet uit of je hoofd- of kleine letters gebruikt in de servernaam.
Maar ik gebruik m'n muis om te knippen en plakken zodat ik geen spelfouten
maak.</p>
<p>
<tscreen><verb>
Server:  W20NS.mit.edu
Address:  18.70.0.160

> ai.mit.edu.
Server:  W20NS.mit.edu
Address:  18.70.0.160

Non-authoritative answer:
ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu      nameserver = LIFE.AI.MIT.EDU
ai.mit.edu      nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu      nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu      nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu      nameserver = MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU      nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU      nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU      nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU       internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU    internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU  internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU        internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU     internet address = 18.26.0.36
</verb></tscreen>
</p>
<p><tt/muesli.ai.mit.edu/ is dus een nameserver voor <tt/ai.mit.edu/:

<tscreen><verb>
> server MUESLI.AI.MIT.EDU
Default Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7
</verb></tscreen>
</p>
<p>Nu verander ik het query type. We hebben de nameserver gevonden, dus kunnen
nu kijken wat <tt/muesli/ weet over <tt/prep.ai.mit.edu/.</p>
<p>
<tscreen><verb>
> set q=any
> prep.ai.mit.edu.
Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
prep.ai.mit.edu
        inet address = 18.159.0.42, protocol = tcp
          ftp  telnet  smtp  finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu      nameserver = beet-chex.ai.mit.edu
ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
ai.mit.edu      nameserver = trix.ai.mit.edu
ai.mit.edu      nameserver = muesli.ai.mit.edu
ai.mit.edu      nameserver = count-chocula.ai.mit.edu
ai.mit.edu      nameserver = mintaka.lcs.mit.edu
ai.mit.edu      nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu     internet address = 128.52.32.60
beet-chex.ai.mit.edu    internet address = 128.52.32.22
alpha-bits.ai.mit.edu   internet address = 128.52.32.5
mini-wheats.ai.mit.edu  internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu       internet address = 128.52.39.7
count-chocula.ai.mit.edu        internet address = 128.52.38.22
mintaka.lcs.mit.edu     internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80
</verb></tscreen>
</p>

<p>We zijn gestart op <tt/./ en vonden nameservers voor elke laag van de
machinenaam. Als je eigen DNS server zo'n zoektocht zou ondernemen, zou het
gecached worden en voorlopig niet meer opgezocht hoeven worden.</p>

<p>In de boomstructuur is elke <tt/./ in de machinenaam een vertakking. En elk
woord dat tussen twee punten staat is een "tak" in de boomstructuur.</p>

<p>We zoeken steeds hoger in de boom, op zoek naar <tt/prep.ai.mit.edu/. We
beginnen bij <tt/./ en zoeken naar de eerstvolgende tak. In dit geval
<tt/edu/. Als we die hebben gevonden gaan we een stapje hoger, en komen bij de
<tt/edu/ server. Daar kunnen we vragen naar het domein <tt/mit/. Als we die
tak hebben gevonden gaan we weer een stapje hoger en komen op <tt/mit.edu/.
Als we nog een stapje hoger zitten, komen we bij <tt/ai.mit.edu/ en dan zijn
we bij de laatste nameserver beland. De laatste stap is het zoeken naar
<tt/prep.ai.mit.edu/. In informaticatermen zou je <tt/prep/ een 'leaf', blad,
of eindpunt van de boom kunnen noemen.</p>

<p>Een domein waar minder over gesproken wordt, maar wat minstens net zo
belangrijk is, is het <tt/in-addr.arpa/ domein. Dit domein heeft net als de
normale domeinen een boomstructuur. <tt/in-addr.arpa/ maakt het mogelijk dat
een machinenaam opgezocht wordt, als je reeds het IP adres weet. Het is
belangrijk op te merken dat IP adressen in omgekeerde volgorde worden
genoteerd binnen het <tt/in-addr.arpa/ domein. Als je het adres van een
machine hebt, bijvoorbeeld <tt/192.128.52.43/, dan werkt named op dezelfde
manier als bij het <tt/prep.ai.mit.edu/ voorbeeld: zoek de <tt/arpa./ servers.
Zoek vervolgens de <tt/in-addr.arpa./ servers, zoek <tt/192.in-addr.arpa./, zoek
<tt/128.192.in-addr.arpa./, zoek <tt/52.128.192.in-addr.arpa./, zoek de
benodigde informatie voor <tt/43.52.128.192.in-addr.arpa./
Handig, toch? (zeg 'ja'). Het omdraaien van de nummers kan echter verwarrend
zijn.</p>

<p>Wat ik net verteld heb is niet helemaal waar. DNS werkt niet precies zoals
hierboven beschreven staat. Maar het komt aardig dicht in de buurt.</p>
</sect1>

<sect1><heading>Je eigen domein</heading>

<p>Nu ga je een eigen domein maken. We maken het domein <tt/linux.bogus/, en
zetten daar machines in. We gebruiken expres een domein dat niet bestaat,
zodat het geen conflict oplevert met echte domeinen.</p>

<p>Nog &eacute;&eacute;n ding voordat we beginnen: in machinenamen zijn niet
alle tekens toegestaan. We mogen alleen letters (a-z), cijfers (0-9) en het
minteken ('-') gebruiken. Gebruik dus alleen deze tekens. Hoofd- en kleine
letters zijn voor DNS hetzelfde, dus <tt/pat.uio.no/ is hetzelfde als 
<tt/Pat.UiO.No/.</p>

<p>We zijn eigenlijk al met dit onderdeel begonnen door de volgende regel in
<tt/named.conf/ te plaatsen:

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

<p>Merk op dat er geen <tt/./ staat aan het eind van de domeinnamen in dit
bestand. Dit zorgt ervoor dat, nu we de zone <tt/0.0.127.in-addr.arpa/
configureren, we de master server voor deze zone zijn en dat het in een
bestand staat genaamd <tt>pz/127.0.0</tt>. We hebben dit bestand al
geconfigureerd, en er staat in:

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

<p>Let op de <tt/./ aan het eind van de volledige domeinnamen in dit bestand,
in tegenstelling tot het <tt/named.conf/ bestand hierboven. Sommige mensen
beginnen elk zone bestand graag met een <tt/&dollar;ORIGIN/ regel, maar dat is
overbodig. De oorsprong van een zone bestand (de plaats die het inneemt in de
DNS hierarchie) wordt gespecificeerd in het zone gedeelte van het
<tt/named.conf/ bestand, in dit geval is het <tt/0.0.127.in-addr.arpa/.</p>

<p>Dit zone bestand bevat drie 'Resource Records' (RR's). Een SOA RR, een NS
RR, en een PRT RR. SOA betekent Start Of Authority. De `@' is een notatie voor
`oorsprong' en omdat in <tt/named.conf/ staat dat het domein voor dit bestand 
0.0.127.in-addr.arpa is, staat er op de eerste regel eigenlijk:

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

<p>NS is de Name Server RR. Er staat geen '@' aan het begin van deze regel.
Omdat de bovenstaande regel een '@' heeft staan, wordt verondersteld dat
datzelfde ook bij deze regel hoort. Op de NS regel zou dus net zo goed kunnen
staan:

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

<p>Deze regel vertelt DNS wat de nameserver is voor het domein 
<tt/0.0.127.in-addr.arpa/, het is  <tt/ns.linux.bogus/. 'ns' is een
veelgebruikte naam voor nameservers, net als 'www' dat is voor webservers.
Maar net zoals bij webservers mag je van de naam maken wat je wilt.</p>

<p>Tenslotte zegt het PTR record dat de machine op adres 1 in het subnet 
<tt/0.0.127.in-addr.arpa/, ofwel 127.0.0.1, <tt/localhost/ heet.</p>

<p>Alle zone bestanden beginnen met een SOA record, en er mag er
hoogstens 1 zijn in
een zone bestand. Het beschrijft de zone, zegt waar het vandaan komt (een
machine genaamd <tt/ns.linux.bogus/), wie verantwoorlijk is voor de inhoud
(<tt/hostmaster@linux.bogus/, vul je eigen email adres hier in), welk
versienummer van het zonebestand het is (hier: serienummer 1), en dingen die
te maken hebben met cachen en secundaire DNS servers. Gebruik voor de andere
velden (refresh, retry, expire, en minimum) de getallen die in deze HOWTO
gebruikt worden, dan zit je goed.</p>

<p>Herstart nu named met "<tt/ndc restart/" en gebruik nslookup om te kijken
wat je hebt gedaan:

<tscreen><verb>
$ nslookup

Default Server:  localhost
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1
</verb></tscreen>
</p>
<p>named begrijpt dus dat 127.0.0.1 <tt/localhost/ heet, goed zo. Nu het
belangrijke werk, het <tt/linux.bogus/ domein. Voeg een zone sectie aan
<tt/named.conf/ toe:

<code>
zone "linux.bogus" {
	notify no;
	type master;
	file "pz/linux.bogus";
};
</code>
</p>
<p>Let weer op het ontbreken van <tt/./ aan het einde van de domein naam in het
<tt/named.conf/ bestand.</p>

<p>In het <tt/linux.bogus/ zone bestand zetten we wat zelfbedachte gegevens:

<code>
;
; Zone file for linux.bogus
;
; The full zone file
;
@	IN	SOA	ns.linux.bogus. hostmaster.linux.bogus. (
			199802151	; serial, todays date + todays serial #
			8H		; refresh, seconds
			2H		; retry, seconds
			1W		; expire, seconds
			1D )		; minimum, seconds
;
		NS	ns		; Inet Address of name server
		MX	10 mail.linux.bogus	; Primary Mail Exchanger
		MX	20 mail.friend.bogus.	; Secondary Mail Exchanger
;
localhost	A	127.0.0.1
ns		A	192.168.196.2
mail		A	192.168.196.4
</code>
</p>
<p>We maken nog twee opmerkingen over het SOA record. <tt/ns.linux.bogus/ moet
een bestaande machinenaam zijn met een A record. Het is niet voldoende om een
CNAME te hebben voor de machine die in het SOA record genoemd wordt. De naam
hoeft niet 'ns' te zijn, je mag elke naam gebruiken die je wilt. Vervolgens,
lees hostmaster.linux.bogus als 'hostmaster@linux.bogus'. Dit moet het email
adres zijn van de persoon die verantwoordelijk is voor de DNS configuratie.
Je mag zelf weten welk email adres je hier plaatst, maar hostmaster is een
adres dat veel gebruikt wordt.</p>

<p>Er is een nieuw type 'resource record' in dit bestand, het MX record of
Mail eXchanger RR. Mail servers kunnen hieraan zien dat mail voor
<tt/iemand@linux.bogus/ naar <tt/mail.linux.bogus/ of <tt/mail.friend.bogus/ 
gestuurd moet worden. Het nummer voor elke machinenaam is de prioriteit van de
MX records. De RR met het laagste nummer (10) is de machine waar mail heen
gestuurd moet worden, indien mogelijk. Als dat niet lukt wordt de mail
gestuurd naar een machine met een hoger nummer, in dit geval
<tt/mail.friend.bogus/, met prioriteit 20.</p>

<p>Herstart named weer door <tt/ndc restart/ te draaien, en controleer het
resultaat met nslookup:

<tscreen><verb>
$ nslookup
> set q=any
> linux.bogus
Server:  localhost
Address:  127.0.0.1

linux.bogus
        origin = ns.linux.bogus
        mail addr = hostmaster.linux.bogus
        serial = 199802151
        refresh = 28800 (8 hours)
        retry   = 7200 (2 hours)
        expire  = 604800 (7 days)
        minimum ttl = 86400 (1 day)
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
linux.bogus     nameserver = ns.linux.bogus
ns.linux.bogus  internet address = 192.168.196.2
mail.linux.bogus        internet address = 192.168.196.4
</verb></tscreen>
</p>
<p>Als je goed kijkt zie je een bug. De regel:

<tscreen><verb>
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
</verb></tscreen>

is verkeerd. Er zou moeten staan:</p>
<p>
<tscreen><verb>
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus
</verb></tscreen>
</p>
<p>Ik heb expres deze fout gemaakt, zodat je ervan kan leren ;-). Als je in
het zone bestand kijkt zie je dat de regel

<tscreen><verb>
		MX	10 mail.linux.bogus	; Primary Mail Exchanger
</verb></tscreen>
</p>
<p>een punt mist. Of er staat een ".linux.bogus" te veel. Als een machinenaam
niet met een punt eindigt, dan wordt de oorsprong eraan toegevoegd. In dit geval
wordt dat dus <tt/linux.bogus.linux.bogus/. De regel moet zijn:

<code>
		MX	10 mail.linux.bogus.	; Primary Mail Exchanger
</code>

of:

<code>
		MX	10 mail			; Primary Mail Exchanger
</code>
</p>
<p>Ik geef de voorkeur aan de laatste regel, het is minder tikken. De meningen
verschillen over wat beter zou zijn. In een zone bestand moet het domein
voluit geschreven worden met een <tt/./ erachter, of het domein moet er niet
bijstaan. In het laatste geval wordt de oorsprong automatisch het domein.</p>

<p>Ik zeg hier nogmaals dat in het <tt/named.conf/ bestand <em/geen/ punten
achter domeinnamen moeten staan. Je hebt geen idee hoe vaak een simpele punt
voor een hoop problemen heeft gezorgd.</p>

<p>Hier volgt het nieuwe zone bestand, nu met wat extra informatie:

<code>
;
; Zone file for linux.bogus
;
; The full zone file
;
@	IN	SOA	ns.linux.bogus. hostmaster.linux.bogus. (
			199802151	; serial, todays date + todays serial #
			8H		; refresh, seconds
			2H		; retry, seconds
			1W		; expire, seconds
			1D )		; minimum, seconds
;
		TXT	"Linux.Bogus, your DNS consultants"
		NS	ns		; Inet Address of name server
		NS	ns.friend.bogus.
		MX	10 mail		; Primary Mail Exchanger
		MX	20 mail.friend.bogus. ; Secondary Mail Exchanger

localhost	A	127.0.0.1

gw		A	192.168.196.1
		HINFO	"Cisco" "IOS"
		TXT	"The router"

ns		A	192.168.196.2
		MX	10 mail
		MX	20 mail.friend.bogus.
		HINFO	"Pentium" "Linux 2.0"
www		CNAME	ns

donald		A	192.168.196.3
		MX	10 mail
		MX	20 mail.friend.bogus.
		HINFO	"i486"	"Linux 2.0"
		TXT	"DEK"

mail		A	192.168.196.4
		MX	10 mail
		MX	20 mail.friend.bogus.
		HINFO	"386sx" "Linux 1.2"

ftp		A	192.168.196.5
		MX	10 mail
		MX	20 mail.friend.bogus.
		HINFO	"P6" "Linux 2.1.86"
</code>
</p>
<p>Er zijn een aantal nieuwe RR's te zien. Het HINFO (Host INFOrmation) heeft
twee gedeeltes. Het is een goede gewoonte om aanhalingstekens om beide 
gedeeltes te zetten. Het eerste deel beschrijft de hardware van de
machine, en het tweede deel beschrijft de software. De machine 'ns' heeft een
pentium en draait Linux 2.0. De tweede nieuwe RR is CNAME (Canonical NAME).
Met CNAME kan je een alias voor een machine maken. In dit voorbeeld is www een
alias voor ns.</p>

<p>Het gebruik van het CNAME record is een beetje controversieel. Hou je in
elk geval aan de regel dat een MX, CNAME, of SOA record <em/nooit/ naar een
CNAME record mag verwijzen, het moet altijd naar een machine met een A record
verwijzen. De volgende regel is dus fout:

<code>
foobar		CNAME	www			; NO!
</code>
</p>
<p>Maar de volgende regel is goed:

<code>
foobar		CNAME	ns			; Yes!
</code>
</p>
<p>Je kan er ook van uit gaan dat CNAME geen geldige machinenaam is voor een
email adres, <tt/webmaster@www.linux.bogus/ is dus fout in dit voorbeeld.
Als je dit probleem wilt voorkomen, gebruik dan een A record, zoals:

<code>
www		A	192.168.196.2
</code>
</p>
<p>Sommige BIND experts adviseren het CNAME record helemaal niet te gebruiken.
Maar het zou te ver gaan daar in deze HOWTO verder op in te gaan.</p>

<p>Maar zoals je ziet houdt deze HOWTO zich, net als een hoop domeinen, zich
niet aan die regel.</p>

<p>Laat named z'n configuratiebestanden opnieuw inlezen met het commando <tt/ndc reload/

<tscreen><verb>
$ nslookup
Default Server:  localhost
Address:  127.0.0.1

> ls -d linux.bogus
</verb></tscreen>
</p>

<p>Bovenstaand commando zegt dat alle records weergegeven moeten worden. Dit
resulteert in:

<tscreen><verb>
[localhost]
$ORIGIN linux.bogus.
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns
                        1D IN NS        ns.friend.bogus.
                        1D IN TXT       "Linux.Bogus, your DNS consultants"
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
gw                      1D IN A         192.168.196.1
                        1D IN HINFO     "Cisco" "IOS"
                        1D IN TXT       "The router"
mail                    1D IN A         192.168.196.4
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "386sx" "Linux 1.0.9"
localhost               1D IN A         127.0.0.1
www                     1D IN CNAME     ns
donald                  1D IN A         192.168.196.3
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "i486" "Linux 1.2"
                        1D IN TXT       "DEK"
ftp                     1D IN A         192.168.196.5
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "P6" "Linux 1.3.59"
ns                      1D IN A         192.168.196.2
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "Pentium" "Linux 1.2"
</verb></tscreen>
</p>

<p>Dat ziet er goed uit. Je ziet dat het lijkt op het zone bestand zelf.
Laten we nu eens kijken wat er over <tt/www/ alleen gezegd wordt:

<tscreen><verb>
> set q=any
> www.linux.bogus.
Server:  localhost
Address:  127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 192.168.196.2
</verb></tscreen>
</p>

<p>Hierin zie je dat <tt/www.linux.bogus/ een alias is voor <tt/ns.linux.bogus/,
en het geeft voor programma's die een IP adres zoeken voldoende informatie 
over <tt/ns.linux.bogus/ om een verbinding met deze machine op te bouwen.</p>

<p>We zijn nu al halverwege!</p>
</sect1>

<sect1><heading>De reverse zone</heading>

<p>Nu kunnen programma's de namen in linux.bogus vertalen naar IP nummers
waarmee ze een verbinding kunnen opbouwen. Maar wat ook nodig is, is een
`reverse zone', die DNS in staat stelt van een IP adres naar een machinenaam
te converteren. Deze naam wordt door veel servers (WWW, FTP, IRC) gebruikt 
om te besluiten of je een verbinding mag opbouwen en welke prioriteit je
krijgt. Als je volledig van het Internet gebruik wilt maken heb je een reverse
zone nodig.</p>

<p>Plaats het volgende in <tt/named.conf/:

<code>
zone "196.168.192.in-addr.arpa" {
	notify no;
        type master;
        file "pz/192.168.196";
};
</code>
</p>
<p>Dit is precies hetzelfde als met <tt/0.0.127.in-addr.arpa/, en de inhoud
lijkt er ook op:

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

1		PTR	gw.linux.bogus.
2		PTR	ns.linux.bogus.
3		PTR	donald.linux.bogus.
4		PTR	mail.linux.bogus.
5		PTR	ftp.linux.bogus.
</code>
</p>
<p>Herstart named weer met <tt/ndc restart/ en controleer het resultaat met
nslookup:

<code>
> 192.168.196.4
Server:  localhost
Address:  127.0.0.1

Name:    mail.linux.bogus
Address:  192.168.196.4
</code>
</p>
<p>Het ziet er goed uit. Nu kunnen we alle informatie over het domein
bekijken:

<code>
> ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns.linux.bogus.
1                       1D IN PTR       gw.linux.bogus.
2                       1D IN PTR       ns.linux.bogus.
3                       1D IN PTR       donald.linux.bogus.
4                       1D IN PTR       mail.linux.bogus.
5                       1D IN PTR       ftp.linux.bogus.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
</code>
</p>
<p>Ziet er ook goed uit! Als je andere informatie op je scherm krijgt, zoek
dan naar foutmeldingen in de syslog. Hoe dat gaat staat uitgelegd in het begin
van dit hoofdstuk.</p>
</sect1>

<sect1><heading>Dingen waar je op moet letten</heading>

<p>Er zijn een paar dingen waar je goed op moet letten. Ten eerste, de IP 
nummers die in de voorbeelden gebruikt worden vallen binnen de verzameling
"prive adressen"; deze adressen mogen niet op het Internet gebruikt worden, en
zijn derhalve uitermate geschikt om te gebruiken in de voorbeelden in deze
HOWTO. De tweede opmerking gaat over de <tt/notify no;/ regel. Deze regel
vertelt named dat de secondary name servers niet op de hoogte gesteld moeten
worden van de veranderingen. Als we dat wel zouden doen bij deze experimenten,
dan zouden we daarmee alleen maar het Internet vervuilen.</p>

<p>En natuurlijk is het door ons gemaakte domein nep, net als de IP adressen.
Voor een voorbeeld van een echt domein, zie het volgende hoofdstuk.</p>
</sect1>

<sect1><heading>Waarom reverse lookups niet werken</heading>

<p>Er zijn een aantal dingen die bij normale machinenaam lookups wel werken,
en bij reverse lookups niet. Hieronder staat een uitleg en oplossing van deze
zaken, maar eerst moet je zorgen dat de reverse lookups op je eigen machine
werken. Als dat nog niet zo is, repareer dat en lees daarna verder.</p>

<p>Er zullen twee problemen met reverse lokups worden besproken:</p>


<sect2><heading>De reverse zone is niet gemachtigd</heading>

<p>Als je van een ISP een reeks IP adressen krijgt en een domein naam, dan is
dat domein gewoonlijk gemachtigd nameserver informatie te verstekken aan
computers die daarom vragen. Die machtiging bestaat uit een NS record dat
vertelt dat de nameserver informatie over jouw domein op jouw nameserver
gevonden kan worden. Deze methode van recursief machinenamen opzoeken staat
hierboven beschreven, in de sectie "droge theorie".</p>

<p>De reverse zone moet ook gemachtigd worden. Als je de <tt/192.168.196/
netwerkadressen en het <tt/linux.bogus/ domein hebt gekregen, dan moet je 
provider ook
<tt/NS/ records hebben voor je reverse zone en je forward zone. Als je de boom
langsloopt van <tt/in-addr.arpa/ en bij je eigen domein probeert te komen,
bestaat de kans dat er ergens iets niet werkt. Dat zal dan waarschijnlijk bij
je ISP zijn. Neem in dat geval contact met je ISP op zodat ze een goed NS
record aan kunnen maken.</p>
</sect2>

<sect2><heading>Subnetten die niet in de A, B, of C class vallen.</heading>

<p>Door gebrek aan IP nummers worden er regelmatig subnets uitgedeeld die
kleiner zijn dan een class C netwerk (256 adressen). Zo'n netwerk heet een
classless netwerk. Deze kleine subnets maken
het mogelijk dat het Internet nog steeds draait. Bij subnets kleiner dan een
class C netwerk, kunnen er problemen optreden. Deze problemen met de
oplossingen staan beschreven bij <htmlurl
url="http://www.acmebw.com/askmrdns/00007.htm" name="Ask Mr. DNS, op
http://www.acmebw.com/askmrdns/00007.htm">.</p>

<p>Het probleem ligt iets te ingewikkeld om hier te behandelen, dus lees de
`Mr. DNS' pagina goed door, en zorg dat je het begrijpt. Het kan gebeuren dat
je ISP het probleem niet begrijpt. Dan zal je het dus moeten uitleggen, zodat
ze toch een goede configuratie kunnen neerzetten die je vervolgens met
nslookup kan testen.</p>

<P>De Mr. DNS uitleg van het probleem bespreekt o.a. een <tt/CNAME/ truuk en
een truuk met het zone bestand. Niet elke resolver begrijpt deze <tt/CNAME/
truuk echter. Als je daar problemen mee krijgt, vraag je provider dan een PTR
record rechtstreeks in het getruukte zone bestand te zetten in plaats van de
<tt/CNAME/ truuk te gebruiken. Sommige ISP's hebben andere oplossingen voor
dit probleem zoals een websysteem voor het bewerken van `reverse mappings'.
</p>
</sect2>
</sect1>
</sect>

<sect><heading>Een voorbeeld van een echt domein<label id="real-example"></heading>

<p>In dit hoofdstuk laten we <em/eindelijk/ wat echte zone bestanden zien.</p>

<p>Gebruikers van deze HOWTO vroegen om voorbeelden van een echt zone bestand.
Het bestand dat hier gebruikt wordt is gemaakt door David Bullock van LAND-5, 
met wat aanpassingen van mezelf. Wat je hier ziet kan dus iets verschillen van
de informatie die je krijgt als je met nslookup de LAND-5 nameservers
ondervraagt.</p>


<sect1><heading>/etc/named.conf (of /var/named/named.conf)</heading>

<p>Hieronder staat de zone informatie voor LAND-5's subnet, <tt/206.6.177/, 
en de 'reverse zones'. Merk op dat de bestanden niet in een directory <tt/pz/
geplaatst worden zoals dat in deze HOWTO gebeurt, maar dat de directory
<tt/zone/ heet.</p>
<p>
<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>
<p>Als je dit in je <tt/named.conf/ bestand plaats, zet als *alsjeblieft*
`<tt/notify no;/' in de zone secties voor de twee <tt/LAND-5/ zones om
ongelukken te voorkomen.</p>
</sect1>

<sect1><heading>/var/named/root.hints</heading>

<p>Het bestand hieronder is inmiddels verouderd. Je zal dus zelf een nieuwe
versie aan moeten maken. Het aanmaken van een <tt/root.hints/ bestand wordt
verderop in deze HOWTO beschreven.

<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>
</p>
</sect1>

<sect1><heading>/var/named/zone/127.0.0</heading>

<p>In dit bestand staat niet bijzonders, alleen het verplichte SOA record en
een record dat 127.0.0.1 laat verwijzen naar de lokale machine. Ook dit
laatste is verplicht. In dit bestand hoeft verder niets te staan. Ook zal het
nooit aangepast hoeven worden, tenzij het adres van je nameserver of
hostmaster verandert.

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

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

<p>In dit bestand zien we het verplichte SOA record en de benodigde NS
records. We kunnen zien dat er een secundaire nameserver aanwezig is op 
<tt/ns2.psi.net/. Dit is ook zoals het zou moeten zijn; neem altijd een
secundaire nameserver in een ander netwerk. Als je netwerk platligt is je
secundaire DNS server nog steeds beschikbaar. We zien ook dat er een centrale
server is genaamd <tt/land-5/, die verschillende Internet servers draait. Naar
deze machine wordt verwezen met <tt/CNAME/ records, dit zou je ook met <tt/A/
records kunnen doen.</p>

<p>Zoals je in het SOA record kan zien, is de oorsprong van dit zone bestand
<tt/land-5.com/ en is de contactpersoon <tt/root@land-5.com/. In plaats van
<tt/root/ wordt ook het adres <tt/hostmaster/ vaak hiervoor gebruikt. Het
serienummer is in het JJJJMMDDS formaat: de datum en het serienummer van de
dag. Dit bestand is waarschijnlijk de zesde versie van 9 september 1996.
Onthoud dat het serienummer altijd hoger moet zijn dat het vorige
serienummer. Hier wordt slechts 1 cijfer gebruikt voor het serienummer van de
dag. Als er op een dag 9 versies worden gemaakt, moet hij weer wachten tot de
volgende dag voordat nieuwe versies kunnen worden gemaakt. Om dit te voorkomen 
zou je twee getallen kunnen gebruiken voor het serienummer.</p>
<p>

<code>
@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        8H		; refresh, seconds
                        2H		; retry, seconds
                        1W		; 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>
<p>Als je goed naar de land-5 nameserver kijkt, zie je dat de namen van de
vorm <tt/ws_/<em/nummer/ zijn. In nieuwere versies mag het underscoreteken 
niet gebruikt worden, daarom is dat hier vervangen door een minteken.</p>

<p>Iets anders dat het opmerken waard is, is dat de werkstations geen
individuele namen hebben, maar dat de laatste twee getallen van het IP adres
gebruikt worden om unieke namen te maken. Dit vereenvoudigt de administratie,
maar is een beetje onpersoonlijk. Het kan zijn dat gebruikers dit soort namen
niet op prijs stellen.</p>

<p>We zien ook dat <tt/funn.land-5.com/ een alias is voor <tt/land-5.com/,
maar hier wordt gebruik gemaakt van een <tt/A/ record in plaats van een
<tt/CNAME/ record. Zoals eerder opgemerkt is, is dat een goed gebruik.
</p>
</sect1>

<sect1><heading>/var/named/zone/206.6.177</heading>

<p>Onderstaand bestand zal in deze sectie besproken worden.

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

<p>De reverse zone is het deel van de DNS configuratie dat het meeste
problemen oplevert. Het wordt gebruikt om erachter te komen welke machinenaam
bij een IP adres hoort. Voorbeeld: Stel dat een Noorse IRC server alleen
verbindingen wil accepteren van Noorse IRC clients. De irc server kan er
makkelijk achter komen wat het IP adres van de client is. Dit IP adres zit
namelijk in elk IP pakket dat de client stuurt. Nu wil de server weten welke
machinenaam bij dit IP adres hoort. De server roept dan de functie
gethostbyaddr aan. Deze functie zoekt vervolgens <tt/200.177.6.206.in-addr.arpa/
op door te beginnen bij een <tt/./ server, en steeds een niveau verder te
gaan. Deze methode staat beschreven in de sectie "droge theorie". De
nameserver voor <tt/177.6.206.in-addr.arpa/ heeft een '<tt/PTR
ws-177200.land-5.com/' record voor <tt/200.177.6.206.in-addr.arpa/, wat
betekent dat bij <tt/206.6.177.200/ de machinenaam <tt/ws-177200.land-5.com/
hoort. Zoals eerder gezegd klopt deze uitleg niet helemaal, maar het komt
aardig in de buurt van de werkelijkheid.</p>

<p>Even terug naar het voorbeeld van de IRC server. De IRC server accepteert
alleen connecties van Noorse clients. Door de reverse lookup weet de server
dat het verzoek afkomstig is van <tt/ws-177200.land-5.com/. Omdat alleen
verbindingen vanaf <tt/.no/ machines zijn toegestaan, zal de verbinding in dit
geval niet opgebouwd worden. Als de reverse lookup zou falen, zou er helemaal
geen hostname gevonden worden, en wordt er ook geen verbinding gemaakt.</p>

<p>Sommige mensen zeggen dat reverse lookups alleen belangrijk zijn voor
servers, of dat ze helemaal niet belangrijk zijn. Dat is niet waar. Sommige
ftp, news, IRC of zelfs HTTP servers accepteren geen connecties van een
machine als er geen machinenaam gevonden kan worden. Reverse lookups zijn dus
zelfs <tt/verplicht/.</p>
</sect1>
</sect>

<sect><heading>Onderhoud<label id="maint"></heading>

<p><bf/Alles aan de praat houden/</p>

<p>Er is een onderhoudstaak aan DNS servers, namelijk het up-to-date houden
van het <tt/root.hints/ bestand. De makkelijkste manier om dat te doen is met
het programma <tt/dig/. Draai <tt/dig/ zonder opties, en je krijgt het
<tt/root.hints/ bestand van je eigen server. Als je een rootserver
ondervraagt met dig, is het resultaat te gebruiken als <tt/root.hints/
bestand. Het commando "<tt/dig @e.root-servers.net . ns &gt;root.hints.new/)"
levert een nieuw hints bestand. Hernoem het bestand <tt/root.hints.new/ naar
<tt/root.hints/ en laat named het bestand opnieuw inlezen met <tt/ndc reload/.
</p>

<p>Al Longyear heeft me onderstaand script gemaild, dat gebruikt kan worden om
<tt/root.hints/ automatisch te laten updaten. Het script gaat er van uit dat
mail lokaal werkt en dat het adres <tt/hostmaster/ op de lokale machine
bestaat. Pas het script eventueel aan zodat het werkt met de configuratie van
jouw machine.</p>
<p>
<code>
#!/bin/sh
#
# Update the nameserver cache information file once per month.
# This is run automatically by a cron entry.
#
# Original by Al Longyear
# Updated for bind 8 by Nicolai Langfeldt
# Miscelanious error-conditions reported by David A. Ranch
# Ping test suggested by Martin Foster
#
(
 echo "To: hostmaster <hostmaster>"
 echo "From: system <root>"
 echo "Subject: Automatic update of the root.hints file"
 echo

 PATH=/sbin:/usr/sbin:/bin:/usr/bin:
 export PATH
 cd /var/named

 # Are we online?  Ping a server at your ISP
 case `ping -qnc 10 some.machine.net` in
   *'100% packet loss'*)
	echo "The network is DOWN. root.hints NOT updated"
	echo
	exit 0
	;;
 esac

 dig @rs.internic.net . ns >root.hints.new 2>&1

 case `cat root.hints.new` in
   *NOERROR*)
	# It worked
	:;;
   *)
	echo "The root.hints file update has FAILED."
   	echo "This is the dig output reported:"
   	echo
   	cat root.hints.new
        exit 0
	;;
 esac

 echo "The root.hints file has been updated to contain the following information:"
 echo
 cat root.hints.new

 chown root.root root.hints.new
 chmod 444 root.hints.new
 rm -f root.hints.old
 mv root.hints root.hints.old
 mv root.hints.new root.hints
 ndc restart
 echo
 echo "The nameserver has been restarted to ensure that the update is complete."
 echo "The previous root.hints file is now called   
/var/named/root.hints.old."
) 2>&1 | /usr/lib/sendmail -t
exit 0
</code>
</p>
<p>Misschien heb je al gezien dat het <tt/root.hints/ bestand ook via ftp
beschikbaar is via Internic. Gebruik geen ftp om dit bestand op te halen.
Bovenstaand script is beter voor Internic en voor het Internet als geheel.
</p>
</sect>

<sect><heading>Converteren van BIND 4 naar BIND 8<label id="bind8"></heading>

<p>Oorspronkelijk was dit een sectie over het gebruik van BIND 8, door David
E. Smith (dave@bureau42.ml.org). Het is iets aangepast, zodat de sectie beter
bij bovenstaande titel past.</p>

<p>Eigenlijk is het heel eenvoudig. Behalve het gebruik van <tt/named.conf/ in
plaats van <tt/named.boot/ is er weinig veranderd. Bij BIND 8 zit
een perl script dat de oude naar de nieuwe configuratiebestanden converteert.
Een voorbeeld van een <tt/named.boot/ (van BIND 4) bestand voor een
caching-only nameserver:</p>
<p>
<code>
directory /var/named
cache	.	                                root.hints
primary	0.0.127.IN-ADDR.ARPA                    127.0.0.zone
primary	localhost				localhost.zone	 	
</code>
</p>
<p>Ergens op je systeem staat het <tt/named-bootconf.pl/ script. In de BIND8
source distributie staat dit in: <tt>bind8/src/bin/named</tt>. Om het bestand
te converteren, tik:

<code>
./named-bootconf.pl < named.boot > named.conf
</code>
</p>
<p>Hiermee wordt <tt/named.conf/ aangemaakt:

<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>
<p>Het script converteert alles dat in een <tt/named.boot/ bestand kan staan, 
maar voegt er niet alle verbeteringen aan toe die in BIND8 te gebruiken zijn.
Hieronder volgt een complete <tt/named.conf/ die hetzelfde doet, maar wat
effici&euml;nter werkt:

<code>
// This is a configuration file for named (from BIND 8.1 or later).
// It would normally be installed as /etc/named.conf.
// The only change made from the `stock' named.conf (aside from this
// comment :) is that the directory line was uncommented, since I
// already had the zone files in /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>
<p>Dit bestand kan je vinden in <tt>bind8/src/bin/named/test</tt> van de BIND8
distributie, samen met zone bestanden die voor de meeste mensen zonder
aanpassing te gebruiken zijn.</p>

<p>Het formaat van zone bestanden en het <tt/root.hints/ bestand zijn
identiek, net als de commando's die gebruikt worden om deze bestanden bij te
werken.</p>
</sect>

<sect><heading>Vragen en antwoorden (Q & A)<label id="qanda"></heading>

<p>Lees deze sectie voordat je me een mailtje stuurt.

<enum>

  <item>Mijn named vraagt om een <tt>named.boot</tt> bestand.

  Je leest de verkeerde HOWTO. Lees de DNS howto die over BIND 4 gaat, en te
  vinden is op <htmlurl url="http://www.math.uio.no/~janl/DNS/"
  name="http://www.math.uio.no/~janl/DNS/"></item>

  <item>Hoe gebruik ik DNS binnen een firewall?

  Een hint: gebruik <tt/forward only;/, je hebt waarschijnlijk ook de regel:

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

  nodig in het "options" gedeelte van je <tt/named.conf/ bestand, zoals
  beschreven staat in de sectie '<ref id="caching" name="caching">'.
  </item>

  <item>Hoe zorg ik ervoor dat DNS verschillende nummers voor dezelfde
  machinenaam (bijvoorbeeld <tt/www.drukke.site/) uitdeelt, zodat ik 
  de load over meerdere machines kan uitspreiden?

  Maak meerdere <tt/A/ records voor <tt/www.drukke.site/ en gebruik BIND
  4.9.3 of een nieuwere versie. BIND zal dan de adressen "roteren". Deze truuk
  werkt niet met eerdere versies van BIND.</item>

  <item>Ik wil DNS gebruiken op een (gesloten) intranet. Hoe doe ik dat?

  Maak geen gebruik van het <tt/root.hints/ bestand, en gebruik alleen de
  zone bestanden. Op deze manier hoef je ook niet steeds nieuwe <tt/root.hints/ 
  bestanden op te halen.</item>

  <item>Hoe configureer ik een secundaire nameserver?

  Als de primaire nameserver adres <tt/127.0.0.1/ heeft, zet dan het
  volgende in het <tt/named.conf/ bestand van je secundaire nameserver:

  <code>
  zone "linux.bogus" {
	type slave;
	file "sz/linux.bogus";
	masters { 127.0.0.1; };
  };
  </code>
  
  Eventueel kan je meerdere machines opgeven in de <tt/masters/ regel. De
  adressen van de machines moeten gescheiden worden met een ';'.
  </item>

  <item>Ik wil BIND kunnen gebruiken zonder Internet verbinding

  Er zijn drie antwoorden op deze vraag:</item>

  
  <item>Ik heb onderstaand mailtje ontvangen van Ian Clark
  &lt;ic@deakin.edu.au&gt;, waarin hij uitlegt hoe hij dat doet:

<tscreen><verb>
Ik draai zelf named op m'n masquerading machine. Ik heb twee <tt/root.hints/
bestanden, <tt/root.hints.real/ met de echte rootnameserver informatie en
<tt/root.hints.fake/ met de volgende inhoud:

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

Als ik de internet verbinding verbreek zet ik de inhoud van
<tt/root.hints.fake/ in <tt/root.hints/ en herstart ik named. Als ik weer
verbinding maak, zet ik de inhoud van <tt/root.hints.real/ in <tt/root.hints/
en herstart ik named. Deze commando's staan respectievelijk in m'n 
<tt/ip-down/ en <tt/ip-up/ scripts.

De eerste keer dat ik een IP adres opzoek als ik offline gegaan ben, komt de
volgende regel in /var/log/messages te staan:

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

En daar valt mee te leven.

Deze methode werkt goed bij mij. Ik kan de nameserver voor lokale adressen
gebruiken als ik off-line ben zonder de lange timeouts voor adressen buiten
het lokale netwerk. En als ik online ben kunnen adressen buiten het lokale
netwerk gewoon gevonden worden.

</verb></tscreen>
</item>
   <item>Ik heb ook een mailtje gekregen van Karl-Max Wanger over hoe BIND
   samenwerkt met NFS en de portmapper op een voornamelijk offline machine:

<tscreen><verb>

Ik draai BIND op al m'n machines die alleen af en toe verbonden zijn met het
Internet via een modem. De nameserver werkt alleen als cache, het bevat zelf
geen gegevens die niet ergens anders vandaan gehaald zijn. Zoals gebruikelijk
in Slackware startte named voor nfsd en mountd.

Met &eacute;&eacute;n van m'n machines had ik het probleem dat ik hem soms kon
mounten vanaf een ander systeem, maar meestal niet. Het maakte geen verschil 
of ik nu via PLIP, ethernet, of SLIP verbinding had gemaakt.

Na een tijdje experimenteren kwam ik erachter dat named een conflict
veroorzaakte met het communicatieproces tussen nsfd en de portmapper en tussen
mountd en de portmapper. Als ik named na nfsd en mountd startte, was er geen
probleem.

Omdat deze volgorde geen nadelen heeft, raad ik iedereen aan in deze volgorde
te booten, om zo problemen te voorkomen.

</verb></tscreen>
</item>

<item>Tenslotte meld ik dat er een HOWTO is over dit onderwerp, bij <htmlurl
url="http://www.acmebw.com/askmrdns/#linux-ns" name="Ask Mr. DNS op
http://www.acmebw.com/askmrdns/#linux-ns">. Het gaat echter wel over BIND 4,
dus je zal op sommige plekken de informatie moeten aanpassen voor BIND 8.
</item>


  <item>Waar plaatst een caching nameserver z'n cache? En kan ik de grootte
  van de cache aanpassen?

  De cache staat volledig in het geheugen, het wordt <tt/nooit/ naar disk
  geschreven. Elke keer dat je named stopt gaat de cache verloren. De grootte
  van de cache is niet aan te passen. Als je dit toch wilt, zal je named
  moeten hacken. Dit is niet aan te raden.</item>

  <item>Hoe krijg ik een domein? Als ik bijvoorbeeld het domein <tt/linux-rules.net/
  wil hebben, hoe zorg ik dan dat het aan mij toegewezen wordt?

  Neem contact op met je ISP, zij zullen je hiermee kunnen helpen. Hou er
  wel rekening mee dat je zal moeten betalen voor het domein.
</item>
</enum>
</p>
</sect>

<sect><heading>Hoe wordt ik een nog betere DNS beheerder<label id="bigger"></heading>

<p><bf>Documentatie en tools</bf></p>

<p>Er bestaat ook Echte Documentatie over dit onderwerp, online en in boeken.
Je zal dit zeker moeten lezen wil je meer verstand krijgen van DNS. Het 
standaard
boek over DNS is <em/DNS and BIND/ door C. Liu and P. Albitz van de uitgeverij
O'Reilly &amp; Associates. ISBN 0-937175-82-X. Ik heb het gelezen, en het is
erg goed. Het is gebaseerd op BIND4, maar dat is niet echt een probleem. Er is
ook een sectie over DNS in het boek <em>TCP/IP Network Administration</em>,
ISBN 0-937175-82-X, van Craig Hunt.</p>

<p>Online kan je informatie vinden op <url
url="http://www.dns.net/dnsrd/"> (DNS Resources Directory) en <url
url="http://www.isc.org/bind.html">; een FAQ, een naslagwerk, definities van
protocollen en DNS hacks (deze zijn ook, samen met de relevante protocollen
die hieronder genoemd staan bij de BIND distributie ingesloten). Ik heb het
grootste deel hiervan niet gelezen, maar ik ben dan ook geen ervaren DNS
beheerder. Arnt Gulbrandsen is dat wel, en hij vindt ze fantastisch ;-). De
nieuwsgroep <htmlurl url="news:comp.protocols.tcp-ip.domains"
name="comp.protocols.tcp-ip.domains"> gaat over DNS. Verder zijn er een aantal
RFC's over DNS, waarvan de belangrijkste zijn:</p>
<p>

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

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

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

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

<p><descrip>
<tag/RFC 1713/ 
<p>A. Romao, <em/Tools for DNS debugging/, 11/03/1994.
</p></descrip></p>

<p><descrip>
<tag/RFC 1712/ 
<p>C. Farrell, M. Schulze, S. Pleitner, D. Baldoni,
<em/DNS Encoding of Geographical Location/, 11/01/1994.

</p></descrip></p>

<p><descrip>
<tag/RFC 1183/ 
<p>R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart,
<em/New DNS RR Definitions/, 10/08/1990.

</p></descrip></p>

<p><descrip>
<tag/RFC 1035/ 
<p>P. Mockapetris, <em/Domain names - implementation and
specification/, 11/01/1987.

</p></descrip></p>

<p><descrip>
<tag/RFC 1034/ 
<p>P. Mockapetris, <em/Domain names - concepts and
facilities/, 11/01/1987.
</p></descrip></p>

<p><descrip>
<tag/RFC 1033/ 
<p>M. Lottor, <em/Domain administrators operations
guide/, 11/01/1987.
</p></descrip></p>

<p><descrip>
<tag/RFC 1032/ 
<p>M. Stahl, <em/Domain administrators guide/,
11/01/1987.
</p></descrip></p>

<p><descrip>
<tag/RFC 974/ 
<p>C. Partridge, <em/Mail routing and the domain system/,
01/01/1986.
</p></descrip></p>
</sect>
</article>
</linuxdoc>
