Wat is Zonepub?
‘Zonepub’ is de nieuwe manier van zonefile generatie ter vervanging van ‘Dynamic Update’. DNS Belgium heeft deze nieuwe methode in productie gezet op 10 maart 2020 voor de domeinen, .brussels en .vlaanderen. En met een paar maanden vertraging vanwege het Coronavirus, ook voor het .be-domein op 10 juni 2020.
Waarom Zonepub?
Tien jaar geleden was DNS Belgium een van de eerste registries om de feature ‘Dynamic Update’ in de DNS software te gebruiken. Dit was destijds een enorme stap vooruit, omdat we de nodige wijzigingen aan de zonefile quasi direct live konden zetten. Dynamic Update heeft door de jaren heen steeds goed gewerkt en zijn dienst bewezen om al de nodige wijzigingen aan de zonefile correct en op tijd te behandelen. Voor de .be zone waren dit bijvoorbeeld continu meerdere wijzigingen per minuut.
Maar Dynamic Update had 1 groot nadeel: Dynamic Update plaatste de wijzigingen aangebracht via het registratieplatform rechtstreeks in de zonefile. Er gebeurde geen extra validatie meer op de zonefile vooraleer deze live werd gezet. Dit hield een risico in, wat ook is gebleken na een update van de DNS-software in november 2018 waarbij de DNSSEC -data in de zonefile incorrect is geraakt omwille van een software bug.
Omwille van het groeiende belang van een correcte DNSSEC-chain was het noodzakelijk om pre-publicatie DNSSEC-validatiechecks in te bouwen. Het groeiende belang van DNSSEC blijkt uit het feit dat:
- er steeds meer resolvers zijn die ook DNSSEC valideren
- er meer subdomeinen zijn die DNSSEC ondertekenen
DNS Belgium besloot uiteindelijk te kiezen voor de methode van Zonepub implementatie, uitgelegd op deze pagina. Deze is ondertussen ook al geïmplementeerd op de live omgeving.
Beschrijving Zonepub
De Zonepub applicatie is onderverdeeld in 3 opeenvolgende stadia die opnieuw starten wanneer een vorige run is beëindigd:
- zonefile generation
- zonefile signing
- zonefile distribution
Op het einde van elk stadium voeren we verscheidene automatische validatiechecks uit.
Zonefile generation is een applicatie die een DNS-zonefile aanmaakt vanuit de database van het registratieplatform. De output van het zonefile generation proces is een unsigned zonefile die de laatste geregistreerde updates van dat moment en een hoger serial nummer bevat.
We voeren een aantal validatiechecks uit en starten vervolgens het zone signing proces. Dit proces voegt eerst al de DNSSEC-records van de vorige Zonepub run toe aan de gegenereerde zonefile.
Deze records worden indien nodig geüpdatet:
- We updaten de RRSIG-records voor nieuwe/verwijderde/gewijzigde records uit de unsigned zone.
- We updaten de RRSIG-records die zeer binnenkort niet meer geldig zijn (records waarvan de validity periode bijna is verlopen).
- We genereren de NSEC3 chain opnieuw.
Als het signing process zonder problemen is verlopen en al de validatiechecks die hierop volgen ook geen foutmeldingen geven, start vervolgens het zonefile distribution proces. Dit distributieproces zorgt ervoor dat de gesignde zone na een laatste validatieronde verder gedistribueerd wordt naar onze publieke nameservers. Dit gebeurt door een incremental zone transfer (IXFR), die enkel de updates bevat van de gewijzigde data in vergelijking met de zonefile van de vorige Zonepub run.
Voordelen versus nadelen van Zonepub
De voornaamste reden waarom DNS Belgium voor het updaten van de zonefile is overgestapt van het Dynamic Update proces naar het Zonepub proces is de mogelijkheid om extra validatiechecks te kunnen invoeren. Deze checks verkleinen de kans dat een foutieve of onvolledige zonefile ooit live komt. We kunnen de DNSSEC-data in de zonefile ook verifiëren vooraleer deze live komt.
De validatiechecks die momenteel geïmplementeerd zijn, zijn verspreid over de 3 Zonepub stadia (zie hoger):
- validatie of het aantal gewijzigde records binnen voorgedefinieerde drempelwaarden valt
- validatie op wijzigingen van zonefile grootte in vergelijking met de vorige zonefile; deze moeten binnen minimum en maximum drempelwaarden vallen
- validatie op correctheid van NS en glue records in header
- validatie of het serienummer correct is verhoogd en nog steeds RFC -compliant is
- validatie op het EOF-marker en het laatste record in de zonefile
- validatie op een aantal verplichte records in de zonefile
- check of al de records aan het begin van een Zonepub run (zonefile generation) ook nog steeds correct aanwezig zijn aan het eind van dezelfde Zonepub run (zonefile distribution)
- validatie op correctheid van de TTL -waarde op elk record
- uitgebreide DNSSEC-validatie checks
Indien een check faalt dan stopt het Zonepub proces. Er wordt direct een alarm uitgestuurd naar het operationele team van DNS Belgium. De zonefile wordt op dat moment niet meer geüpdatet tot het probleem manueel is opgelost. We verkiezen een lichtjes verouderde zone boven een foutieve.
Al deze checks runnen neemt wat tijd in beslag. Hierdoor komen updates aan de zone iets later live in vergelijking met het Dynamic Update proces van voordien, waarbij de updates quasi direct live stonden.
Voor de .be-zone met momenteel meer dan 1,6 miljoen records duurt het gehele proces van 1 Zonepub run ongeveer 15 minuten. Een aantal validatiechecks lopen parallel om het proces te versnellen. Updates aan de zonefile die net binnenkomen nadat een nieuwe Zonepub run is gestart, worden in de volgende run meegenomen en komen dus live na ongeveer 30 minuten.