DNS4ALL: SIDN Labs’ experimentele publieke DNS-resolver

Een blauwdruk voor iedereen die een moderne gedistribueerde resolverservice wil opzetten

wereldwijd netwerk

Een publieke resolver is een component in het Domain Name System (DNS) waarmee telefoons, laptops, IoT-apparaten en andere apparaten overal ter wereld het IP-adres op kunnen zoeken dat bij een domeinnaam hoort. Het in de lucht houden van een grote publieke resolver kan echter behoorlijk ingewikkeld zijn, waardoor grote partijen zoals Google hier een dominante rol zijn gaan spelen. Om de decentraliteit van het publieke resolver-ecosysteem te helpen versterken ontwikkelden we daarom sinds augustus 2022 DNS4ALL, een experimentele publieke resolver met inmiddels zo’n 30 nodes die een blauwdruk biedt voor iedereen die zelf een moderne gedistribueerde resolverservice wil opzetten. We zetten DNS4ALL de afgelopen maanden in voor de totstandkoming van RIPE’s ‘DNS Resolver Recommendations’ (RIPE-823).

Moderne DNS resolvers

Een resolver is een server die telefoons, laptops, IoT-devices en andere internetapparatuur helpt om het IP-adres van een domeinnaam op te zoeken in het DNS. DNS-resolvers zijn door de jaren heen complexer geworden en ook het toepassingsgebied is verbreed. Zo spelen ze tegenwoordig een rol bij het tegenhouden van malware en andere dreigingen en zijn ze betrokken bij het beschermen van de privacy van gebruikers, onder meer dankzij DNS-uitbreidingen zoals Qname Minimization. Resolveroperators bieden hiervoor speciale (betaalde) resolverdiensten aan, die soms uitgebreid configureerbaar zijn (zie het voorbeeld in figuur 1).

Voorbeeld van resolverconfiguratiemogelijkheden (NextDNS-resolver)

Figuur 1: Voorbeeld van resolverconfiguratiemogelijkheden (NextDNS-resolver).

Een andere belangrijke ontwikkeling is de komst van publieke DNS-resolvers, zoals die van Quad9, Cloudflare of Google Public DNS. Dat zijn openbare resolvers die vanaf overal op het internet bereikbaar zijn. Ze zijn bijvoorbeeld aantrekkelijk voor netwerkoperators, omdat ze er hun DNS-resolverserivce aan uit kunnen besteden. Dit omdat het behoorlijk wat technische kennis vereist om een ‘latest and greatest’ DNS-resolver of een hele infrastructuur in de lucht te houden. Daarnaast is een public resolver meestal gratis en levert snel nieuwe features.

Centralisatie van publieke resolvers

Inmiddels bedienen zogenaamde ‘hyperscalers’ zoals Google met hun publieke resolvers miljoenen gebruikers, wat leidt tot centralisatie van het publieke resolver-ecosysteem. De metingen van APNIC (zie figuur 2) laten bijvoorbeeld zien dat Google Public DNS wereldwijd ongeveer 10% van de internetgebruikers bedient (oranje lijn) met de daaropvolgend grootste public resolver die van Cloudflare (paarse lijn) met een aandeel van rond de 1 á 2 procent.

Resolver-metingen van APNIC.

Figuur 2. Resolver-metingen van APNIC.

Figuur 2 laat ook zien dat resolverconcentratie zich beperkt tot publieke resolvers. Ongeveer 65% van de gebruikers benadert het DNS via de resolver van hun ISP (lijn ‘sameas’) en iets minder dan 20% doet dat via een resolver in het hetzelfde land maar in een ander netwerk (lijn ‘samecc’). Dit zijn traditionele resolvers die alleen beschikbaar zijn voor klanten van de ISP en niet op het publieke internet.

Nadelen van publieke resolver centralisatie

Deze vorm van DNS-centralisatie leidt al een paar jaar tot discussie in de technische community, omdat het de diversiteit van het DNS-(resolver)ecosysteem verlaagt. Diversiteit in operators, software, hardware en netwerkmanagementmethoden is een belangrijk ontwerpprincipe van het internet, omdat het de weerbaarheid van het internet tegen bijvoorbeeld storingen of DDoS-aanvallen verhoogt. De dominantie van Google Public DNS draagt bijvoorbeeld niet aan bij aan dat principe voor het publieke resolver-ecosysteem omdat het 1 operator is met 1 soort nameserversoftware.

Daarnaast heeft de centralisatie van het DNS-resolver-ecosysteem ook maatschappelijke nadelen, omdat het een paar (overwegend Amerikaanse) spelers veel macht en controle geeft in het DNS, bijvoorbeeld omdat ze veel DNS-querydata verzamelen (de gebruiker is ‘het product’). Om deze reden introduceerde de Europese Commissie begin 2022 een eigen publieke resolver met de naam DNS4EU, die wordt ontwikkeld door een consortium van bedrijven en overheden.

