[LinuxFocus-icon]
<--  | Home  | Map  | Index  | Zoek

Nieuws | Archieven | Links | Over LF
Andreas J Gundacker
door Andreas J. Gundacker
<AJGundi/at/aol.com>

Over de auteur:

De auteur schreef dit artikel voor de Duitse Linux-Magazin.
Hij gaf ons toestemming om het over te nemen.



Vertaald naar het Nederlands door:
Christ Verschuuren <cjmversch/at/netscape.net>

Inhoud:

 

Introductie tot DNS

illustratie

Kort:

Dit artikel is geschreven voor iederen die geïnteresseerd is in het onderwerp van wereldwijde netwerken als het Internet en het World Wide Web (WWW). Het is met name bedoeld voor hen die meer willen weten over de functionaliteit hiervan. Als je jezelf afvraagt wat er achter je bladerprogramma gebeurd als je het adres van een server hebt ingetypt, dan zal dit artikel je op een eenvoudige wijze inzicht geven in de processen die dit alles mogelijk maken.


_________________ _________________ _________________

Het artikel is onderverdeeld in vijf secties:

De eerste behandelt in het kort wat het Internet voorstelt en hoe het tot stand is gekomen.
De tweede sectie behandelt een aantal technische begrippen.
De derde is gewijd aan de belangrijkste protocollen van het Internet: TCP en IP.
Het vierde zal je bekend maken met de functie van DNS.
De vijfde sectie is het praktijkonderdeel, waarin het gebruik wordt uitgelegd van een Domain Name Service (DNS) voor een lokaal netwerk, voorzien van een gateway, en draaiend op een Linux besturingssysteem, aan de hand van de configuratie op het netwek van de auteur. Op deze wijze kan dit document dienen als een basishandleiding voor de onervaren beginner en als een naslagwerk voor de gevorderde gebruiker.  

(1) ARPANET, het begin van het World Wide Web

Het "Internet" staat voor alle onderling verbonden computernetwerken die het gevolg waren van het ARPANET. Het ARPANET is ontstaan in 1969 uit het project DARPA (Defense Advanced Research Project Agency) van het Amerikaanse Ministerie van Defensie. Toen het ARPANET zijn experimentele status ontgroeide, was de basis van het TCP/IP protocol ontwikkeld en werd deze vastgelegd als militaire standaard. Alle instituten die deel uitmaakten van ARPANET moesten in het vervolg gebruik maken van de nieuwe protocollen. Om deze overgang te vereenvoudigen, huurde DARPA de onderneming Bolt, Beranek &Newman (BBN) in om TCP/IP te integreren in het Berkeley-UNIX (BSD) besturingssysteem. Hierdoor is TCP/IP reeds zeer lang geintegreerd in UNIX besturingssystemen.

In 1983 werd het ARPANET gesplitst. Het resultat was het MILNET, een onderdeel van het Defensie Data Network (DDN) en een nieuw, kleiner, ARPANET. Een samenwerkingsverband bestaande uit het MILNET en het ARPANET beheerde het INTERNET. Het ARPANET verdween in 1990, waarmee de weg werd geopend voor het Internet, dat een groot aantal netwerken over de gehele wereld omvat.  

(2) Kennis van een aantal technische begrippen

Stel je voor dat je voor een computer zit die deel uitmaakt van een local area network (LAN) van het wiskundedepartement (mathematics dept.) van je universiteit (Figuur 1).

Het LAN van het departement is door middel van de backbone verbonden met het LAN van het fysicadepartement dat is gevestigd in een ander gebouw. Je wil data sturen naar een vriend van je die werkt op het andere departement. Het is belangrijk te weten dat de computer en die van je vriend een unieke naam hebben op het universiteitsnetwerk (net als alle andere computers op het Internet). Bijvoorbeeld de naam van jouw computer is Einstein en die van je vriend heeft de naam Edison. Om de twee afzonderlijke netwerken met elkaar te laten communiceren is een gateway nodig. Een gateway is een computer in het netwerk die een verbinding kan maken met een ander, fysiek gescheiden, netwerk. In dit geval hebben we twee gateways nodig - een voor het lokale netwerk van mathematics en een andere voor het netwerk van physics. In het vervolg noemen we de gateway van mathematics "mats" en de gateway van physics "fisa".


Figuur 1: De weg van een datagram van Einstein naar Edison

Omdat de software van Einstein (rlogin, telnet, ftp etc.) geen data (data pakketten) rechtstreeks naar Edison kan zenden, daar deze zich op een ander fysiek gescheiden netwerk bevindt, moet je gebruik maken van een gateway om de pakketjes naar de corresponderende bestemming te transporteren. Met andere woorden, de gateway "mats" stuurt de pakketjes naar de gateway "fisa", die dezelfde functie vervult in het physics netwerk. Het transport gaat over de backbone van de universiteit en "fisa" levert de data af bij Edison. Dit schema van gegevensoverdracht naar een remote host (computer op het netwerk) wordt Routing genoemd en de data pakketten heten in het Engels datagrams.  

(3) TCP/IP

 

(3.1) IP

Datagrams, zijnde de kleinste eenheden voor gegevensoverdracht, worden uitgewisseld door een protocol - het Internet Protocol (IP), dat volledig onafhankelijk is van de hardware. Dit is een belangrijk voordeel van het IP protocol, het kan fysiek gescheiden netwerken samenvoegen tot een schijnbaar homogeen netwerk.

