Dns

Uit Linuxdocs.nl
Ga naar: navigatie, zoeken

Het maken en opzetten van een DNS server.

door: Michaell Bakker
Versie: 08-06-2009



Wat is DNS?

DNS staat voor: Domain Name System.
DNS zorgt ervoor dat een IP adres word omgezet in een naam en andersom.

Elke computer op het internet heeft een zogenaamd IPnr. Zie dit als een woon-adres. Elk huis in Nederland heeft een uniek adres, waarmee o.a. de TNT precies kan vinden waar de post voor welke persoon naartoe moet.
Zonder adres zou elke woning gewoon onvindbaar zijn.

Op het internet werkt het feitelijk net zo. Onze virtuele postbode moet weten waar alle data pakketjes naartoe moeten op het internet. Op het internet zijn alle computers net zoals jouw woning ook voorzien van een uniek adres. Dit noemen wij het IP-adres.
Een adres op het internet ziet er zo uit: 192.168.0.12

Elke computer heeft een uniek IP-adres waardoor onze virtuele postbode weet waar jouw data heen moet. Helaas zijn computer adressen vrij lastig te onthouden, maar daar heeft men iets op gevonden!

De DNS server is verantwoordelijk voor het eenvoudiger maken van computer adressen.
Zo is b.v. webwereld.nl te vinden op adres: http://213.244.172.155, maar je moet er niet aan denken dat je dit telkens moet invoeren.
DNS zorgt ervoor dat jij gewoon kan invullen: www.webwereld.nl om deze site te bezoeken. Op de achtergrond, zonder dat je het doorhebt vertaald DNS www.webwereld.nl in: http://213.244.172.155. Dit laatste is immers wat de computer wel weer begrijpt.

DNS speelt inmiddels een zeer cruciale rol op het internet. Zonder DNS zou internet op deze schaal nooit een succes worden en een langzame dood sterven.
DNS heeft dus het voordeel dat je eenvoudig over het internet kan surfen. Het nadeel is echter voor mensen met een inbelmodem dat het internet iets trager is.
Je zit achter je pc en voert in: www.linuxdocs.nl. Je pc denkt echter: "Wat is dat nou weer". en vraagt dit aan de DNS server. De DNS server zegt weer: "Oh, maar dat weet ik wel. Dat is: "http://82.94.214.144". En vervolgens vraagt jouw pc zonder dat je het doorhebt niet www.linuxdocs.nl op, maar http://82.94.214.144.
Dit vragen en antwoorden aan de DNS server heeft ietsjes tijd nodig. Mensen die inbellen kunnen dit zeker merken, maar tegenwoordig met aDSL en glasvezel internet merk je hier helemaal niks meer van.
het nadeel is wel weer dat het gehele proces iets langer duurt en dan met name als je een trage verbinding hebt.

In deze handleiding zal ik je laten zien hoe een DNS server werkt en hoe je deze zelf ook kan bouwen onder Linux.


DNS server installeren:

In de meeste Linuxen van vandaag zit de DNS server (named of bind9) standaard geïnstalleerd.
Dit hoeft echter niet bij jouw het geval te zijn. Er zijn diversen manier om deze te installeren, maar die verschillen per Linux.
Ik ga er dan ook van uit dat je vanuit de broncode installeerd, gezien dat hetzelfde is voor elke Linux.

Voor het compilen vanuit de broncode heb je het volgende nodig:

  • De GNU C Compiler (Pakketnaam: gcc).
  • De make tools (pakketnaam make).
  • Het achiefprogramma tar en/of bzip2 (Pakketnamen tar en bzip2).

Als je over het bovenstaande beschikt, download dan de broncode van bind vanaf: http://ftp.isc.org/isc/bind9/

Het installeren gaat als volgt:

(1: Ga naar de map waar je het bestand hebt gedownload (in dit voorbeeld /usr/src).
[root@linuxdocs ~]# cd /usr/src

(2: Pak het bestand uit met tar:
[root@linuxdocs src]# tar -xvzf bind-versie.tar.gz

(3: Ga naar de nieuwe bind map en configureer de software voor jouw pc:
[root@linuxdocs src]# cd bind-versie
[root@linuxdocs bind]# ./configure
                       ^Inc. de punt
							  
(4: Compile en installeer de software:
[root@linuxdocs bind]# make && make install

(5: Start de server:
[root@linuxdocs.nl]# named &
[root@linuxdocs bind]# exit
[gebruiker@linuxdocs.nl ~]$ _

Caching only name server:

Normaal gesproken zal jouw computer altijd aan de DNS server van jouw internet aanbieder vragen wat het IP-adres is van de website die jij wilt opvragen.

Nou is het wat makkelijker om jouw PC/locale server in te zetten als DNS server, zodat niet elke keer een verbinding hoeft te worden gemaakt met de DNS van jouw internet provider.

Je browser haalt nu gewoon het IP op van zichzelf/jouw locale server.
En dat is sneller gepiept waardoor jouw internet ook iets sneller word (zeker met inbelverbindingen!).

Maar is het adres http://www.webwereld.nl niet in jouw DNS database opgenomen dan word er toch nog gekeken bij de DNS server van jouw provider en bij deze word het adres in jouw DNS server automatisch opgeslagen voor de volgende keer dat je de site gaat bezoeken.

Voordat jouw pc/server ook naar zichzelf gaan kijken voor DNS requests, moeten we even de IP-gegevens van de betreffende pc aanpassen.
Dit kan op veel manieren en verschilt iets per Linux distro. Over het algemeen kun je dit vinden onder je "start" menu.
Voor mij onder KDE en Debian Lenny is dit te vinden onder: Kmenu->Instellingen->Internet en netwerk->Netwerkinstellingen.
Klik hier op de tab: Domain Name System. Hier moet je op de eerste plaats invullen: 127.0.0.1 (Of het adres van jouw locale server).

Vervolgens kunnen wij de server starten en testen.

[root@michaell.nl root]# named &
[root@michaell.nl root# nslookup webwereld.nl
Server localhost
Address 127.0.0.1

Name: webwereld.nl
Address 192.172.237.101

als dit werkt dan werkt jouw caching only name server perfect.</p>


Eigen domein:

Natuurlijk kunnen we met NAMED veel meer. Zo is het ook mogelijk om domeinen te maken voor jouw lokale netwerk.<br Let wel: Dit domein zal niet bereikbaar zijn vanaf het internet.

In dit voorbeeld gaan we domein michaell.lan maken wat verwijst naar IPnr 192.168.0.1.

Named maakt gebruik van een configuratiebestand waar alle instellingen uit gehaald worden voor de server. In dit bestand gaan we ons domein maken.

Edit het configuratiebestand van Named in: /etc/named.conf.

[root@linuxdocs root]# emacs /etc/named.conf

Zet in dit bestand de volgende regels:

zone "michaell.lan"{
type master;
file "michaell.lan";
};

De bovestaande regels vertellen het volgende:

  • Zone: De naam van het domein.
  • Type:In dit geval kiezen we voor Master. Dit geeft aan dat dit om een zelfstandig domein gaat die niet van een andere server afgehaald hoeft te worden (slave).
  • File: Geeft de bestandsnaam aan van het records bestand. Dit is het bestand met alle domeingegevens zoals o.a. IP-adressen van dit domein.

Nu gaan we het bestand michaell.lan aanmaken waar de gegevens van ons domein in komen te staan. Deze moet zich bevinden in de map: /var/named

[root@michaell.nl root]# cd /var/named
[root@michaell.nl named]# _

Maak een bestand aan genaamt "michaell.lan"

[root@michaell.nl named]# vim michaell.lan

Plaats in dit nieuwe bestand de volgende regels:

$ttl 38400
michaell.lan.	IN	SOA	Server1.michaell.lan. (
1244189332
10800
3600
604800
38400 )
michaell.lan.				IN NS	Server1.michaell.lan.
michaell.lan.  			IN NS Server2.michaell.lan
michaell.lan.				IN	A	192.168.60.1
www							IN	A	192.168.60.2
ftp							IN	A	192.168.60.2
pop                                                  IN      A       192.168.60.2
server1                                              IN      A       192.168.60.1
server2						IN	A	192.168.60.2
imap							IN	A	192.168.60.1
smtp							IN	A	192.168.60.1
mail							IN	A 	192.168.60.2
smtp.michaell.lan.			IN	MX	1 smtp.chipsolutions.lan.
mail.michaell.lan.		IN MX 2 mail.michaell.lan
*								IN	A	192.168.60.2
dbase							IN A  192.168.60.1

Deze regels betekenen het volgende.

  • $ttl: Staat voor Time To Live. Geeft aan om de hoeveel seconden dit domein ververst moet worden voor andere name servers.
  • SOA: Staat voor Start Of Authority. Deze geeft aan van welke server het beste gegevens afgelezen kunnen worden. Dit doet alleen echt iets als je meerdere name servers gebruikt.
  • 1244189332: Het serienummer van de server (verplicht, maar mag jezelf verzinnen).
  • 10800: Om hoeveel seconden moet dit domein ververst worden bij andere DNS servers.
  • 3600: Als een DNS update faalt, dan zal om dit aantal seconden een 2e poging gedaan worden. Zet dit niet al te laag of te hoog.
  • 604800:De geldigheid van dit domein verloopt op dit aantal seconden. Geen zorgen, dit verlengt zichzelf ook gelijk weer.
  • 38400:De geldigheid van bovenstaand domein kan verlengt worden met dit aantal seconden.
  • NS: Staat voor Name Server. Deze records geven aan welke server een DNS server is voor dit domein (er mogen meerdere ns records zijn).
  • MX: Staat voor Mail eXange. Dit is de server waar e-mail bij afgeleverd moet worden voor dit domein. Dit heeft niks te maken met het ophalen en verzenden van e-mail. Dit is voor als een e-mailtje binnenkomt. De 1 die hier bij staat geeft de prioriteit aan. Het is aan te bevelen om altijd 2 MX servers te hebben. Als een server off-line is, dan kan er nog steeds e-mail aankomen.
  • A: Geeft aan welk IP-adres voor welk (sub)domein geld.

Bewaar dit bestand. In vi doe je dit in de commando modus met :wq.

Herstart nu NAMED

[root@michaell.nl named]# killall named
[root@michaell.nl named]# named &

Test het domein via een nslookup:

[gebruiker@linuxdocs.nl named]$ nslookup michaell.nl
server localhost
adress 127.0.0.1

name: michaell.lan
adress: 192.168.60.1

Als je dit ziet werkt alles correct.

Een internet DNS server maken.

Bovenstaand voorbeeld is alleen in jouw eigen netwerk toegankelijk.
Dit komt, omdat jouw DNS server niet bekend is bij de rest van de wereld en dit is aan de andere kant maar goed ook.
Internet zou immers een puinhoop worden als iedereen zijn eigen domeinen ging verzinnen en direct on-line zetten.

Wil je echter wel een echte server runnen, dan moet je aan de volgende basis voorwaarden voldoen:

  1. Je moet je domein en DNS servers registreren bij de Stichting domein registratie Nederland.*
  2. Je moet minimaal 2 fysieke DNS servers (1x master en 1x slave) hebben die jouw domein on-line houden.
  3. Je DNS servers moeten elke een eigen IP-adres hebben die direct vanaf het internet toegankelijk zijn.
  4. Ervoor zorgen dat jouw servers door de SIDN checklist heen komen. Dit kun je testen vanaf de SIDN website.
  5. Je DNS servers moeten altijd aan staan. Omdat je minimaal 2 servers hebt heb je wel wat speling wat dit betreft, maar down-time moet echt voorkomen worden. Als DNS niet werkt, zijn al jouw domeinen namelijk onbereikbaar.
  6. Je servers moeten bereikbaar zijn. Dit lijkt zeer logisch, maar DNS servers moeten direct op het publieke IP-adres bereikbaar zijn. Als je b.v. een router ertussen hebt staan, dan zijn je servers niet bereikbaar van buitenaf. Zorg ervoor dat je in ieder geval UDP poort 53 en TCP/UDP poort 953 doorstuurt naar de DNS server.

*: Om een domeinnaam te mogen registreren moet je een SIDN deelnemer zijn. Dit is echter alleen mogelijk voor bedrijven. Je kan wel een .nl domein registreren, maar dan moet je voor dit doel een SIDN deelnemer vragen dit voor jouw te doen. Dit kan in de meeste gevallen gewoon bij jouw internet provider zoals XS4ALL.

Het is echter niet nodig om een eigen DNS server te hebben. Je kan ook bij hosting provider byte (www.byte.nl) een domein registreren en deze gewoon naar jouw server laten verwijzen.
Dit heeft als grote voordeel dat je geen eigen DNS servers hoeft te onderhouden. Dit doet in dit geval Byte wel voor jou en het is stukken goedkoper dan een compleet hosting pakket.Op die manier heb je ook jouw eigen domein op jouw persoonlijke server.

Zorg er echter wel voor dat als je een publieke server runt dat deze goed beveiligd is. Je zet namelijk een server op die voor iedereen toegankelijk moet zijn. Om deze reden raad ik het feitelijk ook af om een eigen server te starten op het internet, tenzij je echt wel weet wat je doet.
Let op: Van sommige internet providers mag je geen eigen server draaien! Neem contact op met je provider als je twijfelt.



How-TO's | Hoofdpagina | Linux Nieuws | Externe links | Help