Het Domain Name System (DNS) uitgelegd

Als je een domeinnaam registreert, bijvoorbeeld om deze naar een website te verwijzen of voor het ontvangen van e-mail te gebruiken, dan maak je gebruik van DNS: het Domain Name System. Dit systeem is één van de belangrijkste bouwstenen van het moderne internet. Zonder DNS zou het gebruik van een domein namelijk niet mogelijk zijn.

DNS uitgelegd: wat is het Domain Name System?

Als je wat vertrouwd bent met het internet en websites, dan heb je waarschijnlijk al een aardig idee van wat DNS precies inhoudt; het vertalen van een domeinnaam naar een IP-adres. Echter, de ervaring leert dat dit ingewikkelde en abstracte systeem voor zowel beginnende als gevorderde gebruikers een bron van verwarringen en uitdagingen kan zijn.

Zodoende nemen we in dit artikel een kijkje in op de opzet en werking van DNS, en hoe dit verbonden is met jouw domeinnaam, website en e-mail. Het doel hierbij is niet zozeer verdieping, maar het toelichten van de verbanden en samenhang van DNS. Het is immers een cruciaal onderdeel van het internet.

Basisprincipes

Het zijn vragen die we vaak zien op Support. Wat is DNS precies? Hoe werkt DNS? Hoe kan ik mijn DNS-records aanpassen? Klanten komen in aanraking met DNS wanneer ze gevorderde wijzigingen willen maken in de manier waarop een domeinnaam werkt. Ze willen bijvoorbeeld een subdomein gebruiken voor de eigen thuisserver of gebruik maken van een externe Exchange-omgeving, zoals Office 365 of G Suite.

In zo’n situatie worden er vaak inhoudelijke instructies meegegeven vanuit de leverancier of een handleiding; “Wijzig jouw DNS-records als volgt:”. Echter, simpele instructies zijn voor het instellen van aangeleverde waardes niet hetzelfde als inhoudelijke uitleg. Mensen bezitten wel de ruwe data die ze moeten instellen, maar weten doorgaans niet waarom en hoe dit werkt.

Een veelgebruikte basisdefinitie van DNS is als volgt:

Het Domain Name System (DNS) is het systeem en netwerkprotocol dat op het Internet gebruikt wordt om namen van computers naar numerieke adressen (IP-adressen) te vertalen en omgekeerd.” (bron: nl.wikipedia.org)

Vanzelfsprekend correct, maar dit kan simpeler verwoord worden. DNS is het systeem dat ervoor zorgt dat jouw computer weet naar welke server op het internet een aanvraag moet worden verstuurd sturen, wanneer je een domeinnaam gebruikt om een website te vinden.

Dit gaat, zoals de definitie ook noemt, op basis van een IP-adres. DNS helpt je (computer) om het correcte IP-adres bij een domeinnaam te vinden. Het IP-adres dat hieruit naar voren komt, wordt vervolgens door netwerkprotocollen gebruikt om een aanvraag via de juiste route over het internet te sturen.

Het telefoonboek

Om het principe van DNS tastbaarder te maken, wordt het systeem vaak vergeleken met een adresboek of telefoonboek. Dit is in veel gevallen dan ook de gemakkelijkste vergelijking om de functie en werking van DNS te begrijpen, zonder dat kennis van technische termen en principes vereist is.

De simpelste vergelijking is een telefoonboek. Je opent het telefoonboek en zoekt jouw naam op, bijvoorbeeld antagonist.nl. Vervolgens staat erachter die domeinnaam een IP-adres, in dit geval is dat 195.211.73.208. Done!

DNS uitgelegd: het telefoonboek van het internet

Die uitleg voldoet meestal. Echter, DNS is in veel gevallen complexer dan dat. Een manier om die complexiteit te volgen, is het geven van verschillende technische definities. Maar wat ik in dit artikel liever doe, is de simpele vergelijking uitbreiden.

Meerdere telefoonnummers

Zoals een persoon of bedrijf namelijk verschillende telefoonnummers kan hebben, kan een domeinnaam ook verschillende IP-adressen gebruiken. Zo kan het zijn dat antagonist.nl via meerdere IP’s te benaderen is.

Daarnaast kunnen ook verschillende onderdelen van een domeinnaam afzonderlijke doelen hebben en daarmee dus afzonderlijke IP-adressen. Zo gebruikt onze mailserver (mail.antagonist.nl) ook het antagonist.nl domein, maar verwijst deze naar een ander IP-adres: 141.138.168.81. Zo krijg je al snel een verzameling van namen voor antagonist.nl in het ‘Adresboek’, in het DNS:

  • antagonist.nl 195.211.73.208
  • www.antagonist.nl 195.211.73.208
  • mail.antagonist.nl 141.138.168.81
  • mijn.antagonist.nl 195.211.73.55

