De winkel laadt thuis prima en toont een muur van 'ongebruikelijk verkeer' zodra de tunnel staat. Een forum weigert je in te loggen, en een streamingpagina houdt vol dat je in een land bent dat je nooit hebt bezocht. Niets daarvan vereist spyware. Een site ziet het adres waar je pakketten vandaan komen, en met een VPN hoort dat adres bij een datacenter in plaats van een thuisverbinding. Het meeste wat VPN-detectie heet begint en eindigt bij dat ene feit, en de rest is gevolgtrekking met een voorspelbaar foutpercentage.

De blokkade begint bij waar je pakketten vandaan lijken te komen

Elk verzoek draagt een bronadres, en de ontvangende server kan het opzoeken in openbare data: welk netwerk het aankondigt, of dat netwerk een hostingprovider is, of het in misbruiklijsten is verschenen, en welk land het register toekent. Niets daarvan identificeert je, en alles samen is genoeg om je in een hokje te plaatsen.

Bekijk je eigen verkeer zoals een vreemde dat zou doen. Twee commando's dekken het grootste deel van het oppervlak, en de tweede is degene die mensen vergeten:

curl -sS https://ipinfo.io/json
dig +short TXT o-o.myaddr.l.google.com @ns1.google.com

De eerste geeft het uitgangsadres, de organisatie en het land terug. De tweede geeft het adres van de resolver die de naamserver van Google heeft bereikt; die hoort vaak bij een ander netwerk dan je uitgang, en dat is het adres dat een site ziet als hij gegevens aan de resolverkant logt. Wanneer die twee bij verschillende landen horen, vinden sommige sites de afwijking verdacht, ook al is er niets mis met je configuratie.

Wanneer de weigering pas begint nadat de tunnel staat, verdenk dan eerst het uitgangsadres. Wissel van server en probeer opnieuw voordat je de browser aanraakt. Een blokkade die je over drie uitgangen van dezelfde provider volgt, gaat over de reeksen van de provider; een blokkade die op een andere server verdwijnt, gaat over dat ene adres.

Tijdzone, taal en klok kloppen niet met het adres

Paginacode kan je tijdzone, je taalvoorkeuren en je scherminstellingen lezen zonder enige toestemmingsvraag. Een browser die Midden-Europese tijd meldt terwijl de verbinding uit een datacenter in Singapore komt, is een sterker signaal dan het adres alleen, en dat is precies het soort afwijking dat fraudescores zijn gebouwd om op te merken.

Intl.DateTimeFormat().resolvedOptions().timeZone
navigator.language
Intl.DateTimeFormat().resolvedOptions().locale

Die drie regels in de ontwikkelaarsconsole vertellen wat je browser vrijwillig geeft. Een VPN-client kan je route veranderen en niets anders, dus het profiel dat je draagt blijft binnenlands terwijl je uitgang dat niet is. Consistentie is hier wat telt: een laptop die op dezelfde regio als de uitgang is ingesteld, ziet er gewoon uit, en een die zichzelf tegenspreekt niet.

Daarom is de fout ook periodiek. Veel sites kan het niets schelen, enkele geven er een score aan, en één lidmaatschappijsite besluit dat je een fraudeur bent. De client werkt in alle drie de gevallen correct, en daarom is het gebruikelijke antwoord van de support, 'het zal je browser wel zijn', zowel irritant als deels waar.

Wat paginacode echt over je machine weet

JavaScript heeft geen API die netwerkinterfaces opsomt. Een pagina kan niet vragen welke adressen je laptop heeft, dus de oude bewering dat een script je LAN-adres leest, is vooral een herinnering aan het plugintijdperk, toen ActiveX-besturingen, Java-applets en andere native code precies dat konden.

SignalWhat it revealsStatus today
Source address of the requestExit network, country, hosting statusAlways visible; the main signal
Time zone and languageWhere the profile claims to beReadable without permission
WebRTC candidatesLocal addresses, historicallyHost candidates are mDNS-obfuscated by default
Interface listAll local addressesNot available to ordinary JavaScript

WebRTC is de eerlijke uitzondering op 'geen lokale adreslekken'. De kandidaatverzameling stelde ooit lokale adressen bloot aan elke pagina die erom vroeg, en de oplossing was hostkandidaten te vervangen door willekeurige mDNS-namen. Die standaard geldt in huidige browsers, maar het is een browserbeslissing en geen protocolgarantie, dus een verouderde build of een geharde configuratie die lokale kandidaten weer inschakelt, kan nog steeds lekken. De browser bijwerken helpt je hier meer dan welke extensie dan ook.

Je provider ziet de namen, niet de inhoud

HTTPS beschermt de inhoud van een pagina van begin tot eind, en de tunneloperator die die bytes doorstuurt kan ze niet lezen. De operator kan nog steeds zien welk adres je hebt benaderd, en in de meeste uitrollingen de servernaam in de handshake, omdat de naam leesbaar moet zijn om de verbinding naar de juiste site te routeren. Encrypted Client Hello bestaat juist om dat veld te verbergen, en het helpt alleen wanneer zowel de client als de site het ondersteunen.

Naamresolutie is de andere helft. Als je provider ook de resolver levert, ziet die elke naam die je opzoekt voordat er een verbinding bestaat. Als je apparaat een openbare resolver via HTTPS gebruikt, ziet de provider een verbinding met die resolver en niets anders, terwijl de resolver zelf de lijst ziet.

Een onversleutelde HTTP-aanvraag is leesbaar voor de operator om dezelfde reden dat hij leesbaar is voor het hotelnetwerk: niets erin is versleuteld. Een tunnel heeft nooit anders beweerd, en hij repareert de keuze van de applicatie niet.

Scheid 'dit is een VPN' van 'dit ben ik'

Detectie is goedkoop, probabilistisch en vaak fout. Gedeelde uitgangsadressen worden gemarkeerd omdat iemand anders ze heeft misbruikt, bedrijfsreeksen worden als hosting geclassificeerd, en mobiele providers produceren geografische resultaten die iedereen verrassen. Identificatie is een ander probleem: dat vereist een blijvende koppeling zoals een account waar je bent ingelogd, een cookie, een betaalgegeven of twee waarnemers die notities vergelijken.

Bepaal tegen welke van de twee je echt vecht. Als het doel is een pagina te lezen, doet HTTPS dat werk al en verandert de tunnel weinig. Als het doel is te voorkomen dat de site weet in welke stad je bent, zijn de uitgang en de resolver wat telt. Als het doel is de koppeling met je echte identiteit te verbreken, is het account het zwakke punt, en van server wisselen doet niets aan de login die je net hebt gebruikt.

Een nieuwe uitgang logt je nergens uit, en hij kan niet wissen wat een site al over het gebruikte account heeft opgeslagen. De praktische volgorde is daarom weinig glamoureus: kies een uitgang waarvan het netwerk gewoon lijkt, houd het browserprofiel daarmee consistent, werk de browser bij zodat lekgevoelige functies hun moderne standaardwaarden gebruiken, en accepteer dat een klein aantal sites je nog steeds verkeerd inschat.

Gerelateerde artikelen