De primaire functies van IP:

Aan de andere kant kent IP geen transmissie-controle (handshake), waardoor het enkel gegevens van een plaats naar een andere transporteert zonder te controleren of de pakketten in de goede volgorde zijn ontvangen. Later zullen we nog aandacht besteden aan dit probleem.

We hebben nu een beeld van de software die het transport regelt (Routing). Onthoud dat je computer de naam Einstein heeft. Netwerkcomputers hebben namen omdat ze eenvoudiger te onthouden zijn dan nummers. IP heeft een adresstructuur die onafhankelijk is van de hardware. Zij kent een uniek 32 bits nummer toe aan een host; het IP-adres (IP). Het IP-adres wordt gevormd door 4 getallen gescheiden door een punt. Einstein bijvoorbeeld, zou het hardware adres 0x95C0C02 kunnen hebben, dat zou verschijnen in de vorm 149.176.17.7.

Er zijn 3 verschillende soorten adressen:

De Ethernet kaart bezet een poort in het besturingssysteem; bij Linux is dit meestal eth0. Seriële poorten bijvoorbeeld, hebben de namen cua0 of ttyS0. Om precies te zijn moet je niet zeggen dat je computer de naam Einstein heeft, maar verwijst de naam naar de corresponderende hardware interface.

Je weet nu dat het Internet Protocol (IP) data verstuurt tussen computers in de vorm van datagrammen. Elk datagram wordt verstuurd naar het adres op het Internet of het locale netwerk dat is aangegeven in de header van het datagram.

Een IP-adres bestaat uit twee delen:

De nummering van de host adressen is afhankelijk van de omvang van het netwerk. Om aan de verschillende eisen te voldoen, zijn bepaalde netwerk classes gecreerd die verschillen in de nummerseries van de IP adressen.
 
Class A: Class A omvat netwerken in de serie van 1.0.0.0 tot 127.0.0.0. De nummering van dit type netwerk is aangegeven in het eerste deel van het IP adres. Er zijn 24 bits over om aan de host toe te wijzen, dat zou genoeg moeten zijn voor ongeveer 1.6 miljoen computers.
Class B: Class B omvat netwerken in de serie 128.0.0.0 tot 191.255.0.0. De nummering van dit type netwerk wordt aangegeven in de eerste twee delen van het IP adres. Dit biedt ruimte aan 16,320 netwerken met 65,024 computers elk.
Class C: Class C omvat netwerken in de serie 192.0.0.0 tot 223.255.255.0. De nummering van dit type netwerk wordt aangegeven in de eerste twee delen van het IP adres. Dit laat 2 miljoen netwerken toe met ongeveer 254 computers.
Class D, E en F: Adressen in de serie 224.0.0.0 tot 225.0.0.0 zijn experimenteel, of zijn gereserveerd voor toekomstig gebruik. Zij benoemen geen netwerken.

Als we terugkeren naar het voorbeeld, zien we dat Einstein met het IP adres 149.176.12.7 deel uitmaakt van een class B netwerk (149.176.0.0) en zijn adres (het host adres) binnen het netwerk is 12.7. Het is belangrijk om te weten dat het hostadres nooit de nummers 0 of 255 kan bevatten, omdat deze voor speciale doeleinden gereserveerd zijn. Een hostadres dat alleen uit nullen bestaat identificeert het netwerk (149.172.0.0). Als de hostnummers 255 zijn (149.172.255.255) geeft dit het broadcast adres aan, omdat data die naar dit adres wordt gezonden ontvangen wordt door alle computers in het netwerk.

Tegelijkertijd zijn er twee gereserveerde netwerk adressen: 0.0.0.0, wat de default route is en 127.0.0.0, wat het loopback adres is. De default route heeft te maken met de wijze waarop IP datagrammen routeert (Opm: masquerading).

Voor nu is het belangrijkste het 127.0.0.0 netwerk, wat is gereserveerd voor IP verkeer dat plaatsvindt op je eigen computer. Het IP adres 127.0.0.0 verwijst meestal naar een interface op je computer die fungeert als de loopback interface, welke functioneert als een gesloten circuit. Elk verzonden pakket wordt onmiddellijk geretourneerd. Op deze wijze kan de loopback dienen om de netwerk software te testen zonder dat een ''echt'' netwerk nodig is. ''Ping localhost'' of ''ping 127.0.0.0'' is een veelgebruikte test onder Linux om vast te stellen of TCP/IP juist geconfigureerd is.

Het internet IP adres dat je uiteindelijk ontvangt, wordt bepaald door een centraal instituut, NIC (Network Information Center) genaamd. De beste oplossing is om je Internet Service provider te vragen een adres voor je te reserveren. Als je er zeker van bent dat je netwerk nooit verbonden zal worden met het Internet, kun je zelf een IP adres kiezen. Om er zeker van te zijn dat geen data pakketjes ontsnappen naar het Internet, is het belangrijk een IP adres te kiezen dat alleen geldig is voor lokale netwerken en niet gebruikt kan worden op het Internet.

Deze adresreeksen zijn:

Desondanks blijft het mogelijk een gateway naar het Internet te installeren. Met andere woorden; het externe adres is bekend op het Internet, maar de computers op je netwerk kunnen niet benaderd worden, omdat hun adressen niet bekend gemaakt worden op het Internet. De computers op je netwerk hebben anderzijds wel toegang tot het WWW (World Wide Web), via de gateway.  

(3.2) TCP (Transmission Control Protocol)

