Noodschakelaar aan, een app bewust van de tunnel uitgesloten, en de twee eisen spreken elkaar nu tegen. De ene zegt dat niets naar buiten mag behalve via de tunnel, de andere zegt dat dit programma direct moet gaan. Elke client lost dat conflict anders op, en de instellingenpagina legt zelden uit welke regel wint. Schrijf het beleid per toepassing op voordat je een label vertrouwt.

Twee beleidsregels, één machine

Een noodschakelaar is een belofte over falen: als de tunnel het verkeer niet beschermt, stopt het verkeer. Gesplitst tunnelen is een belofte over selectie: deze programma's of bestemmingen gebruiken de tunnel, en die andere niet. De tweede belofte maakt verkeer dat de eerste moet beoordelen. Geen van beide beloftes is fout; ze zijn alleen door verschillende mensen voor verschillende dreigingen geschreven.

Drie uitkomsten zijn mogelijk en slechts één ervan is wat de uitrol bedoelde. De uitgesloten app kan tijdens een storing direct blijven, wat de splitsing respecteert en de noodschakelaar breekt. Hij kan met al het andere worden geblokkeerd, wat de noodschakelaar respecteert en de splitsing breekt. Of hij wordt alleen soms geblokkeerd, afhankelijk van hoe het platform de regel beoordeelt nadat een interface verdwijnt. Dat laatste geval levert de tickets op.

Schrijf de applijst vóór de regel

Noem de programma's die de tunnel moeten gebruiken, de programma's die direct moeten gaan, en de namen of bestemmingen die nooit op een van beide lijsten mogen staan. Neem het gedrag van de resolver en de IPv6-kant apart op, omdat beide een ander beleid kunnen volgen dan paginaverkeer.

Regels per app matchen meestal een uitvoerbaar bestand of een pakket, niet een profiel daarbinnen. Een browserprofiel, een privévenster en een extensie dragen geen eigen netwerkidentiteit, dus ze erven wat het proces heeft gekregen. Een hulpproces dat door die browser is gestart, erft diezelfde regel misschien helemaal niet.

Er zijn twee lijsten nodig, niet één: wat de tunnel moet dragen, en wat om welke reden dan ook nooit buiten hem mag reizen. Een toepassing die op beide staat, is een eisenconflict en geen implementatiedetail, en dat moet worden beslecht voordat de client wordt geconfigureerd.

Wat de client tijdens een storing doet

Sommige implementaties blokkeren uitgesloten apps tijdens een storing en herstellen de toegang bij opnieuw verbinden. Andere behouden het directe pad de hele tijd, wat consistent is met de splitsing en zwakker als veiligheidseigenschap. Een vergrendeling op platformniveau kan de eigen selectie per app van de client volledig overrulen. Dat verschil is niet cosmetisch, want het bepaalt of de uitgesloten app een beleidsuitzondering of een gat is.

De altijd-aan-VPN van Android met de optie om verbindingen zonder VPN te blokkeren is het duidelijkste geval, omdat het platform de vergrendeling afdwingt en niet de client, en een uitgesloten pakket wordt met al het andere geblokkeerd zolang de tunnel ligt. Een desktopclient die uitsluitingen per app in zijn eigen stuurprogramma toepast, laat het uitgesloten proces meestal op de fysieke interface, omdat hij dat verkeer nooit bezat. Beide gedragingen zijn verdedigbaar en slechts één past bij een eis die zegt dat de uitgesloten app bruikbaar moet blijven. Vraag welke component de regel afdwingt voordat je het resultaat interpreteert.

Lees het gedrag voor het besturingssysteem voor je, niet de instelling met dezelfde naam elders. De handhavings-API's verschillen, en één selectievakje kan op een desktop en op een telefoon strikt verschillende dingen betekenen. De versie telt ook mee, want de vergrendelingsbesturing is tussen Android-versies over schermen verhuisd, en een uitsluitingslijst aan clientzijde is niet dezelfde besturing als een platformvergrendeling.

Drie momenten: tunnel omhoog, tunnel omlaag, opnieuw verbonden

Gebruik onschadelijke verzoeken op drie momenten: terwijl de tunnel werkt, tijdens de storing die je aangaat, en na het opnieuw verbinden. Eén browserresultaat kan het gedrag van de uitgesloten app niet vaststellen.

curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com

Het uitgaande adres laat zien welk pad is genomen, en de expliciete interfacetest laat zien wat er gebeurt als de tunnel de enige beschikbare uitweg is. Noteer het verwachte resultaat naast elke regel voordat je er een uitvoert, anders wordt de uitvoer achteraf geïnterpreteerd.

Als een uitgesloten app offline gaat, bekijk dan de voorrang van het beleid voordat je een brede firewalltoestemming toevoegt, want die correctie vernietigt het onderscheid dat je testte. Als hij direct blijft, bevestig dan dat het de gedocumenteerde uitzondering was en geen toevallige terugval. Bij een strenge eis voor het hele apparaat, kort de uitzonderingenlijst in totdat die met de hand te testen is.

Gerelateerde artikelen