Zo’n verzameling van namen onder hetzelfde domein wordt ook wel een ‘DNS-zone’ genoemd. Een DNS-zone is te vergelijken met een enkele vermelding van bijvoorbeeld een bedrijf in het telefoonboek die één of meerdere nummers (DNS-records) kan bevatten. Daarnaast kan een DNS-record ook in plaats van een IP-adres naar een andere naam (hostname) verwijzen.

De DNS-zone voor een domein bevat dus DNS-records die kunnen verwijzen naar een IP-adres of een andere naam. So far so good! We zijn er echter nog niet. Dit is slechts het topje van de DNS-ijsberg. De DNS-records die in een zone staan, hebben namelijk ook verschillende smaken.

DNS-records en record-types

Hoe weet de e-mailserver, wanneer je iemand een e-mail stuurt, welk IP-adres uit de DNS-zone gebruik moet worden? Dat is een simpel voorbeeld; en het antwoord is te vinden in de verschillende types DNS-records. Om de vergelijking met een tastbaarder voorbeeld aan te houden; wanneer je het telefoonnummer van een bedrijf opzoekt, kan het zijn dat er meerdere nummers worden gegeven. Bijvoorbeeld een telefoonnummer voor offertes en een telefoonnummer voor support. Dat kan er bijvoorbeeld zo uitzien:

Klusbedrijf Voorbeeld & Zn.

  • Offertes: 0612345678
  • Administratie: 0612345690
  • Spoedklussen: 0612345689

Dankzij de extra informatie weet je als beller welk nummer je moet hebben, wanneer je een administratieve vraag hebt of een offerte wilt aanvragen.

DNS gebruikt een soortgelijk systeem om verschillende DNS-records en diens doel te onderscheiden. Zoals je in het voorbeeld ‘Administratie’ ziet staan, kun je in een DNS-zone een DNS-record met het ‘type’ MX (Mail eXchange) terugvinden. Dit geeft aan dat het ‘doel’ dat in dat DNS-record genoemd wordt, gebruikt dient te worden voor het afleveren van e-mails. Als jouw mailserver een e-mail wil versturen aan bijvoorbeeld support@antagonist.nl, dan kijkt deze in de DNS wat het MX-record is voor antagonist.nl:

antagonist.nl. MX 1 ASPMX.L.GOOGLE.COM.
antagonist.nl. MX 10 ASPMX2.GOOGLEMAIL.COM.
antagonist.nl. MX 5 ALT1.ASPMX.L.GOOGLE.COM.
antagonist.nl. MX 10 ASPMX3.GOOGLEMAIL.COM.
antagonist.nl. MX 5 ALT2.ASPMX.L.GOOGLE.COM.

Waarom is dit nuttig om te weten? Stel je hebt een domeinnaam en je wilt de e-mail voor dit domein via een externe e-maildienst, zoals G Suite of Office 365, laten verzorgen. Je weet dan dat je in ieder geval het MX-record voor jouw domein moet aanpassen om te zorgen dat berichten op de juiste plek worden afgehandeld. Merk je dat jouw e-mail niet goed aankomt? Controleer dan of het MX-record wel goed is ingesteld.

Zoals het MX-record een type DNS-record is, zijn er ook nog andere veel voorkomende varianten die je tegenkomt, als je DNS beheert of wilt wijzigen.

A-record

Een A-record, ook wel ‘Address record’ is het meest voorkomende en simpelste type DNS-record. Vaak gebruikt als schoolvoorbeeld van DNS. Een A-record zet een domeinnaam om in een IP-adres en heeft de vorm:

antagonist.nl. A 195.211.73.208

AAAA-record

Een AAAA-record is het jongere broertje van het A-record. Dit recordtype vervult dezelfde functie, maar dan voor IPv6-adressen in plaats van IPv4-adressen. Een AAAA-record heeft bijvoorbeeld de vorm:

antagonist.nl. AAAA 2a03:3c00:a001:7005::1

CNAME-record

Een CNAME-record of ‘Canonical Name record’ geeft aan dat een naam een alias is voor een andere naam. Als iemand het adres waarvoor de CNAME is ingesteld opvraagt in de DNS, dan krijgt deze als antwoord de doelnaam terug. Vervolgens is er een tweede DNS-aanvraag nodig om die te herleiden tot een IP. Een interessante restrictie is dat een CNAME-record alleen ingesteld kan worden voor een subdomein. Dit kan dus wel voor www.antagonist.nl, maar niet voor antagonist.nl. Een voorbeeld:

www.antagonist.nl. CNAME antagonist.nl.

TXT-record

Een TXT-record, ofwel een ‘Text record’, wordt gebruikt om tekst in een DNS-zone op te nemen. Dit record-type kan bijvoorbeeld gebruikt worden voor verificatie-doeleinden, zoals om het eigendom van een domein aan te tonen bij registratie. Daarnaast wordt het TXT-record gebruikt voor ‘officieuze’ DNS-records, zoals bijvoorbeeld een SPF-record, die geen eigen DNS-recordtype heeft. Een voorbeeld van een TXT-record (met SPF-data) is bijvoorbeeld:

antagonist.nl. TXT "v=spf1 a mx a:mail.antagonist.nl
a:mijn.antagonist.nl a:support.antagonist.nl
include:cmail1.com include:_spf.google.com
include:amazonses.com ip4:93.180.69.11 ip4:93.180.69.12 ip4:93.180.69.13
include:utility.openprovider.nl ?all"

NS-record

Het NS-record of ‘Nameserver record’ wordt gebruikt om aan te duiden welke nameservers ‘Authoritative’ zijn voor de domeinnaam. Anders gezegd, in deze records staat welke nameservers ‘de baas’ zijn over de inhoud van de DNS-zone voor een domein. Dit is belangrijk, omdat DNS een gedistribueerd systeem is. Meer hierover bespreken we bij het volgende punt.

De overige record-types worden minder vaak gebruikt of gewijzigd. Informatie hierover kun je terugvinden in dit Wikipedia-artikel.

Nameservers

In de bovenstaande punten hebben we het gehad over de DNS-zone die uit DNS-records met verschillende typen bestaat. Deze DNS-records worden gebruikt om jouw domein te vertalen naar een IP-adres, dat weer in de routing gebruikt kan worden om de juiste verbindingen te maken over het internet.

DNS uitgelegd: het internet

Hierbij wordt de DNS-zone beschreven als een vermelding in een adresboek of telefoonboek en de verschillende DNS-records als waarden, bijvoorbeeld telefoonnummers, waar deze vermelding uit bestaat.

De volgende stap gaat de andere kant op en kijkt naar het ‘boek’ zelf. Dit is de Nameserver. De DNS-zone en DNS-records zijn data die op een server staan en opvraagbaar zijn vanaf bijvoorbeeld jouw computer. Nameservers zijn de daadwerkelijke servers waarop deze data wordt opgeslagen, waaraan jouw computer de DNS-aanvraag doet. De nameserver is dus het telefoonboek waarin je opzoekt wat je nodig hebt.

Om een concreet voorbeeld te geven: als je voor antagonist.nl het IP-adres wilt opzoeken, dan vraagt jouw computer dit eerst aan de nameserver(s) van jouw internet provider, ook wel de ‘Resolver’ genoemd. Wellicht weet deze het antwoord en kan deze jouw computer het relevante record teruggeven. Kent de nameserver van jouw provider het betreffende domein niet, dan zal deze de vraag doorzetten naar hoger gelegen nameservers, totdat deze je wel van een antwoord kan voorzien.

DNS uitgelegd: resolver

Dit laatste gedrag wordt recursief genoemd. Een recursieve nameserver voorziet de aanvraag sowieso van een antwoord, door zelf verder te zoeken als deze het antwoord niet kent. Een niet-recursieve (iteratieve) nameserver zal jouw aanvraag beantwoorden met een fout of een doorverwijzing naar een andere nameserver; als deze niet zelf over de juiste DNS-zone beschikt. Het is niet verplicht voor een nameserver om zich recursief te gedragen, maar de nameservers van jouw internetprovider zijn dit in vrijwel alle gevallen wel.

Delegatie

Hierboven wordt beschreven dat nameservers niet per definitie allemaal alle DNS-records bevatten. In het telefoonboek-model kun je dit vergelijken met een telefoonboek voor bijvoorbeeld jouw regio die voor telefoonnummers, welke deze niet bevat, de lezer verwijst naar een andere regio of boek, of dit zelfs voor de lezer opzoekt.

Hoe kan een nameserver, bijvoorbeeld van jouw internetprovider, dan een DNS-record opzoeken die hij zelf niet kent? Dit kan door middel van gegevensdistributie en delegatie. Heb je je toevallig wel eens afgevraagd waarom domeinnamen punten bevatten, zoals in mijn.antagonist.nl? Waarom is dit bijvoorbeeld niet mijnantagonistnl? Dat komt omdat in een domeinnaam punten gebruikt worden om verschillende ‘hiërarchische zones’ te scheiden. Klinkt ingewikkeld en dat is het ook. Daarom gaan we hier iets verder op in.