Zoals eerder aangegeven voorziet het IP protocol niet in mogelijkheden om de juiste overdracht van de data vast te stellen; dit is wat het TCP doet. Het Tcp protocol is georienteerd op bytestromen, betrouwbaarheid en verbindingen.

Op die manier waarborgt TCP een juiste overdracht van de data.  

(4) Het Domain Name System (DNS)

 

(4.1) Een overzicht van het systeem

Het Domain Name System (DNS) is in de basis een gedistribueerde database van computers die deel uitmaken van een netwerk. Dit maakt lokaal beheer van alle database-segmenten eenvoudiger, waardoor elk segment beschikbaar kan zijn in het netwerk via een client-server systeem.

De Name Server is een programma dat deel uitmaakt van het server gedeelte van het client-server mechanisme van DNS. De Name Servers hebben informatie over een bepaald segment van de database, welke zij beschikbaar maken voor clients, Resolvers genaamd (zie verder). Vaak bestaan de Resolvers enkel library routines, die informatie opvragen en deze ''queries'' over het netwerk naar de Name Server sturen.

De DNS database-structuur is weergegeven in figuur 2. De gehele database lijkt een beetje op een omgekeerde boom met de wortel bovenaan. De naam van de 'root' is de tag NULL, maar dit wordt geschreven als een enkele punt ("."). Elk knooppunt op de boom vomt zowel een onderdeel van de gehele database, alsook een DNS domein (domain). Van hieraf kan elk domein verder worden opgedeeld in zogenaamde subdomeinen (subdomains) die aftakkingen zijn van het bovenliggende knooppunt.


Figuur 2: De DNS database-structuur

Elk domein is gemarkeerd zodat het een 'tag' heeft die het identificeert ten opzichte van het bovenliggende domein. Het domein heeft ook een domeinnaam, die de plaats aangeeft in de database, net zoals de root directory de opbouw aangeeft in het bestandssysteem van een computer.

In het DNS bestaat de complete domeinnaam uit een reeks tags, beginnende met het laatste subdomein tot aan de root, waarbij de tags gescheiden worden door punten "." (bijvoorbeeld: einstein.mathematics.ac.edu). Dit laat toe dat elk domein beheerd kan worden door verschillende organisaties. Elke organisatie kan zijn domein opdelen in verschillende subdomeinen, wiens administratie uitgevoerd kan worden door weer een andere entiteit.

Het Network Information Center bijvoorbeeld, beheert het domein "edu" (educational) maar draagt het beheer over het subdomein "ac.edu" (academic) over aan de universiteit, die de mathematics afdeling de toestemming geeft om het volgende domein te beheren: "mathematics.ac.edu" (Figuur 3).


Figuur 3: Subdomeinen beheren

Tot slot moeten we nog vermelden dat een domain zowel subdomains als hosts kan bevatten. Elke host op een netwerk heeft een domeinnaam die informatie bevat over de host, net zoals bijvoorbeeld het IP-address of de wijze waarop het verzenden van post werkt. Een host kan ook een of meerdere domeinnaam-aliasen hebben, dit zijn gewoon alternatieve namen die naar dezelfde host verwijzen. Bijvoorbeeld: als de naam van je vrouw Maria Elizabeth is, zul je haar soms Maria noemen en een andere keer Elizabeth. Hoewel je verschillende namen gebruikt, doelen zij op dezelfde persoon.

De domein organisaties zijn vrij in het kiezen van de namen in hun domein. Het maakt niet uit welke naam wordt gebruikt, omdat het niet kan conflicteren met een andere naam door het gebruik van een unieke domeinnaam aan het einde. Op deze wijze kunnen er twee hosts met de naam einstein bestaan op de universiteit. Bijvoorbeeld: pakketjes van einstein.physics.ac.edu zullen altijd hun weg kunnen vinden naar einstein.mathematics.ac.edu, omdat ze deel uitmaken van verschillende 'ouder' (parent) domeinen.  

(4.2) Waarom is DNS noodzakelijk?

Om domeinnamen en IP-adressen te kunnen identificeren en om hosts te kunnen lokaliseren op andere netwerken. Zoals eerder vermeld is het gemakkelijker om namen dan getallen te onthouden. En zeker in het geval van een enorm aantal adressen, zoals op het Internet.

Computers, anderszijds, werken perfect met getallen zoals IP-adressen. Als je op het Internet op zoek gaat naar een adres zoals http://www.altavista.com, zal je browser een verzoek sturen naar de Domain Server van je provider om het corresponderende IP-adres bij deze domeinnaam te zoeken. Als je provider geen toegang heeft tot deze zone, stuurt deze het verzoek door naar het betreffende domein, en dit gaat zo door todat de aanvraag aankomt bij het laatste domein. De laaste domeinserver verstuurt dan het gevraagde IP adres naar de computer die het aangevraagd had. (Figuur 4 geeft een beeld van het zoekproces voor het adres "einstein.mathematics.ac.edu")


Figuur 4: Opzoeken van einstein.mathematics.ac.edu op het Internet

Dit betekent dat elke domain server de complete informatie bevat van de zone die hij beheert en ook de basis informatie van andere zones. Als een verzoek wordt ontvangen over een zone buiten de geautoriseerde zone, weet de server waar hij moet zoeken. Dit kan betekenen dat het adresverzoek langs verschillende domain servers gaat voordat het contact maakt met de gevraagde bestemming.

