original in en Andreas J. Gundacker
en to nl Christ Verschuuren
De auteur schreef dit artikel voor de Duitse Linux-Magazin.
Hij gaf ons toestemming om het over te nemen.
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.
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.
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.
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:
Definiëren van datagrammen: Om een bestand over een netwerk te zenden, wordt dit gesplitst in kleinere delen, dat wil zeggen datablokken of data pakketten.
Vaststellen van het internet adres: IP neemt deze informatie op in de header (koptekst in het data pakket), tesamen met de eigen identificatiegegevens.
Routeren van de datagrammen naar de computer op afstand: als een datagram wordt verzonden naar een computer die zich niet op hetzelfde netwerk bevindt, wordt het verzonden door de gateway naar de aangegeven bestemming.
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 host naam: Einstein
Het IP adres: 149.176.17.7
En het hardware adres. In dit geval is dat een Ethernet kaart met het unieke adres 0x95c0c02.
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:
Het netwerk adres
En het adres van de computer (host) op het netwerk
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:
Class A: 10.0.0.0
Class B: 172.16.0.0 tot 172.31.0.0
Class C: 192.168.0.0
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.
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.
We spreken over byte stromen, omdat TCP data beschouwt als een eenheid van ononderbroken pakketten, in plaats van een reeks onafhankelijke pakketten.
Het is gericht op betrouwbaarheid, omdat het vaststelt of alle datagammen zijn aangekomen. In het geval een pakket verloren is gegaan, zal de zender dit opmerken en de verloren pakketten opnieuw versturen totdat alle pakketten zijn aangekomen.
Gericht op verbindingen betekent dat TCP een logische verbinding tot stand brengt tussen twee computers, op zodanige wijze dat TCP, voordat de overdracht van de datagrammen begint, controle-informatie uitwisselt tussen de zender en de ontvanger om de verbinding te initialiseren (vaststellen dat ongestoorde overdracht mogelijk is).
Op die manier waarborgt TCP een juiste overdracht van de data.
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.
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
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 |
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.
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.
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. |
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.
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 |
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 |
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 |
het onderzoeken van een lokaal adres: |
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: |
De test voor een adres op afstand: |
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):
TCP/IP Network Administration: Craig Hunt; O´Reilley; 1992
DNS and BIND: Paul Albitz & Cricket Liu; O´Reilley; 1997
LINUX Network Administrator´s Guide: Olaf Kirch; O´Reilley; 1995
Project Web: Jon Udell, BYTE, December 1997