Decentralisatie van het publieke resolver-ecosysteem: DNS4ALL en RIPE BCPs

DNS4EU was in augustus 2022 voor ons aanleiding om te starten met een experimentele publieke resolver. Dit omdat we er niet van overtuigd waren dat nog maar weer een nieuwe, centrale resolver de beste weg voorwaarts is voor internetdecentralisatie en wij meer geloven in een generiek toepasbare blauwdruk van zo’n systeem, die partijen vervolgens zelf kunnen implementeren. We noemden onze ‘blauwdrukresolver’ DNS4ALL, een knipoog naar DNS4EU.

In januari 2023 riep de RIPE-community daarnaast de ‘DNS Resolver Best Common Practice Task Force’ in het leven. Het doel was het voor organisaties gemakkelijker te maken om zelf een DNS-resolver te runnen, waardoor het DNS divers en ‘in the hands of many’ blijft. Dit sloot perfect aan bij het doel van DNS4ALL en we droegen vanuit SIDN Labs daarom met DNS4ALL actief bij aan het ontwikkelen van de best practices, bijvoorbeeld over DNSSEC-, privacy- en filteringinstellingen. Het rapport van de Task Force is op 1 mei 2024 gepubliceerd als RIPE-823.

Een vergelijkbaar initiatief met minder gedetailleerde richtlijnen en begeleiding is KinDNS (ondersteund door ICANN). Nog een ander voorbeeld is de European Resolver Policy, dat iets vergelijkbaars als KinDNS beoogt, maar dan specifiek voor Europa.

DNS4ALL als blauwdruk voor publieke resolvers

Het doel van DNS4ALL is om een generieke blauwdruk te bieden voor iedereen die een moderne gedistribueerde resolverinfrastuctuur wil opzetten. We richten ons daarbij op resolvers die gebruik maken van BGP-anycast, een techniek om dezelfde resolverservice aan te bieden vanaf meerdere, geografisch verspreide servers met elk hetzelfde IP-adres. Het zorgt ervoor dat een resolverservice lage responsetijden biedt en veel verkeer aankan, omdat anycast een DNS-vraag naar de netwerktopologisch dichtstbijzijnde server leidt. Alle grote publieke resolvers werken ook op deze manier.

DNS4ALL bestaat uit ongeveer 30 frontendresolvers en 3 backendresolvers (zie figuur 3). De frontends ontvangen de binnenkomende DNS-vragen van clients en sturen ze door naar de dichtstbijzijnde backendresolver. Een frontend kan uitwijken naar een andere backend als de dichtstbijzijnde backend niet beschikbaar of overbelast is. De frontends (in figuur 3 weergegeven als een ‘pin’) kunnen ook DNS-verkeer filteren, bijvoorbeeld door ‘rate limiting’ toe te passen als clients een frontend overbelasten. Op anycast.sidnlabs.nl vind je een interactieve kaart met alle frontendresolvers van DNS4ALL.

Schematische weergave van de architectuur van DNS4ALL met frontend- en backendsystemen.

Figuur 3: Schematische weergave van de architectuur van DNS4ALL met frontend- en backendsystemen.

Voor de backends (aangegeven met ‘Resolver’) gebruiken we Unbound. De frontendsystemen zijn gebaseerd op DNSdist en staan verspreid over de wereld zodat ze dichtbij clients staan. De back-endsystemen staan in Frankfurt, Mexico Stad en Singapore.

Met deze setup kan DNS4ALL snel reageren op DNS-verzoeken van clients van over de hele wereld, omdat de verzoeken niet het hele internet over hoeven naar Nederland. Dit is bijvoorbeeld belangrijk om webpagina’s snel te kunnen laden. De opzet van DNS4ALL lijkt enigszins op de aanpak van Quad9, alleen gebruiken zij PowerDNS en Unbound (en heel beperkt BIND9) als resolver.

De blauwdruk van DNS4ALL bestaat concreet uit (1) de DNS Resolver Recommendation (RIPE-823) waaraan we hebben bijgedragen, (2) de DNS4ALL-architectuur van Figuur 3 en (3) onze implementatie van de best common practices voor DNS4ALL. Meer details vind je op https://dns4all.eu.

DNS4ALL als experimenteer- en meetplatform

Ons tweede doel is om via DNS4ALL meer zicht te krijgen op actuele ontwikkelingen in het DNS-resolverecosysteem en die kennis te delen met de DNS-community en met het DNS-team van SIDN. Dit doen we door te experimenteren met de nieuwste (pre-standaard) resolver-features, waarvan we er hieronder 3 bespreken. We hebben voor deze 3 ook enkele eerste handmatige metingen uitgevoerd, omdat we nog een privacyvriendelijk meetsysteem voor DNS4ALL moeten ontwikkelen.