Zelfs als je het IP adres van je bestemming zou kennen, is het nog essentieel andere domain servers te raadplegen als je computer zich niet in dezelfde zone bevindt. Het is duidelijk waarom een Domain Name System niet zou kunnen bestaan op een gecentraliseerde database. Ten eerste zou het te lang duren om een server te vinden tussen miljoenen anderen en ten tweede zou een lange wachtrij ontstaan in het geval van duizenden gelijktijdige verzoeken van over de gehele wereld. Bovendien zou het geen zin hebben naar een veraf gelegen server te gaan als je contact zoekt met een computer binnen je eigen zone.

Tot nu toe hebben we gesproken over de ''mapping'' van namen naar adressen. Wat gebeurt er als je het IP-adres hebt en je wilt de naam van het domein weten? Om dit probleem op te lossen is het "in-addr.arpa" (Figuur 5) domein gecreëerd.

Dit domein wordt het reverse domain genoemd en het vertalen van IP-adressen naar domeinnamen wordt inverse map (reverse mapping of reverse lookup) genoemd. Het reverse domain wordt gemaakt door de nummers van de IP-adressen in achterwaartse volgorde te plaatsen en in-addr.arpa aan het einde toe te voegen.

Bijvoorbeeld: Het IP-adres voor Einstein van het wiskundedepartement is "149.176.12.7" met de domeinnaam "einstein.mathematics.ac.edu".

Het domein "mathematics.ac.edu" krijgt dan de achterwaartse domeinnaam: "12.176.149.in-addr.arpa" en de computer einstein.mathematics.ac.edu krijgt overeenkomstig "7.12.176.149.in-addr.arpa".


Figuur 5: De reverse map

   

(5) Installeren van een Domain Name Server

...voor een lokaal netwerk (LAN) met een gateway in het LINUX Operating systeem met behulp van BIND (Berkeley Internet Name Daemon).

Bij het volgende wordt verondersteld dat je weet hoe je netwerkkaarten moet installeren en configureren onder Linux. Met behulp van de opdrachten "ifconfig" en "ping localhost" kun je testen of de configuratie van je computer juist werkt. Nu zullen we ons wijden aan het verbinden van je computers met gebruikmaking van DNS, geconfigureerd met BIND. Je moet BIND geïnstalleerd hebben op de computer die dienst zal doen als domain server. BIND bevat named (spreek uit name-d = de server deamon). In dit hoofdstuk zullen we een fictief domein installeren. Op deze manier hoef je alleen de IP-adressen, computernamen en enkele andere details van je netwerk te wijzigen.


Figuur 6
: Het netwerk van Alcomato Distributions

Ons denkbeeldige domein is bestemd voor een drankenhandel. Het bedrijf "Alcomato Distributions", gespecialiseerd in bier en sterke dranken, heeft van het NIC de domeinnaam ''alcomat.com'' gekregen. Alcomato Distributions heeft twee Ethernet-netwerken met de nummers 192.249.249 en 192.253.253 (Figuur 6).

Een deel van de host tabel (gewoonlijk het /etc/hosts bestand) is als volgt:


/etc/hosts

127.0.0.1 localhost

# Dit zijn de computers voor de likeur

192.249.249.2 whisky.alcomat.com whisky

192.249.249.3 brandy.alcomat.com brandy

192.249.249.4 vodka.alcomat.com vodka

 .........

# Dit zijn de computers voor het bier

192.253.253.2 mahou.alcomat.com mahou

192.253.253.3 augustiner.alcomat.com augustiner

192.253.253.4 polar.alcomat.com polar

 ..........

# Het volgende definieert de gateway voor de beide netwerken

192.249.249.1 tubo.alcomat.com tubo tu tub249

192.253.253.1 tubo.alcomat.com tubo tu tub253



 

(5.1) Database bestanden

De eerste stap is de host tabel te vertalen naar de overeenkomstige DNS gegevens. DNS bestaat uit verschillende bestanden: één bestand vertaalt alle host-namen naar IP-adressen. Andere bestanden zetten de IP-adressen weer om naar hostnamen. Dit laatste wordt "reverse mapping" genoemd en elk netwerk beschikt over zijn eigen bestand hiervoor.


Het bestand dat namen vertaalt naar adressen heet named.hosts. De bestanden die IP-adressen omzetten naar hostnamen zal ik named.249 en named.253 noemen, naar de twee netwerken van onze fictieve onderneming. Je kunt voor deze bestanden een willekeurige naam kiezen. Hierna zal ik ze de DNS database files noemen.

Los van deze bestaan er voor elke server twee database files die min of meer gelijk zijn. Deze noem ik named.cache en named.local.

Om alle database files te kunnen samenvoegen, heeft de Name Server een bestand nodig dat begint met een – ; met BIND is dit meestal /etc/named.boot. De database files zijn specifiek voor DNS. Het openingsbestand is specifiek voor de Name Server implementatie met –, in ons geval zullen we BIND gebruiken.

   

(5.2) Resource records

De meerderheid van de componenten van deze bestanden worden DNS resource records genoemd. Volgens de DNS richtlijnen hebben de resource records de volgende structuur:

SOA record: Geeft de bron aan voor gegevens van dit domain.

NS record: Geeft de Name Server aan voor dit domain

Het volgende records geven host-informatie op dit domein:

A: Naam voor de ''map''

PTR: Adres behorende bij de naam van de ''map'' (reverse map)

CNAME: Samenstelde naam (officiele naam voor de aliases)