De punt in een domeinnaam

Om verder te gaan met het mijn.antagonist.nl subdomein als voorbeeld; de punten in deze domeinnaam geven aan dat het om verschillende sub-zones gaat. Het subdomein ‘mijn’ bevindt zich in de DNS-zone ‘antagonist.nl’. Het subdomein ‘antagonist’ bevindt zich in de DNS-zone van ‘.nl’ en zelfs het subdomein ‘nl’ bevindt zich in de ‘.’ DNS-zone. Die laatste wordt ook wel de ‘root’ van het Domain Name System genoemd.

Strikt gezien vanuit de DNS eindigt een domein ook niet op .nl, maar op een punt. De correcte waarde zou mijn.antagonist.nl. zijn. Deze wordt echter voor het gemak vrijwel overal weggelaten.

Hoe wordt een domein opgezocht?

Met deze nieuwe achtergrondinformatie keren we terug naar het voorbeeld. Als een nameserver, bijvoorbeeld de resolver van jouw provider, het DNS-record voor mijn.antagonist.nl wil opzoeken, dan gaat dit ruwweg als volgt:

Q: Jouw resolver vraagt aan de ‘root’ nameservers voor de ‘.’ zone, wat het IP voor mijn.antagonist.nl is.

A: De root nameserver vertelt welke nameservers de .nl zone beheren.

Q: Jouw resolver vraagt aan een nameserver voor de .nl zone, wat het IP voor mijn.antagonist.nl is.

A: De nameserver voor de .nl zone geeft aan welke nameservers de antagonist.nl zone beheren.

Q: Jouw resolver vraagt aan een nameserver voor de antagonist.nl zone, wat het IP voor mijn.antagonist.nl is.

A: De nameserver voor antagonist.nl bevat het nodige DNS-record, en geeft deze terug aan jouw resolver; ‘mijn.antagonist.nl A 195.211.73.55’.

Het bovenstaande gedrag was je wellicht al was opgevallen als niet-recursief. Dat klopt en is gemakkelijk te verklaren. De ‘root’-nameservers behandelen alle DNS-aanvragen op het internet (met uitzondering van gecache’de records, hierover later meer). Als deze voor iedere aanvraag ook zelf recursief op zoek zouden moeten naar het volledige antwoord, dan zou dit enorme (onnodige) belasting opleveren. Daarom werken nameservers in principe als volgt.

DNS uitgelegd: trace

Recursieve nameservers zijn degenen die de eindgebruikers bedienen. Opnieuw is een goed voorbeeld de resolver van jouw internet provider. Deze recursieve nameservers doen ‘iteratieve’ aanvragen (het gedrag hierboven, waar deze de keten af gaan) naar ‘authoritative’ nameservers (de nameservers die voor de betreffende zone ‘de baas’ zijn).

DNS-caching en DNS-vertraging

Nou is af te vragen of het bovenstaande gedrag efficiënt is. Moet de nameserver van mijn provider echt iedere keer, dat ik bijvoorbeeld google.nl wil bezoeken, de hele keten doorlopen? Dat is een goede vraag en het antwoord is in veel gevallen nee. Dit komt omdat bij het opzetten en implementeren van DNS dezelfde vraag werd gesteld. Hieruit is het principe van DNS-caching ontstaan.

Voor wie niet bekend is met het principe van caching: dit is een breed toepasbare techniek, waarbij data (tijdelijk) wordt opgeslagen op een sneller beschikbaar medium. Deze data worden zodoende sneller opvraagbaar. Er zijn veel verschillende varianten van caching. Dit is afhankelijk van de context, maar binnen het DNS houdt dit in dat een (recursieve) nameserver, zoals die van jouw provider, een DNS-record tijdelijk opslaat in de ‘cache’. Zo hoeft de nameserver voor een domein niet bij iedere aanvraag een nieuwe (iteratieve) aanvraag-reeks te doen.

Waar komt de vertraging vandaan?

Periodiek wordt deze DNS-cache ververst om te zorgen dat de nameserver geen verouderde opgeslagen data aanlevert. Hoe lang een DNS-record gecached blijft, is afhankelijk van twee dingen. Eén, de instellingen van de nameserver en twee, de ‘TTL’ (Time To Live) van een specifiek DNS-record. Dit laatste wordt aangegeven door de authoratieve nameserver en is te vertalen als “Je mag dit DNS-record X seconden bewaren.” Hoe lager de TTL is ingesteld, door de beheerder van het domein, hoe sneller een DNS-verandering dus door verschillende internetproviders wordt opgepakt.

