DNS software-ontwikkelaars willen code opschonen
"Bijna een kwart van de code is nu voor workarounds en corner cases"
"Bijna een kwart van de code is nu voor workarounds en corner cases"
De ontwikkelaars van DNS-resolver software hebben 1 februari 2019 uitgeroepen tot DNS Flag Day. Dat betekent dat zij op of rond die datum stoppen met de ondersteuning van niet goed functionerende DNS-servers in hun software. Omdat ook de grote aanbieders van publieke DNS-diensten (Cisco Umbrella, Cloudflare (1.1.1.1), Google Public DNS, Quad9 (9.9.9.9) en CleanBrowsing) met dit initiatief meedoen, kunnen domeinen ondergebracht op dergelijke gemankeerde DNS-servers vanaf 1 februari onbereikbaar worden.
In dit geval gaat het specifiek om verouderde server-software die niet goed overweg kan met de EDNS-uitbreiding op het DNS-protocol. Maar deze problematiek is breder dan dat: de DNS-software is over de decennia heen zodanig uitgedijd dat dat een probleem is geworden. Voor de toekomst kunnen we dus meer van dit soort opschoondagen verwachten.
Domeinnaamhouders en operators moeten testen op EDNS-compliance"Bijna een kwart van onze code bestaat uit het faciliteren van workarounds en corner cases", zegt Benno Overeinder, de directeur van NLnet Labs, verantwoordelijk voor de ontwikkeling van de Unbound resolver. "De situatie waarin we nu verkeren heeft een lange geschiedenis. Bij de invoering van EDNS [met name ten behoeve van DNSSEC] hebben we noodgedwongen code ingebouwd om servers die het DNS-protocol niet goed of onvolledig implementeerden toch te kunnen blijven benaderen — dat alles ten behoeve van onze gebruikers. Maar daarmee komen de kosten van een andermans problemen wel bij ons te liggen."
"De afgelopen vijf, zes jaar zijn we als DNS-software-ontwikkelgemeenschap tot de conclusie gekomen dat dit anders moet. Vorig jaar heeft CZ.NIC [de registry voor het Tsjechische .cz-landendomein en ontwikkelaar van de Knot DNS server] het initiatief genomen om hierin gezamenlijk op te trekken. Interoperabiliteit is niet alleen een kwestie voor de ontwikkelaars, maar voor de hele DNS-gemeenschap."
Peter van Dijk, Senior Engineer bij PowerDNS, legt uit wat een workaround voor gemankeerde DNS-servers op een resolver concreet inhoudt: "Als we geen antwoord krijgen van een server omdat die niet goed met de EDNS queries overweg kan, dan proberen we het bijvoorbeeld eerst nog een keer. Daarna proberen we een alternatieve nameserver, maar die draait misschien op dezelfde software. Vervolgens proberen we verschillende EDNS-vlaggen in onze query uit te zetten. En als laatste fallback kunnen we een query sturen die helemaal geen EDNS-vlaggen bevat. Al met al ben je dan meer dan tien seconden en een flink aantal netwerkpakketjes verder." Daarnaast maken dit soort workarounds de code complex en moeilijker te onderhouden, en daarmee onveiliger.
Naast dit soort praktische workarounds om de boel aan de gang te houden, zijn er ook de corner cases. Daarbij gaat het om interpretaties, uitzonderingen en interacties op protocol-niveau. Internetprotocollen ontwikkelen zich immers niet zelden gedurende meerdere decennia. Een standaard die ooit begon als een uiterst elegante oplossing groeit in de loop der tijd door onvoorziene zaken en nieuwe ontwikkelingen uit tot een lappendeken.
Bert Hubert, de oprichter van PowerDNS, schreef een klein jaar geleden al een blog post waarin hij waarschuwt voor de sterk toegenomen complexiteit van DNS en de interacties tussen alle onderdelen. Dat maakt de ontwikkeling en het onderhoud van de software steeds lastiger, met uiteindelijk consequenties voor de stabiliteit van de infrastructuur en de diversiteit van het ecosysteem, en het blokkeren van innovaties. Hij noemt met name DNSSEC en NSEC3 als belangrijke bronnen van nieuwe complexiteit en ruimte voor interpretatie. Hubert eindigt zijn post met een oproep om heel zorgvuldig te zijn met het bedenken van nieuwe features/standaarden, en software developers en operators meer te betrekken bij het ontwikkelen daarvan.
Specifiek voor DNS Flag Day moeten domeinnaamhouders en operators hun domeinnamen (in feite de achterliggende nameservers) testen op EDNS-compliance. Dat kun je online doen op de home page van DNS Flag Day of via de EDNS Compliance Tester [1, 2] van ISC.
SIDN Labs heeft de afgelopen weken al intensief naar dit probleem gekeken. Naar aanleiding daarvan zijn diverse operators van .nl-domeinnamen ingeseind, die inmiddels ook actie ondernomen hebben. De verwachting is dan ook dat de impact voor de .nl-zone minimaal zal zijn.