Recursive vs. authoritative DNS: wat is het verschil
Kort antwoord
Een recursive resolver is de server waar je apparaat daadwerkelijk mee praat, vaak die van je ISP, een publieke resolver, of eentje die je zelf draait, en die doet het werk van de root tot de authoritative server doorlopen en cachet het resultaat. Een authoritative nameserver is de daadwerkelijke bron van waarheid voor een domein: de server die de echte records bevat en daarmee antwoordt. Weten met welke van de twee je te maken hebt tijdens troubleshooting, bespaart een hoop verspilde moeite.
Twee verschillende taken
Een recursive resolver beantwoordt vragen namens een client, ook al heeft die zelf geen van de echte domeingegevens in bezit, in elk geval niet totdat hij iets heeft opgezocht en het antwoord heeft gecachet. Als je laptop of telefoon vraagt "wat is het adres van example.com", stelt die vraag bijna altijd aan een recursive resolver, niet rechtstreeks aan de eigen nameservers van het domein. De resolver doet daarna het uitzoekwerk dat beschreven staat in DNS-recordtypes uitgelegd: van de root naar de TLD, naar de nameservers die authoritative zijn voor het domein, tot hij uiteindelijk een echt antwoord terugkrijgt.
Een authoritative nameserver heeft een compleet andere taak: hij is de daadwerkelijke bron van waarheid voor één specifieke zone. Hij zoekt nergens anders iets op, hij bevat de echte records voor dat domein en antwoordt daar rechtstreeks vanuit. Wanneer een recursive resolver aan het eind van zijn keten uiteindelijk bij de juiste authoritative server uitkomt, is dat het enige moment in het hele proces waarop het antwoord uit de echte data komt, in plaats van uit een cache of een verwijzing naar elders.
Waarom het onderscheid ertoe doet als er iets fout lijkt
Waar een DNS-probleem zich bevindt, bepaalt wat je daadwerkelijk moet oplossen. Recursive en authoritative door elkaar halen is een veelvoorkomende manier om tijd te verspillen aan de verkeerde oplossing.
Als een record overal en consistent verkeerd lijkt, controleer je het beste de daadwerkelijke zonegegevens op de authoritative server. Een verouderd of onjuist record daar is het echte probleem, en elke recursive resolver die iemand raadpleegt, geeft gewoon trouw door wat de authoritative server heeft gezegd.
Als een record alleen vanaf sommige locaties verkeerd lijkt, of alleen af en toe, of na verloop van tijd vanzelf weer klopt, wijst dat patroon op caching bij een recursive resolver, niet op een fout in de zone zelf. Verschillende resolvers cachen hetzelfde antwoord voor verschillende duur, afhankelijk van wanneer ze het voor het laatst hebben opgezocht. Het is dus heel normaal dat de ene locatie een oud antwoord ziet terwijl een andere al het nieuwe antwoord ziet. De oplossing is dan niet om de zone opnieuw te bewerken, die is waarschijnlijk al correct, maar om de TTL van het record uit te laten wachten zodat de verouderde gecachete kopieën vanzelf verlopen.
Een snelle manier om ze uit elkaar te houden tijdens troubleshooting
Een recursive resolver bevragen, zoals de resolver die je apparaat standaard gebruikt, laat zien wat het bredere internet op dit moment gelooft, inclusief alles wat nog gecachet is. De authoritative nameservers van het domein rechtstreeks bevragen, laat de actuele, echte status van de zone zien, zonder dat caching in de weg zit. Als een lookup-tool je laat kiezen welke server je bevraagt, is de authoritative server aanwijzen de manier om te bevestigen wat de zone op dit moment daadwerkelijk zegt, los van wat een specifieke resolver op dat moment toevallig gecachet heeft. Beide vergelijken is ook een nuttige stap wanneer een connectiviteitsprobleem uiteindelijk helemaal geen DNS-probleem blijkt te zijn: zie Traceroutes & MTR's voor het traceren van het netwerkpad zelf, zodra het DNS-antwoord bevestigd correct is.