TXT: Tekst informatie

RP: Verantwoordelijke persoon

Commentaren: Het gebruik van commentaren en blanco regels maakt de DNS bestanden beter leesbaar. De commentaren beginnen met een ;puntkomma; en ze stoppen aan het einde van de regel . Name Servers negeren commentaren zowel als blanco regels.

SOA record:
Het eerste record van elke database file is het SOA record (start of authority). Het SOA record geeft aan dat deze Name Server de beste bron van informatie voor de hosts binnen dit domain is. Onze Name Server - augustiner - wordt bevoegd voor het domain ''alcomat.com'' door het SOA record. Een SOA is verplicht voor de bestanden named.hosts, named.249, en named.253. We zullen het volgende SOA record aanpassen in het bestand ''named.hosts''.


SOA record

alcomat.com. IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Opnieuw proberen (Retry) na 1 uur
 604800 ; Vervallen (Expire) na 1 week
 86400 ) ; Minimum TTL van 1 week



De naam "alcomat.com" moet in de eerste kolom staan. Het is erg belangrijk een punt te plaatsen aan het einde van de namen! Zo niet, dan wordt het domain "alcomat.com" automatisch toegevoegd, hetgeen niets betekent. Ik zal later de verklaring geven als we de verkortingen behandelen.

De "IN"staat voor het Internet. Er bestaan andere classes, maar daarvan wordt er geen enkele algemeen gebruikt.

De eerte naam na de SOA, augustiner.alcomat.com, is de naam van de Name Server voor deze informatie. De tweede naam, juan.mahou.alcomat.com, is het mail-adres van de persoon die deze informatie beheert (als je de eerst punt "." vervangt door een @). BIND voorziet in een ander type resource record voor dit doel: RP (responsible person).

De ronde haken zorgen ervoor dat het SOA record meerdere regels kan omvatten. De meerderheid van de regels binnen de ronde haken dienen om secondary Name Servers te informeren, een mogelijkheid die we niet gebruiken in ons fictieve netwerk en die waarschijnlijk behandeld zal worden in een volgende versie van dit document.

Soortgelijke SOA records zijn opgenomen in de bestanden named.249 en named.253. Merk op dat we in deze bestanden de eerst naam van het SOA record ''alcomat.com'' hebben gewijzigd in de naam van het domain in-addr.arpa adres: 249.249.192.in-addr.arpa. en 253.253.192.in-addr.arpa.

NS record:
De volgende regel die we toevoegen in elke database file is het NS record (Name Server). De NS records in ons domain zijn:


NS record

alcomat.com. IN NS augustiner.alcomat.com.
alcomat.com. IN NS tubo.alcomat.com.



Deze records geven aan dat er twee Name Servers bestaan voor het domain "alcomat.com". Deze Name Servers worden gevonden op de hosts "augustiner" en "tubo". Hosts zoals "tubo", (onze gateway) die meer dan 1 netwerk interface hebben (multihomed hosts), in ons geval twee Ethernet kaarten, zijn een excellente keus voor Name Servers, omdat ze breed toegankelijk zijn: Ten eerste zijn ze rechtstreeks toegankelijk voor hosts van meer dan één netwerk (in sommige gevallen dienen ze ook als routers), en ze kennen weinig uitval omdat goed bewaakt worden.

Net zoals SOA records, zullen wo ook NS de records toevoegen aan de bestanden named.249 en named.253.

Adres en Alias records:
De volgende stap is het verbinden van de adressen aan de namen (mapping). We voegen de volgende resource records toe aan het named.hosts bestand.

A record

;
;host-addressen
;

localhost.alcomat.com. IN A 127.0.0.1
mahou.alcomat.com. IN A 192.253.253.2
augustiner.alcomat.com. IN A 192.253.253.3
polar.alcomat.com. IN A 192.253.253.4

;
; Meervoudige lokale hosts
;

tubo.alcomat.com. IN A 192.253.253.1
tubo.alcomat.com. IN A 192.249.249.1

;
; Aliassen
;

edel.alcomat.com. IN CNAME augustiner.alcomat.com.
pol.alcomat.com. IN CNAME polar.alcomat.com.
tu.alcomat.com. IN CNAME tubo.alcomat.com.
tub249.alcomat.com. IN A 192.249.249.1
tub253.alcomat.com. IN A 192.253.253.1



De eerste twee blokken zijn geen verrassing. De "A" geeft het adres aan en elke resource record verbindt een naam aan een adres. Tubo fungeert als een Router en er zijn twee adressen verbonden aan zijn naam - daarom zijn er ook twee resource records opgenomen.


Het derde blok bevat de alias tabel. Voor de eerste twee aliasnamen zullen we een "CNAME" (volledig gekwalificeerde host naam) resource record aanmaken. Daarnaast zullen we ook adres records aanmaken voor de andere twee aliasnamen.


Als een Name Server op zoek gaat naar een naam en een corresponderend CNAME-record vindt, vervangt het de naam met de host naam van de eerste orde en gaat verder met het zoeken met de nieuwe naam. Als bijvoorbeeld de Name Server op zoek is naar de naam "tu" en een CNAME-record vindt met een verwijzing naar "tubo" , dan wordt verder gezocht naar "tubo" en worden de adressen 192.249.249.1 en 192.253.253.1 gerapporteerd.

