DNS – Wat betekenen de verschillende type DNS records?
Het verbaast me soms een klein beetje hoeveel vragen ik krijg over DNS (Dynamic Name Server). Wat vooral lastig is voor veel mensen is het inrichten van DNS. DNS is de basis van het internet. Vergelijk het met een telefoonboek. In een telefoonboek zoek je telefoonnummers bij een bepaalde naam. In DNS zoek je IP adressen bij een bepaalde naam. Een naam (domeinnaam) is namelijk makkelijker te onthouden dan een IP adres. Stel je voor dat je het nummer “172.217.168.227” moest onthouden om naar Google.nl te gaan. Of “164.138.24.109” om naar Wikipedia.nl te gaan. Erger nog als we straks over zijn op IPv6…. Dan moet je “2a00:1450:400e:80c::2003” onthouden en intypen om naar Google.nl te gaan. DNS to the rescue!
Het “internet” bestaat dus uit IP adressen. Zie een IP adres als een huisnummer. Verkeer (post) moet immers weten waar het afgeleverd moet worden. Pakketje A moet naar een andere eindbestemming dan pakketje B. Omdat namen echter gemakkelijker te onthouden zijn dan IP adressen hebben we DNS bedacht.
Wanneer je dus verkeer naar een bepaalde bestemming wilt sturen gebruiken we als mensen een naam, maar de transmissie op zich gebruikt nog altijd een IP adres. Op het moment dat wij een naam gebruiken en onze computer nog niet weet welk IP adres hierbij stuurt dan stuurt de computer de aanvraag voor een IP adres door naar de opgegeven DNS server. Als deze de aanvraag kan resolven wordt het IP adres op de achtergrond geretourneerd. Als dat niet gebeurt zal deze de aanvraag doorsturen naar een van de 13 hoofd DNS servers op het internet. Zie deze als de “hoofd” telefoonboeken. Deze hoofd DNS servers noemen we “root” servers. Elke root server beheerd meerdere TLD’s (Top Level Domains). Elke root server bestaat feitelijk uit honderden redundant uitgevoerde servers verspreid over de hele wereld. De .NL TLD wordt bijvoorbeeld gehost op de “ICANN.ORG” TLD server. Als het IP adres voor de naam geretourneerd is zullen tussenliggende DNS servers deze een beperkte tijd cachen zodat een vervolgaanvraag een kortere route af moet leggen en dus sneller is en niet alle servers belast. De tijd dat er gecached mag worden wordt bepaald met de TTL (Time To Live) waarde. Soms kan een DNS verandering dus even duren alvorens het op alle servers wereldwijd is doorgevoerd.
DNS is echter meer dan alleen een simpele record welke een naam omzet naar een IP adres. DNS beheerd de domeinnaam, sub domeinen en verschillende verkeerstypen. DNS doet dit met zogenaamde DNS records.
A
Het “A” record is het meest bekende DNS record. Het A record is een adres record. Dit wil zeggen dat het A record een FQDN (Fully Qualified Domain Name) mapt aan een IP adres. Google zal dus een A record aanwezig hebben voor de mapping van “www.google.com” naar “172.217.17.132”.
De naam in de A-record fungeert als de host voor het domein (google.com) en de domeinnaam wordt automatisch aan de naam gekoppeld. Google heeft dus een A record gemaakt voor “google.com” met de naamwaarde “www”. Deze mapping is dus van toepassing op “www.google.com”.
AAAA
Ook kom je nog weleens een AAAA record tegen. Het AAAA record is vergelijkbaar met een A record maar dan van toepassing op IPv6. Een AAAA record mapt dus een IPv6 adres aan een FQDN.
CNAME
Met een CNAME record kun je een verwijzing maken naar een A record. CNAME staat voor “Canonical Name record” ofwel voor “alias”. Dit is handig als je veel (sub)domeinen hebt welke naar hetzelfde IP adres moeten verwijzen. Je kunt in dat geval beter 1x een A record aanmaken en de overige (sub)domeinen laten verwijzen naar dit A record. Als het IP adres veranderd hoef je dit maar op 1 locatie (het enkele A record) aan te passen.
DNAME
Een DNAME record is een “Non-Terminal DNS Name Redirection”. Een DNAME record wordt gebruikt om een volledige sub-tree binnen DNS door te verwijzen naar een ander domein. Dit in tegenstelling tot een CNAME welke enkel een enkele node doorverwijst.
DNSSEC / DNSKEY / DS
DNS is nooit ontworpen met het oog op beveiliging. Om de beveiliging van DNS te verhogen is het beveiligingsprotocol DNSSEC (Domain Name System Security ExtenSions) ontworpen. DNSSEC maakt het mogelijk om cryptografische handtekeningen toe te voegen aan DNS. Zodat de aanvrager van een IP adres kan controleren of het geretourneerde IP adres authentiek is en dus geretourneerd is door een valide DNS server. DNSSEC voorkomt DNS Spoofing.
De DNSSEC implementatie omvat 2 soorten DNS records, namelijk de DNSKEY en het DS record. Het DNSKEY record bestaat uit de publieke sleutel en de DS record bestaat uit een hash van het DNSKEY record.
Om deze techniek te begrijpen is het goed om te weten dat aan elke DNSSEC zone een 2-tal zonetekens worden toegevoegd. Deze zonetekens noemen we ZSK’s. Er is een privé ZSK en een publieke ZSK. De privé ZSK wordt gebruikt om DNS records in die zone te ondertekenen. De publieke ZSK wordt gebruikt om de privé ZSK te ondertekenen. De openbare ZSK wordt gepubliceerd in het DNSSEC record zoals deze wordt gepubliceerd aan de DNSSEC resolver welke de openbare ZSK gebruikt om te controleren of de records uit deze zone authentiek zijn. Voor extra beveiliging hebben DNS zones een tweede DNSKEY welke de KSK (Key Signing Key) bevat welke de authenticiteit van het openbare ZSK verifieerd.
Kort door de bocht vraagt de gebruiker een DNS record (IP adres) op. De cliënt krijgt een antwoord met een publieke sleutel (DSKEY). Deze sleutel wordt gecontroleerd middels de hash die gehost wordt op de DNS server (DS record). Als de controle slaagt is de informatie authentiek. Zo niet dan wordt deze geweigerd.
MX
Het MX (Mail eXchange) record is een speciaal record welke aangeeft welke mailservers de e-mail afhandelen voor het domein. E-mail wordt dus doorgestuurd naar de servers die opgegeven zijn binnen de MX records. Er kunnen meerdere soorten MX records aanwezig zijn met verschillende priodirteiten. De e-mail server van het MX record met de laatste prioriteit ontvangt de e-mail. Als deze e-mailserver echter niet online is dan wordt de e-mail doorgestuurd naar de e-mail server
NS
NS staat voor “Name Server”. Het NS record is dus een nameserver record welke aangeeft authoratieve nameservers de DNS zonefile van het domein te vinden is. De NS records zullen dus altijd overeenkomen met de gebruikte nameservers. De nameservers in het NS record kunnen verkeer welke IP adressen voor dat domein opvraagt in behandeling nemen. Meerdere NS records fungeren net als meerdere MX records. Wanneer er een nameserver down gaat kan een volgende nameserver het overnemen en verkeer resolven.
PTR
Het PTR record noemen we ook wel een “pointer” record en wordt gebruikt voor “reverse DNS”. Het PTR record is feitelijk het tegenovergestelde van een A record. Het A record zet een naam om naar een IP adres. Het PTR record zet een IP adres om naar een naam.
SOA
Het SOA (Start Of Authority) record is een essentieel record welke een aantal essentiële waardes heeft voor de gehele DNS zone. Denk hierbij aan o.a. de primaire nameserver, serienummer (voor zonetransfers), de beheerder, TTL waardes etc. Zonder een goed SOA record zal DNS niet (goed) functioneren.
SRV
SRV staat voor “SeRVice” record en specificeert de locatie voor specifieke diensten. Het SRV record omschrijft o.a. de hostnaam en het poortnummer van de dienst. Het SRV record is vaak vereist voor internet protocollen voals SIP en XMPP.
TXT
Het TXT record is een veelzijdig record welke voor vele toepassingen wordt gebruikt. TXT records zijn niet hoofdlettergevoelig en oorspronkelijk bedacht om willekeurige (leesbare) tekst te koppelen aan een host om zo mogelijk meer informatie te verschaffen in leesbare tekst. Tegenwoordig wordt het TXT record voor meerdere doeleinden gebruikt zoals het verifiëren dat de domeinnaam werkelijk jou eigendom is en voor anti-spam faciliteiten zoals SPF en DKIM.
URI
URI ofwel Uniform Resource Identifier wordt gebruikt om hostnamen aan een URI te koppelen. Het URI Record is een alternatief voor het SRV-record. Net zoals bij het SRV-record, worden zowel gewichts- als prioriteitswaarden geretourneerd die kunnen worden gebruikt om een geschikte URI te selecteren op basis van meerdere resultaten. In tegenstelling tot de SRV wordt in het URI-record echter geen poortnummer geretourneerd, omdat deze informatie (indien van toepassing) in de URI-reeks voorkomt. De geretourneerde URI-reeksen van een URI query kunnen dus rechtstreeks door de aangevraagde toepassing worden gebruikt.
Er zijn echter nogal wat andere typen DNS records die een stuk minder vaak voorkomen. Denk hierbij b.v. aan CERT, DS, HIP, KEY, NSEC en TKEY. Wil je meer weten over deze type DNS records dan kun je deze natuurlijk gemakkelijk Googlen.
Reverse DNS:
Misschien ben je ook de term “Reverse DNS” weleens tegengekomen. Reverse DNS is exact zoals de naam al aangeeft, DNS maar dan achterstevoren. Dus de koppeling van een naam aan een IP adres. Kijk hierboven ook naar de uitleg van het PTR record welke net als A records bij forward DNS vaak voorkomen.
Dynamic DNS:
Ook heb je soms te maken met Dynamic DNS. Dynamische DNS is de mapping van een naam aan een dynamisch, dus steeds veranderend IP adres. Op deze manier kun je een toepassing op naam beschikbaar maken terwijl op de achtergrond het IP adres kan (en zal) veranderen. Dynamisch DNS noemen we ook weleens “DDNS” en “DynDNS”. Er zijn diverse aanbieders / tools die dynamisch DNS mogelijk maken. Een Dynamic DNS werkt met een domeinnaam. Deze registreer je (vaak gratis) bij een Dynamic DNS aanbieder.
Ik hoop dat deze korte post wat meer inzicht gegeven heeft in DNS, wat DNS doet en welke soorten records er allemaal zijn. Vond je dit een leuke of interessante post, laat het dan even weten en deel hem verder. Like Like Like!
Tot de volgende post, i’m out. There is no place like 127.0.0.1 (home)!