Waarom een DNS-landlabel geen VPN-lek bewijst
Een test koppelt een adres aan een land; dat zegt weinig over de route. Lees de resolver, de doorgifteketen en het beleid voordat je iets wijzigt.
Buitenlands lijkende resolveradressen duiken voortdurend op in DNS-testresultaten, en de conclusie die mensen trekken is altijd dezelfde: de query's moeten uit de tunnel zijn ontsnapt. Soms was dat zo. Vaker beschrijft het rapport welke recursieve dienst antwoordde en waar een database dat adres plaatst, en dat is een uitspraak over infrastructuur, niet over jouw pakketten. Het onderscheiden van waarneming en gevolgtrekking vereist drie feiten: wie antwoordde, hoe de naam reisde en welk beleid je werkelijk hebt geconfigureerd.
Lees wat de test werkelijk heeft waargenomen
De meeste testpagina's werken hetzelfde: ze vragen de client een unieke hostnaam op te lossen en kijken dan welke resolver die heeft opgehaald, of ze sturen simpelweg het resolveradres terug dat de client meldt. Dat identificeert een recursieve dienst en, als de query client-subnetinformatie bevatte, een ruwe netwerklocatie. Het bewijst niet dat de query het apparaat buiten de tunnel heeft verlaten, en zeker niet dat voor elke naam hetzelfde pad is gebruikt. Eén waarneming van één opzoeking wordt veralgemeend tot een uitspraak over al het verkeer.
Een test die het resolveradres toont, is nuttiger dan een landbadge, omdat het adres kan worden vergeleken met de resolverslijst die de client werkelijk heeft ontvangen.
Anycast en doorgifte verklaren de meeste verrassingen
Grote publieke resolvers kondigen hetzelfde adres vanaf veel locaties aan, en het netwerk stuurt elke query naar de site die in routeringstermen het dichtstbij is. Een geolocatiedatabase koppelt dat adres vervolgens aan één locatie, die een bedrijfsregistratieadres op een ander continent kan zijn of een datacenter dat niet degene is die antwoordt. RFC 4786 behandelt de operationele praktijk voor anycast-diensten en de moeilijkheid om zo'n adres aan één fysieke plek te koppelen. De kaart is een vereenvoudiging van een routeringsbeslissing, en ze vereenvoudigt in de richting die alarmerende resultaten oplevert.
Doorgifte voegt een tweede laag toe. Een lokale stub-resolver, een router of een ISP-resolver kan query's doorgeven aan een dienst hogerop, en de naam die in de test verschijnt weerspiegelt de laatste operator in die keten in plaats van de eerste. Client-subnetextensies kunnen een antwoord van boven afstemmen op jouw netwerk terwijl ze de gerapporteerde locatie laten lijken op een plek waar je nooit bent geweest.
Een geconfigureerde resolver kan dus correct zijn en toch een buitenlands lijkend resultaat opleveren, en een resolver in je eigen land kan de verkeerde zijn omdat hij bij een partij hoort die je niet hebt gekozen.
Wie de naam ontving, en via welke route
Twee vragen beantwoorden het praktische deel: welke server de client gebruikt, en of die server via de tunnel bereikbaar is. Vergelijk de resolverslijst met het adres in het testresultaat voordat je conclusies over routering trekt, en controleer daarna dat de query naar dat adres via de tunnelinterface naar buiten gaat. Als de twee adressen verschillen, is de interessante vondst dat iets de bedoelde resolver heeft herschreven of omzeild, en dat verdient een nauwkeuriger blik dan de landnaam.
resolvectl query example.com
resolvectl status | grep -A3 'DNS Servers'
dig +short TXT whoami.akamai.net
De eerste opdracht toont welke server voor een naam antwoordde, de tweede toont de geconfigureerde lijst en de reikwijdte ervan, en de derde meldt het resolveradres zoals een publieke dienst het ziet. Wanneer alle drie overeenkomen, doet het beleid wat het is geconfigureerd om te doen, wat het landlabel ook zegt.
Vergelijk met het beleid dat je hebt gekozen
Een VPN die een resolver opdringt, een browser die is geconfigureerd om zijn eigen versleutelde DNS te gebruiken en een besturingssysteem dat de instellingen van één interface verkiest kunnen afzonderlijk correct zijn terwijl ze samen tegenstrijdig zijn. Moderne browsers kunnen query's via versleuteld transport sturen naar een provider die in de browser is gekozen, wat de resolverslijst van het systeem bewust omzeilt. Dat is geen lek in de zin van een kapotte tunnel; het is beleid dat elders is gekozen, en uitzoeken waar dat is gebeurd is de echte taak.
Werkapparaten voegen domeinspecifieke regels toe: interne namen moeten naar de resolver van de organisatie gaan, terwijl al het andere de standaard volgt. Die regeling vervangen omdat een testpagina een onverwacht land toonde, is hoe interne namen voor een heel team ophouden met op te lossen.
Houd tests smal en veilig
Een publieke testdienst vragen naar een interne hostnaam onthult de naam aan een partij die er niets mee te maken heeft, en het antwoord vertelt je niets dat het lokaal lezen van de resolverslijst niet zou vertellen.
Gebruik in plaats daarvan namen die infrastructuur onthullen, leg het resolveradres, de reikwijdte en de gebruikte interface vast, en vergelijk dat met de gedocumenteerde bedoeling. Een kaartlabel is context voor een gesprek en geen geslaagd-of-gefaald resultaat, en het als een vonnis behandelen levert configuratiewijzigingen op in plaats van diagnose.