Een kill switch op een functielijst vertelt je bijna niets over wat er gebeurt als de tunnel wegvalt. Eén implementatie sluit geselecteerde processen, een andere installeert pakketfilters op de grens van het besturingssysteem, en een derde probeert simpelweg opnieuw verbinding te maken. Het verschil blijkt in de seconden na een storing, niet op het instellingenscherm. Doorloop deze controles in volgorde en stop bij de eerste die je niet eerlijk kunt beantwoorden, want daar eindigt je werkelijke dekking.

Benoem eerst het handhavingsmechanisme

Procesbeëindiging is een functie van de levenscyclus van de applicatie. Het vindt geselecteerde programma's na een gedetecteerde tunnelstoring en sluit ze. Alles wat niet het hoofdproces is, overleeft: hulpdiensten, achtergrondsynchronisatie en elke applicatie die een seconde later start, hebben hun eigen levenscyclus en hun eigen timing.

Pakketfiltering is een functie van het besturingssysteem. Het weigert verkeer dat niet het toegestane pad volgt, wat een sterker belofte is, maar alleen voor zover de regel echt overeenkomt. Adresfamilie, interface, uitgesloten applicaties en uitzonderingen bepalen dat, niet het label in de client.

Overleeft de blokkade de client?

Stel vier vragen in deze volgorde: wat gebeurt er bij een crash, bij handmatig afsluiten, bij uitloggen en bij herstarten. Een regel die de client zelf onderhoudt, wordt meestal verwijderd bij een nette afsluiting en blijft vaak achter na een crash. Een regel die in het platformarchief is geïnstalleerd, kan zich omgekeerd gedragen: zowel de client als soms de verwijdering overleven.

Sluit de client midden in een lange download en kijk of de overdracht stokt of doorgaat.

Zoek de standaardgaten

IPv6 is de eerste. Een regel die voor IPv4-adressen is geschreven, laat IPv6-verkeer ongemoeid, en veel clients schrijven alleen de v4-helft. De tweede is de interface: USB-tethering, een tweede Wi-Fi-adapter en een cellulair modem vallen misschien niet onder een regel die beperkt is tot de primaire verbinding. Uitgesloten applicaties en uitzonderingen voor het lokale netwerk zijn de derde.

Op Windows kun je de geïnstalleerde regels lezen in plaats van de schakelaar te vertrouwen: Get-NetFirewallRule -DisplayName '*VPN*' en netsh wfp show filters tonen beide wat er bestaat. Op Linux dekken iptables -S, ip6tables -S en nft list ruleset de gebruikelijke gevallen, en alle drie vergelijken is het punt.

DNS is de gebruikelijke lek

TCP blokkeren terwijl UDP 53 open blijft, geeft je een zeer overtuigende kill switch die nog steeds elke hostnaamquery beantwoordt. Hetzelfde geldt wanneer DNS aan een resolver op een andere interface wordt gegeven, of wanneer de client alleen v4 blokkeert en de resolver via v6 bereikbaar is.

Met de tunnel neer, los één bekende naam op en kijk of er een antwoord terugkomt. Als dat zo is, is het verkeer niet volledig geblokkeerd, wat het statuspictogram ook zegt.

Test de overgang, niet de schakelaar

De VPN uitzetten via het eigen menu is een nette afsluiting, en het nette geval beheerst elke implementatie goed. De overgang die ertoe doet, is de ruwe: dood het tunnelproces, trek het netwerk eruit, laat de server ophouden met antwoorden. Start dan een verzoek en kijk of het mislukt of stilletjes de fysieke link gebruikt.

Een resultaat van één laptop gaat niet over naar een telefoon of router. Andere platform-API's, andere standaardwaarden, en op Android is het verschil groot: always-on met blokkering wordt door het systeem afgedwongen en niet door de client, dus het blijft werken wanneer de client dat niet doet. Android VPN-richtlijnen beschrijven die splitsing.

Houd een weg terug

Blokkering op systeemniveau heeft de tegenovergestelde storingsmodus. Filters die de client overleven, kunnen een machine na een verwijdering helemaal zonder netwerk achterlaten, wat een supportoproep zonder duidelijke oorzaak is. Voordat je een kill switch inschakelt die platformregels schrijft, noteer hoe die wordt verwijderd, en houd het reparatiepad van de leverancier waar je het kunt vinden.

Als je de crash-, IPv6-, DNS- en overgangscontroles voor je client niet kunt beantwoorden, behandel die dan als een schakelaar op appniveau met bekende gaten en plan daarop.

Gerelateerde artikelen