DNS-caching is ook de reden dat een wijziging niet direct zichtbaar zal zijn, wanneer je een DNS-record aanpast. De nameserver van jouw provider zal eerst de cache moeten verversen (wanneer de TTL bereikt wordt), voordat je de wijziging kunt zien. Dit laatste noemen we doorgaans DNS-vertraging.

DNSSEC

Ook een noemenswaardig onderdeel van DNS is DNSSEC. We hebben hier al eerder een artikel aan gewijd en met die reden zal ik in dit artikel hier niet te diep op ingaan.

DNSSEC bij Antagonist

Wat DNSSEC doet, is een extra controle uitvoeren bij iedere ‘iteratieve’ stap, zoals onder het kopje ‘delegatie’ wordt genoemd. Deze controle gebruikt de aanvrager een cryptografische sleutel die een ‘niveau’ hoger in de DNS-keten wordt gegeven. Dit wordt gedaan om te bewijzen dat lagere antwoorden legitiem zijn. Met DNSSEC wordt het onmogelijk gemaakt dat door misbruik (zoals bij een ‘man in the middle’-aanval) DNS-data worden vervalst.

Een simpel voorbeeld. Zo bevat de ‘root’-DNS-zone cryptografisch sleutelmateriaal die overeenkomt met sleutelmateriaal in de ‘lager gelegen’ .nl-zone. Door dit materiaal te vergelijken, weet de aanvrager dat het ontvangen antwoord legitiem is wanneer het sleutelmateriaal overeen komt. Dit proces zal voor een domein met DNSSEC doorlopen tot in het uiteindelijke antwoord.

DNS-management bij Antagonist

Als je een klant bent bij Antagonist en jouw domein onze nameservers gebruikt, heb je de volledige vrijheid om de DNS-records voor jouw domeinnaam te beheren. Natuurlijk heeft niet iedereen hier behoefte aan. Zeker omdat het een complex en foutgevoelig proces betreft, maar de optie is altijd beschikbaar.

Als jouw domein gekoppeld is aan een webhostingpakket en de volgende nameservers gebruikt: ns1.webhostingserver.nl, ns2.webhostingserver.nl en ns3.webhostingserver.nl, dan kun je de DNS aanpassen via de DNS-management-optie in DirectAdmin. Meer informatie hierover kun je ook terugvinden in deze handleiding.

DNS uitgelegd: DNS-management bij Antagonist

Als jouw domein losstaand is en niet naar een webhostingpakket verwijst, dan zijn de DNS-records hiervoor steeds te beheren. Het domein gebruikt dan de volgende nameservers: ns1.p01.antagonist.nl, ns2.p01.antagonist.net en ns3.p01.antagonist.de. Het beheer van de DNS-records gaat in dat geval via Mijn Antagonist. De volgende handleiding biedt hierbij uitkomst.

DNS uitgelegd: beheren via Mijn Antagonist

Wanneer je wel een aanpassing wilt maken in jouw DNS-records, maar je hier niet volledig vertrouwd mee bent, dan kun je vanzelfsprekend contact met ons opnemen via support@antagonist.nl. We voorzien je van de nodige toelichting en hulp om te zorgen dat de wijziging op correcte wijze wordt doorgevoerd.

Tot slot

DNS is en blijft een van de complexere onderdelen van het internet. Dat is iets dat onder andere blijkt uit de lengte van dit artikel, ondanks mijn poging tot slechts globale uitleg. Ik hoop dat je na het lezen van dit artikel een beter idee hebt gekregen van de werking van DNS.

Wellicht ben je nieuwsgierig genoeg om er dieper in te duiken. Er is op het internet een overvloed aan informatie te vinden. Persoonlijk vind ik het nog altijd erg interessant om onder de motorkap te kijken van systemen die veel mensen voor lief nemen. DNS is hier een goed voorbeeld van.

Miste je iets in dit artikel? Heb je nog verdere vragen over bijvoorbeeld DNS (bij Antagonist) of een onderdeel hiervan? Neem gerust contact met ons op. We helpen je graag verder! Nieuwsgierig naar domeinnamen bij Antagonist, zodat je kennis kunt maken met DNS en de instellingen ervan?

Doe een domeincheck →

P.S. Wil je op de hoogte blijven van alle artikelen, tips en trucs die verschijnen op ons blog? Dat kan! Rechts bovenin via RSS, e-mail, het liken van onze Facebook-pagina, via Google+ of het volgen op Twitter.

Deel Tweet +1 Deel