De laatste twee regels lossen een speciaal probleem op. Stel dat we een gateway "tubo" hebben en dat je één van de interfaces wil testen. Een populaire methode is om een "ping" te sturen naar de interface om vast te stellen of deze reageert. Als je een "ping tubo" verstuurt, rapporteert de Name Server beide interfaces. In onze tabel hebben we geen aliasnamen opgenomen voor tub249 en tub253, omdat het er in zou resulteren dat beide adressen worden gerapporteerd als de aliasnaam wordt opgevraagd. Om dit te vermijden gebruiken we alleen het adresrecord "A" om de twee interfaces te identificeren. Om vast te stellen dat tubo's interface 192.249.249.1 operationeel is sturen we een "ping tub249", omdat deze slechts aan 1 adres is gekoppeld. Het werkt hetzelfde voor "tub253".

We kunnen hier een algemene regel aan ontlenen:

Als een host meer dan 1 netwerkinterface heeft (multihomed host), wordt een adres record "A" aangemaakt voor elke aliasnaam die uniek gekoppeld is aan een adres.

Even afgezien van het voorgaande, gebruik geen namen als tub249 of tub253 om gebruikers te identificeren. Deze dienen alleen voor systeembeheer en hebben geen nut voor gebruikers.

 

PTR Records
Nu zullen we de adressen aan de namen koppelen. Het named.249 bestand koppelt adressen aan hostnamen voor het netwerk 192.249.249. Het resource record voor deze koppeling is het PTR (pointer) record. Er is een record voor elke host op dit netwerk. (Onthoudt dat in DNS gezocht wordt naar namen voor adressen). Het adres wordt in omgekeerde volgorde geplaatst en het in-addr.arpa bestand wordt er aan gekoppeld.

De volgende PTR records bestaan voor het 192.249.249 netwerk.


PTR record

1.249.249.192.in-addr.arpa. IN PTR tubo.alcomat.com.
2.249.249.192.in-addr.arpa. IN PTR whisky.alcomat.com.
3.249.249.192.in-addr.arpa. IN PTR brandy.alcomat.com.
4.249.249.192.in-addr.arpa. IN PTR vodka.alcomat.com.


We herinneren ons nog dat tubo twee adressen heeft, omdat deze twee netwerk interfaces bezit. Desondanks verschijnt er slechts één, omdat in dit bestand alleen de rechtstreekse koppeling naar het 192.249.249 netwerk bevat en tubo daar slechts 1 verbinding heeft met de interface 192.249.249.1. Het werkt hetzelfde voor het named.253 bestand.

 

(5.3) De volledige bestanden voor ons fictieve domein

 

De hosts tabel voor het alcomat.com domain

named.hosts

alcomat.com. IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL van 1 week
;
; Onze Name Servers
;

alcomat.com.        IN NS augustiner.alcomat.com.
alcomat.com.        IN NS tubo.alcomat.com.

;
; Host-addressen
;

localhost.alcomat.com. IN A 127.0.0.1
mahou.alcomat.com. IN A 192.253.253.2
augustiner.alcomat.com. IN A 192.253.253.3
polar.alcomat.com. IN A 192.253.253.4
whisky.alcomat.com. IN A192.249.249.2
brandy.alcomat.com.IN A192.249.249.3
vodka.alcomat.com.IN A192.249.249.4

;
; Meervoudige lokale hosts
;

tubo.alcomat.com. IN A 192.253.253.1
tubo.alcomat.com. IN A 192.249.249.1

;
; Aliassen
;

edel.alcomat.com. IN CNAME augustiner.alcomat.com.
pol.alcomat.com. IN CNAME polar.alcomat.com.
tu.alcomat.com. IN CNAME tubo.alcomat.com.
tub249.alcomat.com.  IN A 192.249.249.1
tub253.alcomat.com. IN A 192.253.253.1



De named.249 en named.253 bestanden voor het koppelen van adressen aan host namen

named.249

249.249.192.in-addr.arpa. IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL van 1 week
;
; Name Servers
;
249.249.192.in-addr.arpa.     IN NS  augustiner.alcomat.com.
249.249.192.in-addr.arpa.      IN NS  tubo.alcomat.com.

;
; Addressen naar name map
;
1.249.249.192.in-addr.arpa.   IN PTR tubo.alcomat.com.
2.249.249.192.in-addr.arpa.   IN PTR whisky.alcomat.com.
3.249.249.192.in-addr.arpa.   IN PTR brandy.alcomat.com.
4.249.249.192.in-addr.arpa.   IN PTR vodka.alcomat.com.



named.253

253.253.192.in-addr.arpa.IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL van 1 week
;
; Name Servers
;
253.253.192.in-addr.arpa.     IN NS  augustiner.alcomat.com.
253.253.192.in-addr.arpa.      IN NS  tubo.alcomat.com.

;
; Addressen naar name map
;
1.253.253.192.in-addr.arpa.   IN PTR tubo.alcomat.com.
2.253.253.192.in-addr.arpa.   IN PTR mahou.alcomat.com.
3.253.253.192.in-addr.arpa.   IN PTR augustiner.alcomat.com.
4.253.253.192.in-addr.arpa.   IN PTR polar.alcomat.com.



De loopback adressen

Een Name Server heeft een aanvullend bestand nodig voor het "loopback netwerk": named.local. Dit is het adres dat hosts gebruiken voor verkeer met zichzelf. Het loopback netwerk is (bijna) altijd 127.0.0 en het host adres (bijna) altijd 127.0.0.1.

named.local

