Il tuo interruttore di sicurezza bloccherà l’app che hai escluso dal tunnel?
Un’app esclusa può andare diretta di proposito, mentre una protetta deve fallire chiusa. Scrivi prima la politica per app, poi verifica cosa applica il client.
Interruttore di sicurezza attivo, un’app deliberatamente esclusa dal tunnel e i due requisiti ora si contraddicono. Uno dice che nulla può uscire se non dal tunnel, l’altro dice che questo programma deve andare diretto. Ogni client risolve quel conflitto in modo diverso, e la pagina delle impostazioni spiega raramente quale regola vince. Scrivi la politica per app prima di fidarti di qualsiasi etichetta.
Due politiche, una macchina
Un interruttore di sicurezza è una promessa sul guasto: quando il tunnel non protegge il traffico, il traffico si ferma. Il tunnel diviso è una promessa sulla selezione: questi programmi o destinazioni usano il tunnel, e quelli no. La seconda promessa crea traffico su cui la prima deve decidere. Nessuna delle due promesse è sbagliata; le hanno semplicemente scritte persone diverse per minacce diverse.
Tre esiti sono possibili e solo uno è quello che il deployment intendeva. L’app esclusa può restare diretta durante un’interruzione, il che rispetta la divisione e rompe l’interruttore. Può essere bloccata con tutto il resto, il che rispetta l’interruttore e rompe la divisione. Oppure può essere bloccata solo a volte, a seconda di come la piattaforma valuta la regola dopo che un’interfaccia scompare. È quest’ultimo caso a generare ticket.
Scrivi l’elenco delle app prima della regola
Elenca i programmi che devono usare il tunnel, quelli che devono andare diretti e i nomi o le destinazioni che non devono mai comparire in nessuno dei due elenchi. Includi separatamente il comportamento del resolver e il lato IPv6, perché entrambi possono seguire una politica diversa da quella del traffico delle pagine.
Le regole per app di solito corrispondono a un eseguibile o a un pacchetto, non a un profilo al suo interno. Un profilo del browser, una finestra privata e un’estensione non portano un’identità di rete propria, quindi ereditano ciò che ha ricevuto il processo. Un processo ausiliario avviato da quel browser potrebbe non ereditare affatto la stessa regola.
Servono due elenchi, non uno: ciò che il tunnel deve trasportare e ciò che non deve mai viaggiare fuori di esso per nessun motivo. Un’app presente in entrambi è un conflitto di requisiti e non un dettaglio implementativo, e va risolto prima di configurare il client.
Cosa fa il client durante un’interruzione
Alcune implementazioni bloccano le app escluse durante un’interruzione e ne ripristinano l’accesso alla riconnessione. Altre mantengono il percorso diretto per tutto il tempo, il che è coerente con la divisione e più debole come proprietà di sicurezza. Un blocco a livello di piattaforma può annullare del tutto la selezione per app del client. Questa differenza non è estetica, perché decide se l’app esclusa è un’eccezione di politica o un buco.
La VPN sempre attiva di Android con l’opzione di bloccare le connessioni senza VPN è il caso più chiaro, perché la piattaforma impone il blocco e non il client, e il pacchetto escluso viene bloccato con tutto il resto mentre il tunnel è giù. Un client desktop che applica esclusioni per app nel proprio driver di solito lascia il processo escluso sull’interfaccia fisica, perché non ha mai posseduto il traffico di quel processo. Entrambi i comportamenti sono difendibili e solo uno corrisponde a un requisito che dice che l’app esclusa deve restare utilizzabile. Chiedi quale componente impone la regola prima di interpretare il risultato.
Leggi il comportamento del sistema operativo che hai davanti, non l’impostazione con lo stesso nome altrove. Le API di applicazione differiscono, e una casella può significare cose strettamente diverse su un desktop e su un telefono. Conta anche la versione, perché il controllo di blocco si è spostato tra schermate nelle varie versioni di Android, e un elenco di esclusioni lato client non è lo stesso controllo di un blocco di piattaforma.
Tre momenti: tunnel attivo, tunnel giù, riconnessione
Usa richieste innocue in tre momenti: mentre il tunnel funziona, durante il guasto che ti interessa e dopo la riconnessione. Un solo risultato del browser non può stabilire il comportamento dell’app esclusa.
curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com
L’indirizzo di uscita mostra quale percorso è stato preso, e il test esplicito dell’interfaccia mostra cosa succede quando il tunnel è l’unica uscita disponibile. Annota il risultato atteso accanto a ogni riga prima di eseguirne una, altrimenti l’output verrà interpretato a posteriori.
Se un’app esclusa va offline, esamina la precedenza delle politiche prima di aggiungere un’autorizzazione ampia nel firewall, perché quella correzione distrugge la distinzione che stavi testando. Se resta diretta, conferma che era l’eccezione documentata e non un ripiego accidentale. Per un requisito stretto su tutto il dispositivo, accorcia l’elenco delle eccezioni finché non è testabile a mano.