Discovery of Designated Resolvers (DDR): is een nieuwe methode waarmee clients automatisch over kunnen schakelen naar een versleutelde resolver (voor verhoogde privacy), indien aanwezig. Met DNS4ALL zagen we dat Apple DDR al had omarmd, nog voordat het een RFC (RFC 9462) was. Apple-apparaten met DDR-ondersteuning versturen namelijk een DNS-vraag waarbij ze vragen om een record van het SVCB-type met als label: ‘_dns.resolver.arpa’. DNS4ALL stuurt voor dit soort vragen 2 alternatieve, versleutelde resolvers in het DDR-antwoord, 1 met ondersteuning voor DNS-over-HTTPS (DoH) en 1 met DNS-over-TLS (DoT):

;; ANSWER SECTION:
_dns.resolver.arpa. 300 IN SVCB 1 doh64.dns4all.eu. alpn=”h2” ipv4hint=194.0.5.64 ipv6hint=2001:678:8::64 key7=”/dns-query{?dns}”
_dns.resolver.arpa. 300 IN SVCB 1 dot64.dns4all.eu. alpn=”dot” ipv4hint=194.0.5.64 ipv6hint=2001:678:8::64

Op deze manier kunnen DNS4ALL-clients automatisch overschakelen op een DNS-over-HTTPS (DoH) of een DNS-over-TLS (DoT)-resolver, zodat derde partijen het vraag- en antwoordspel tussen resolver en gebruiker niet meer kunnen afluisteren. Een nog nieuwere veilige transporttechniek voor resolvers is DNS-over-QUIC, die we binnenkort ook gaan ondersteunen, nu het beschikbaar is gekomen in release 1.9.0 van DNSdist.

Extended DNS Errors (EDE): is ook zo’n relatief nieuwe uitbreiding op de DNS-standaard, die we voor DNS4ALL hebben geactiveerd. Dit betreft een methode om in DNS-antwoorden aanvullende informatie mee te geven in geval van fouten. Bijvoorbeeld de reden waarom een DNSSEC-validatie is mislukt. Het voordeel voor DNS4ALL-clients is dat ze met EDE een middel in handen krijgen om snel bepaalde knelpunten te kunnen identificeren. In het voorbeeld-antwoord zie je overigens ook dat DNS4ALL ook DNS64 ondersteunt, wat ook lang niet iedere resolver doet.

X25519Kyber768-algoritme: We zijn zelfs een stap verder gegaan en hebben ondersteuning voor X25519Kyber768 op DNS4ALL aangezet, zoals we in een eerdere blog al een keer beschreven. Dat is een zogenaamd post-kwantumcryptografie-algoritme bestand tegen de veel grotere rekenkracht van toekomstige kwantumcomputers.

Geleerde lessen

De praktische ervaring die we opdeden met DNS4ALL gaf ons zicht op de uitdagingen die er zijn bij het in de lucht houden van een grote, publieke resolverservice. De kennis en ervaring die ons dit opleverde gebruikten we om onze blauwdruk te ontwikkelen zodat iedereen een moderne gedistribueerde resolver op kan zetten en zo te helpen het DNS decentraal te houden. We droegen met DNS4ALL ook bij aan de RIPE DNS Resolver BCP Taskforce, wat inmiddels is uitgemond in RIPE-823.

We leerden daarnaast dat het managen van een resolver als DNS4ALL vaak over details gaat zoals: is het simpel om voor een DNS-over-HTTPS-service een certificaat aan te bieden waar ook het IP-adres in is vermeld, naast de hostname? Het antwoord op dit soort vragen en al onze andere geleerde lessen zijn we van plan in de toekomst te delen via de DNS4ALL-site op dns4all.eu.

Join DNS4ALL!

Meer informatie over DNS4ALL kun je vinden op https://dns4all.eu. Daar staat ook uitgelegd hoe je DNS4ALL kunt instellen en hoe je kunt testen of je hem gebruikt. Je vindt op die pagina vanzelfsprekend ook informatie over hoe we omgaan met je privacy.

Ga er gerust mee aan de slag en laat het ons weten als je feedback hebt!

Let op!

DNS4ALL is een experimentele resolver. We bieden geen servicegaranties of support.

Decentraal internet

DNS4ALL draagt bij aan een decentraal internet dat ‘in the hands of many’ is, een essentiële eigenschap voor een open, veilig en schaalbaar internet. We gaan daarom ook een bijdrage leveren aan een decentrale cloudinfrastructuur via de GAIA-X-pilot in Nederland, ondanks ons voornemen om ons registratiesysteem voor .nl-domeinnamen op het platform van AWS te draaien. Onze DNS-servers voor .nl brengen we overigens niet bij AWS of een andere hyperscaler onder, ook niet in de toekomst.