DNS
Wat is DNS? Computers vinden elkaar via IP-adressen, mensen onthouden namen. Het Domain Name System zet het ene om in het andere: tik je een domeinnaam in, dan vraagt je toestel eerst welk IP-adres daarbij hoort, en pas daarna begint het echte verkeer.
Of: waarom je website en je e-mail aan een paar regels tekst hangen
Hoe DNS werkt, en waarom je het pas merkt als het stilvalt
DNS is het saaiste onderdeel van het internet, en ik bedoel dat als compliment. Het doet één ding: een naam opzoeken en er een nummer bij geven. Het doet dat telkens je een site opent of een mail verstuurt, zo betrouwbaar dat niemand er nog aan denkt. Tot het misloopt. Dan werkt je internetverbinding, draait je website, en toch komt er niets meer aan.
Computers onthouden nummers, mensen namen
Elk toestel dat op het internet bereikbaar is, heeft een IP-adres: een nummer dat aangeeft waar het zich op het netwerk bevindt. Een klassiek IPv4-adres bestaat uit vier getallen tussen 0 en 255, gescheiden door punten, bijvoorbeeld 192.0.2.10. De nieuwere variant, IPv6, is een stuk langer en bevat naast cijfers ook letters.
Websites staan op servers, computers die dag en nacht aanstaan en antwoorden op verzoeken van andere computers. Je browser moet weten met welk IP-adres hij moet praten. Maar niemand onthoudt die nummers, en ze veranderen: verhuist een site naar een andere hostingpartij, dan krijgt hij een ander IP-adres. De naam blijft. DNS houdt bij welk nummer vandaag bij welke naam hoort.
Een contactenlijst die niemand volledig heeft
Op je gsm tik je op „Boekhouder”, niet op zijn nummer. Je toestel zoekt het nummer op in je contacten en belt. DNS doet hetzelfde voor het hele internet.
Het verschil zit in wat er ontbreekt. Er bestaat geen lijst met alle nummers van de wereld. Je gsm weet alleen wie hij kan bellen om het te vragen. Die kent het nummer ook niet, maar weet wie de Belgische nummers bijhoudt, en die weet wie de kaart van je boekhouder beheert: je boekhouder zelf. Elke eigenaar van een domeinnaam beheert zijn eigen stukje. Dat is geen ontwerpfout, maar de reden waarom het systeem werkt: niemand hoeft de hele lijst bij te houden, en een wijziging aan jouw domein raakt niemand anders.
Wat er gebeurt als je keek.be intikt
Vereenvoudigd verloopt het zo:
- Je toestel kijkt eerst in zijn eigen geheugen. Heeft het dezelfde vraag kort geleden gesteld, dan staat het antwoord in de cache, een tijdelijk geheugen van recente antwoorden.
- Anders vraagt het aan een resolver. Dat is een DNS-server die opzoekingen doet namens jou. Standaard is dat de resolver van je internetprovider, die je router automatisch doorgeeft aan je toestellen.
- De resolver zoekt het uit, van boven naar beneden. Heeft hij het antwoord niet in zijn cache, dan vraagt hij het eerst aan een rootserver, het vertrekpunt van het hele systeem. Die verwijst hem door naar de servers voor .be, beheerd door DNS Belgium, en die verwijzen naar de naamservers van keek.be.
- De autoritatieve naamserver geeft het antwoord. Dat is de server die de officiële gegevens van een domein bijhoudt. Hij antwoordt met het IP-adres.
- De resolver geeft het antwoord door aan je toestel, en onthoudt het een tijdje voor de volgende die het vraagt.
- Pas nu maakt je browser verbinding met de server op dat IP-adres.
Dat parcours duurt doorgaans een fractie van een seconde, en dankzij de caches moet het zelden volledig afgelegd worden. Het dient ook voor e-mail: wie je een mail stuurt, laat zijn mailserver via DNS opzoeken waar mail voor jouw domein afgeleverd moet worden.
De records die alles sturen
Alle DNS-gegevens van een domein samen heten de zone. Elke regel daarin is een record, met een type dat zegt waarvoor hij dient:
- A koppelt een naam aan een IPv4-adres. AAAA doet hetzelfde voor IPv6.
- CNAME maakt van een naam een alias van een andere naam, bijvoorbeeld www.keek.be die verwijst naar keek.be.
- MX vertelt welke mailserver de e-mail voor je domein ontvangt.
- TXT bevat vrije tekst, gebruikt om te bewijzen dat een domein van jou is en voor de beveiliging van e-mail.
- NS geeft aan welke naamservers autoritatief zijn voor het domein.
Drie soorten TXT-records bepalen mee of je e-mail vertrouwd wordt. SPF somt op welke servers mail mogen versturen namens je domein. DKIM voegt aan elke uitgaande mail een digitale handtekening toe. DMARC vertelt ontvangende servers wat ze moeten doen met mail die niet door die controles raakt. Samen maken ze het moeilijker om met jouw domeinnaam phishing te versturen, en verkleinen ze de kans dat je eigen mails als spam belanden.
TTL, of het briefje met „geldig tot”
Terug naar je contacten. Een opgezocht nummer schrijf je op een briefje met „geldig tot”, en tot die datum bel je het zonder opnieuw te vragen, ook als je boekhouder intussen een ander nummer heeft. DNS werkt net zo. Elk antwoord krijgt een houdbaarheidsduur mee, de TTL (time to live), uitgedrukt in seconden. Een TTL van 3600 betekent dat een resolver het antwoord een uur mag bijhouden voor hij opnieuw vraagt.
Pas je een record aan, dan sturen resolvers met een oud antwoord hun gebruikers naar het oude adres tot de TTL verloopt: een deel van je bezoekers zit al op de nieuwe server, een ander deel nog op de oude. Men noemt dat propagatie, alsof de wijziging zich als een olievlek verspreidt. In werkelijkheid verlopen er gewoon briefjes, één voor één. Reken op uren, soms een etmaal, afhankelijk van de TTL die gold.
Daaruit volgt de belangrijkste regel van deze pagina: zet de TTL laag vóór een verhuis, niet erna. Verlaag hem bijvoorbeeld naar 300 seconden, vijf minuten, minstens één volledige oude TTL voor de eigenlijke wijziging. Doe je het pas op de dag zelf, dan houden resolvers het oude antwoord nog vast met de oude, lange houdbaarheid. Na de verhuis zet je hem weer hoger.
Eén domeinnaam, drie bedrijven
Heb je een eigen domeinnaam, dan bepaalt DNS waar je website en je e-mail naartoe gaan. Daarom kunnen ze bij twee verschillende partijen staan: het A-record wijst naar de webserver, het MX-record naar de mailserver. Er komen drie rollen kijken, al dan niet bij hetzelfde bedrijf:
- de registrar, het bedrijf waarbij je de naam registreert en jaarlijks verlengt;
- de DNS-beheerder, bij wie je de records aanpast;
- de hostingpartij, waar je website draait.
In een kmo van vijf mensen is dat meestal onzichtbaar: iemand heeft het ooit ingesteld, het werkt, en niemand weet nog waar het staat. Tot de dag van de nieuwe website.
Kmo-Kristof: Onze nieuwe website staat online. Alleen komt er sinds vrijdag geen mail meer binnen.
Security-Sofie: Zijn de naamservers verhuisd naar de nieuwe hostingpartij?
Kmo-Kristof: Dat heeft de webdesigner geregeld. Eén aanpassing, zei hij, en klaar.
Security-Sofie: En je MX-records? Die vertellen de rest van de wereld waar je e-mail naartoe moet.
Kmo-Kristof: Zaten die dan in die ene aanpassing?
Security-Sofie: Ze stonden bij de oude naamservers. Daar staan ze nog altijd, keurig ingevuld, en niemand vraagt er nog naar.
Dit is de klassieke verhuisfout: de naamservers gaan mee naar de nieuwe hostingpartij, de MX-records niet. De website werkt, en de e-mail komt niet meer aan. De remedie is tien minuten saai werk: noteer vóór elke wijziging alle bestaande records.
Wie ziet welke sites je opzoekt
Je kunt een andere resolver kiezen dan die van je provider, in je router (voor het hele netwerk) of op één toestel. Sommige resolvers filteren daarnaast bekende kwaadaardige domeinen weg. De keuze verandert hoe snel er geantwoord wordt, en vooral wie je opzoekingen ziet. Anoniem word je er niet van: wat je daarna doet, blijft even zichtbaar als voordien.
Dat „wie” is het stille gegeven van DNS: je resolver krijgt een lijst van alles wat je bezoekt, ook wanneer het verkeer zelf versleuteld is. Het slotje in je adresbalk beschermt het gesprek met de website, niet de vraag die eraan voorafging. Je praat achter een gesloten deur, maar je hebt eerst luidop naar de weg gevraagd.
Klassieke DNS-vragen reizen bovendien onversleuteld. Nieuwere varianten, DNS over HTTPS en DNS over TLS, versleutelen de vraag tussen je toestel en de resolver, zodat wie op het netwerk meekijkt ze niet meer kan lezen. De resolver zelf ziet ze wel, en je provider ziet nog altijd met welke servers je verbinding maakt. Met een VPN gaan je DNS-vragen, als alles goed is ingesteld, door de tunnel naar de resolver van de aanbieder. Dan is het die aanbieder die meekijkt.
Drie misverstanden die blijven hangen
„DNS is de plek waar mijn website staat.” Nee. DNS wijst alleen de weg. De website staat bij een hostingpartij, het domein bij een registrar, en dat kunnen drie verschillende bedrijven zijn.
„Een DNS-wijziging duurt altijd 48 uur.” Er is geen vaste termijn: het hangt af van de TTL. Met een lage TTL zien de meeste bezoekers een wijziging binnen enkele minuten. (Het getal leeft vooral voort in helpdeskmails, waar het een uitstekende buffer is.)
„Als geen enkele site laadt, is mijn internetverbinding stuk.” Niet altijd. Een DNS-storing ziet eruit als een internetpanne: de verbinding werkt, maar geen enkele naam wordt nog omgezet in een adres. Het loont om dat verschil te kennen voor je aan je router begint te sleutelen.
Wat je nu kunt doen
- Zoek uit bij welke registrar je domein staat, en op wiens naam. Dat hoort je bedrijf te zijn, niet de webdesigner of een medewerker die ooit vertrekt: wie dat account beheert, kan je website en je e-mail omleiden. Kijk na wie er toegang heeft en beveilig het met tweefactorauthenticatie.
- Zet de verlenging automatisch en controleer het contactadres. Een vervallen domeinnaam kan na een tijd door iemand anders geregistreerd worden, die dan de mail ontvangt die nog naar je oude adressen gestuurd wordt.
- Bewaar een kopie van je DNS-records, als export of schermafdruk, voor je iets wijzigt.
- Verlaag de TTL ruim voor een verhuis en kijk daarna of je MX-records er nog staan.
- Laat SPF, DKIM en DMARC instellen. Je e-mailaanbieder geeft je de juiste waarden.
- Kies eventueel een resolver die je vertrouwt, en zet versleutelde DNS aan in je browser of je besturingssysteem.
DNS is saai, zei ik in het begin, en zo hoort het ook. Het beste wat je ervoor kunt doen, is zorgen dat het saai blijft: een domein op de juiste naam, een verlenging die vanzelf loopt en een kopie van je records in een la. Dan hoef je nooit te ontdekken hoe spannend het kan worden.