Verbeterd inzicht in DNS-query’s met Tapdance

Onze nieuwe opensource applicatie voor bijna realtime DNS-statistieken

Tapdanser op een podium met toekijkend publiek

SIDN beheert een wereldwijde DNS-infrastructuur waarmee .nl-domeinnamen altijd en overal snel bereikbaar zijn. In een vorige blog lichtten we deze infrastructuur in detail toe en bespraken we onze datagedreven aanpak voor het beheren en verbeteren ervan. Een vereiste daarvoor is inzicht in DNS-querydata. In deze blog introduceren we Tapdance: onze nieuwe opensource applicatie die bijna realtime DNS-data verrijkt en visualiseert.

Meten is weten

Ons DNS-team gebruikt DNS-querystatistieken voor het monitoren en verbeteren van de dienst. Zo willen we bijvoorbeeld snel kunnen zien of DNS-servers onder druk staan, zodat we servercapaciteit kunnen bijschakelen. Met informatie over waar in de wereld DNS-query’s vandaan komen en wat de reactietijd is tussen resolver en nameserver, kunnen we beter beslissen op welke locaties we onze DNS-servers moeten plaatsen. Die informatie vormt de basis van ons optimalisatie-algoritme Autocast. Veel van deze DNS-informatie verzamelden we al met bestaande tooling, maar die schiet soms te kort of is verouderd.

Beperkingen van de huidige meetmethodes

Tot nu toe gebruikten we 2 systemen om inzicht in .nl-DNS-query’s en onze infrastructuur te verkrijgen: DSC (DNS Statistics Collector) en ENTRADA.

DSC is de de-facto standaard voor het verzamelen van DNS-querystatistieken op autoritatieve nameservers, maar heeft voor ons een aantal tekortkomingen. DSC bestaat uit een uitgebreide set van tellers van verschillende DNS-kenmerken als querytype, responsecode en DNSSEC-query’s. Standaard worden deze statistieken niet verrijkt met geografische informatie en de latency tussen resolver en nameserver; informatie die voor onze datagedreven infrastructuur cruciaal is. DSC aggregeert statistieken lokaal op de anycastserver en schrijft die aggregaties naar disk als XML-bestandjes die later moeten worden opgehaald door een centraal component dat de statistieken van alle locaties samenvoegt. Dat model is voor onze dynamische infrastructuur suboptimaal. Het zorgt voor een vertraging van zo’n 15 minuten voor de data inzichtelijk is, we moeten een extra centraal component onderhouden in onze verder decentrale infrastructuur, en bij fouten kunnen XML-bestanden zich op de anycastservers ophopen of verloren gaan.

De tweede tool die we gebruiken is ENTRADA, een door SIDN Labs ontwikkeld DNS-dataplatform waarin alle .nl-query’s, zo’n 8 miljard per dag, anderhalf jaar worden opgeslagen voor wetenschappelijk onderzoek. De data in ENTRADA is wél verrijkt met geografische informatie van resolvers, en tot op bepaalde hoogte ook met de latency tussen resolvers en nameservers. De latency wordt in ENTRADA voor DNS-query’s via TCP bepaald door de tijd tussen 2 opeenvolgende stappen in de ‘TCP-handshake’ te berekenen. Dit werkt over het algemeen goed, maar met die methode meten we alleen de latency van TCP-DNS-query’s, wat maar zo’n 1% van alle DNS-query’s is. Het geeft dus een vertekend en incompleet beeld van resolverlatency. Bovendien is ENTRADA niet gemaakt voor snelle visualisaties en duurt het door complexe dataverwerkingen en aggregaties zo’n 25 minuten voor de data inzichtelijk wordt.

Tapdance moderniseert anycastzichtbaarheid

Om de beperkingen van de bovenstaande tooling te ondervangen, ontwikkelden we een eenvoudige applicatie die precies doet wat we willen, genaamd Tapdance. Tapdance is gebaseerd op de dnstap-loggingstandaard die door vrijwel alle nameserversoftware wordt ondersteund.

Tapdance is een losstaande applicatie die draait op elke DNS-anycastserver zonder centraal component om statistieken te verzamelen of de applicatie aan te sturen. Het groeit dus dynamisch mee met onze DNS-infrastructuur zonder ernaar om te hoeven kijken. Door de dnstaplogs van nameserversoftware in realtime te volgen, genereren we querystatistieken die binnen een minuut zichtbaar zijn op onze dashboards. Daarnaast verrijken we deze informatie meteen met de geografische locatie van resolvers én de latency tussen resolver en nameserver. Die latency meten we actief, door resolvers die regelmatig DNS-query’s sturen zelf een ICMP-ping te sturen. Daardoor hebben we latency-informatie van alle significante resolvers en niet alleen de resolvers die via TCP-DNS-query’s sturen.

Samenvattend: Tapdance moderniseert en verbetert ons inzicht in DNS-verkeer ten opzichte van huidige tooling door:

  • decentrale applicatiearchitectuur;

  • kortere tijdsduur van query tot visualisatie;

  • uitgebreidere statistieken met geografische details en latency-informatie over alle resolvers; en

  • tussenliggende verwerkingsstappen uit het proces te halen waardoor het minder foutgevoelig is.

Dit stelt ons in staat om onze DNS-anycastinfrastructuur nog verder te verbeteren en sneller te kunnen reageren op cybersecuritydreigingen zoals DDoS-aanvallen.

(Klik op de afbeelding om deze te vergroten.)

Screenshot van het Tapdance-dashboard
https://images.ctfassets.net/yj8364fopk6s/4mYHes1xH4eoK4HWSxFnWM/dbc30c27ea8cd4d067d325e79312896f/Tapdance-dashboard.png

Figuur 1: Voorbeeld Tapdancedashboard met DNS-anycaststatistieken (incomplete data ter illustratie).

Screenshot van het Tapdance-dashboard

Opensource

We publiceren Tapdance als opensourcesoftware op Codeberg, zodat andere DNS-anycastbeheerders het ook kunnen gebruiken. Als je vragen hebt over Tapdance of suggesties voor verbetering, aarzel dan niet om contact met ons op te nemen via sidnlabs@sidn.nl!