0.0.127.in-addr.arpa.    IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL van 1 week
;
; Name Servers
;
0.0.127.in-addr.arpa.     IN NS  augustiner.alcomat.com.
0.0.127.in-addr.arpa.      IN NS  tubo.alcomat.com.

;
; Addressen naar name map
;
0.0.127.in-addr.arpa.     IN PTR localhost.



Het named.cache bestand

Dit bestand bevat de adressen en namen van alle root Name Servers op het Internet. Als je je netwerk niet gaat koppelen aan het Internet, is het niet noodzakelijk dit bestand te installeren. Hoewel de BIND software normaal gesproken dit bestand bevat (named.root of named.cache), is het aan te bevelen om het actuele bestand met behulp van anonymous ftp te downloaden van de Internet host ftp.ts.internic.net(198.41.0.5). Omdat dit bestand hetzelfde is voor (bijna) elke Name Server en automatisch wordt geïnstalleerd door BIND, wordt het hier niet verder toegelicht. Het enige wat je moet weten is hoe het bestand heet in jouw BIND versie.


Het boot bestand: named.boot


Tot slot missen we alleen nog een bestand dat al onze database files verbindt, met andere woorden, de Name Server verwacht een bestand waarin aangegeven staat waar het de database files kan vinden. BIND zoekt naar het bestand /etc/named.boot. De database files in ons voorbeeld zijn opgeslagen in de directory /usr/local/named. Je bent vrij om een andere directory te kiezen, maar het wordt aanbevolen om de bestanden niet op te slaan in het root file system vanwege mogelijk gebrek aan opslagruimte.

named.boot

directory       /usr/local/named
primary    alcomat.com                named.hosts
primary    249.249.192.in-addr.arpa   named.249
primary    253.253.192-in-addr.arpa   named.253
primary    0.0.127.in-addr.arpa       named.local

cache      .                          named.cache



Als deze bestanden zijn geïnstalleerd, moet je de "named" deamon activeren in de opstart-scripts van je systeem, zodat het automatisch wordt gestart bij het opstarten van het systeem.    

(5.4) Af- en verkortingen

Tot nu hebben we zeer gedetailleerde bestanden gemaakt om de uitleg te verduidelijken. Normaal gesproken gebruiken we afkortingen en verkortingen.



De oorsprong
De tweede kolom van het "named.boot" boot bestand geeft altijd een domein aan. Dit domein is de sleutel voor de meest gebruikte afkortingen en het toont de oorsprong van alle informatie in deze database file.
De oorsprong wordt gekopped aan alle namen in de bestanden die niet eindigen met een punt! (mahou.alcomat.com zou resulteren in mahou.alcomat.com.alcomat.com). De bron is verschillend voor elke database file.

Het adres van "mahou" voor named.hosts:
mahou.alcomat.com.      IN A    192.253.253.2

zou geschreven moeten kunnen worden als:
mahou                   IN A    192.253.253.2>

We nemen het volgende op in het named.249 bestand:
2.249.249.192.in-addr.arpa.     IN PTR  whisky.alcomat.com.

omdat 249.249.192.in-addr.arpa de bron is, moeten we kunnen schrijven:
2                               IN PTR  whisky.alcomat.com. 

De notatie @
Als de domeinnaam hetzelfde is als de bron, kan het worden herkend met "@". Dit komt veel voor in het SOA record:

@        IN SOA augustiner.alcomat.com. juan.mahou.alcomat.com. (
 1 ; Serial for updates
 10800 ; Refresh after 3 hours
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL of 1 week

Het herhalen van voorgaande namen
Als de eerste kolom van een resource record bestaat uit een tab of een spatie, wordt de naam van het voorgaande resource record. Dit vereenvoudigd het werk als er meerdere resource records zijn voor een naam:

tubo                    IN A 192.253.253.1
                        IN A 192.249.249.1

Tot slot zal ik het named.hosts bestand weergeven met verkortingen. Het is een goede oefening om de wijzigingen aan te brengen in de overige bestanden ;-))

named.hosts (verkort)

@ IN SOA      augustiner     juan.mahou (
 1 ; Serie-nummer voor updates
 10800 ; Ververs (Refresh) elke 3 uren
 3600 ; Retry after 1 hours
 604800 ; Expire after 1 week
 86400 ) ; Minimum TTL van 1 week
;
; Onze Name Servers (de naam @ wordt toegevoegd)
;

                            IN NS augustiner.alcomat.com
                            IN NS tubo.alcomat.com.
; Alleen in dit bestand kan de domeinnaam van de Name Server (alcomat.com) worden 
; oweggelaten, omdat het named.hosts bestand dezelfde oorsprong heeft!

;
; Host addressen
;

localhost                   IN A 127.0.0.1
mahou                       IN A  192.253.253.2
augustiner                  IN A 192.253.253.3
polar                       IN A 192.253.253.4
whisky                      IN A192.249.249.2
brandy                      IN A192.249.249.3
vodka                       IN A192.249.249.4

tubo                        IN A 192.253.253.1
                            IN A 192.249.249.1

;
; Hosts with multiple residency
;

tub249                      IN A 192.249.249.1
tub253                      IN A 192.253.253.1

;
; Aliassen
;

edel                        IN CNAME augustiner
pol                         IN CNAME polar
tu                          IN CNAME tubo



 

(5.5) De Resolve Library

De tegenpool van de Name Server is de Resolve Library, die bestaat uit een groep functies die behoren tot de standaard "C" libraries onder Linux. De meest belangrijke Resolve routines zijn:

Het belangrijkste bestand is host.conf, dat de Resolve functies beheert. Het is te vinden in de directory /etc en bepaalt onder andere welke services in welke volgorde worden aangeroepen door de resolver.
Voor ons fictieve netwerk hebben we twee opties nodig: order en multi.

Het /etc/host.conf bestand in ons voorbeeld maakt aan de Resolver duidelijk om eerst de DNS te gebruiken en vervolgens het /etc/hosts bestand.

/etc/host.conf

# /etc/host.conf
# We gebruiken named en de host tabel:/etc/hosts
order   bind hosts
# We staan meerdere adressen toe (alleen voor /etc/hosts)
multi   on



Omdat onze Resolver gebruik maakt van DNS, moeten we het vertellen welke Name Server het moet raadplegen. Hiervoor is het bestand resolv.conf in het leven geroepen.
De belangrijkste optie in resolv.conf is nameserver, welke de corresponderende Name Servers aangeeft. Tot drie Name Servers kunnen ingevoegd worden. Het is aan te bevelen de meest betrouwbare Name Server op de eerste plaats te zetten, omdat ze in volgorde worden geraadpleegd.
Er zijn twee bijkomende opties - domain en search - die domeinnamen aangeeft die gekoppeld worden aan een hostnaame in het geval de Resolver het adres niet weet. In ons voorbeeld betekend dit dat wanneer je "ftp mahou" invoert, "alcomat.com" automatisch wordt toegevoegd. Je hoeft dan niet de volledige naam in te voeren. Het verschil met de hiervoor genoemde opties is dat de optie domain slechts 1 domein toestaat, terwijl search er meerdere accepteert . Het nadeel van een lange lijst domains is een langere zoektijd.

/etc/resolv.conf

# /etc/resolv.conf

# Het Alcomato Distributions domain

domain alcomat.com

#

# De Name Server

# Het is verstandig om het IP-adres van je Internet service

# provider als tweede adres op te nemen

nameserver 192.253.253.1



 

(5.6)Testen van je setup met nslookup

Voordat we de nslookup tool gebruiken, die gebruik maakt van BIND, gaan we na of er syslog errors bestaan. Als je alles zo hebt ingesteld dat "named" automatisch start tijdens het booten van het systeem, en er een boodschap van "named" wordt getoond, dan is het actief. In het geval je "named" het liever handmatig start, gebruik dan het volgende commando:

# /etc/named -b /etc/named.boot (alleen root heeft hier de rechten voor)

Met het commando:
# grep daemon /etc/syslog.conf


zou iets dergelijks getoond moeten worden
*.err;kern.debug;daemon,auth.notice /var/adm/messages or /var/log/messages
dit vertelt je, afhankelijk van je distributie, dat de syslog boodschappen kunnen worden gevonden in de /var/adm/messages of /var/log/messages bestanden.

Met het commando
# grep named /var/adm/messages (/var/log/messages)

zou bijvoorbeeld iets als het onderstaande getoond moeten worden
Feb 12 21:16:48 tubo named [3221]: starting (or restarted)

Als zich een fout heeft voorgedaan, verschijnt, bijvoorbeeld, onderstaande boodschap
Feb 12 21:16:48 tubo named [3221]: named hosts Line 15: database format error (192.249.249.3), die een indicatie geeft van het bestand en de regel waarop de fout zich heeft voorgedaan.

Na het oplossen van de fouten, geef je het commando
# kill -HUP 'cat /etc/named.pid'
zodat de Name Server de database files opnieuw zal inlezen.

Test met gebruik van nslookup

Met nslookup kan elk type resource record worden onderzocht en naar elke Name Server worden gezonden. Hier behandelen we alleen de elementaire tests.

Lokale tests:

Het onderzoeken van een lokale host name:

# nslookup vodka
Server: tubo.alcomat.com
Address: 192.253.253.1

Name: vodka.alcomat.com
Address: 192.245.245.4

het onderzoeken van een lokaal adres:

# nslookup 192.245.245.2
Server: tubo.alcomat.com
Address: 192.253.253.1

Name: whisky.alcomat.com
Address; 192.245.245.2



Als het resultaat van de tests is zoals hierboven weergegeven, dan werkt de Name Server correct voor je domein.

Tests voor een host op afstand:
In het geval je netwerk is verbonden met het Internet, is het het beste om het nslookup commando te gebruiken voor een test op een host op afstand.

De test voor de naam van een host op afstand:

# nslookup ftp.uu.net
Server: tubo.alcomat.com
Address: 192.253.253.1

Name: ftp.uu.net
Address: 192.48.96.9

De test voor een adres op afstand:

# nslookup 192.48.96.9
Server: tubo.alcomat.com
Address: 192.253.253.1

Name: ftp.uu.net
Address: 192.48.96.9



Als de test slaagt is de Name Server in staat root Name Servers (bestand: named.cache) te vinden en contact met hen op te nemen om informatie op te vragen over hosts op afstand.

Aanvullende informatie (engels):





<--, Terug naar de titelpagina van dit nummer

Site onderhouden door het LinuxFocus editors team
© Andreas J. Gundacker, FDL
LinuxFocus.org
Vertaling info:
en --> -- : Andreas J. Gundacker <AJGundi/at/aol.com>
en --> nl: Christ Verschuuren <cjmversch/at/netscape.net>

2004-03-04, generated by lfparser version 2.43