Tunnel diviso: perché un link si apre fuori dalla VPN che hai configurato
L’instradamento segue il processo che apre il socket, non l’app che ti ha mostrato il link. Dimostra quale programma si connette prima di ampliare le esclusioni.
Instradare un’app attraverso un tunnel non trasporta il suo instradamento su tutto ciò che quell’app avvia, anche se l’interfaccia suggerisce il contrario. Un link consegna una richiesta a un altro programma, quel programma apre il proprio socket, e la piattaforma applica le regole al nuovo processo anziché a quello che ha mostrato il testo. È quel secondo processo che la politica del tunnel vede davvero, e non è quello che hai configurato.
Un’app inclusa può quindi aprire un browser che sta fuori dal tunnel. Un browser escluso può restituire lavoro a un’app che sta dentro. Entrambe le direzioni di questa sorpresa sono comportamento normale.
La parte del flusso di lavoro che nessuno ha configurato
La politica per app si scrive contro l’identità di un eseguibile o di un pacchetto, e ogni connessione viene valutata nel momento in cui viene creata. Il browser, il visualizzatore di documenti, il lettore multimediale e il foglio di condivisione di sistema portano ciascuno la propria identità, e ciascuno riceve il proprio verdetto. Un link profondo trasporta dati, non politica.
Ecco perché l’osservazione sembra arbitraria: lo stesso clic viene instradato in due modi a seconda di quale gestore risponde. Un client di posta dentro il tunnel apre un link in un browser che vive fuori dal tunnel, e la pagina si carica dal tuo indirizzo di casa. Un browser fuori dal tunnel apre un documento in un visualizzatore che vive al suo interno, e il file arriva attraverso l’uscita. Nessuno dei due risultati è un difetto del client.
Un gestore già in esecuzione peggiora le cose. Se il browser è già aperto, il link diventa un messaggio a un processo esistente, e quel processo conserva l’instradamento che aveva all’avvio. Chiudere e riaprire il gestore cambia il risultato, ed è per questo che il problema non si riproduce mai su richiesta.
| Platform | Policy object | What it is evaluated against |
|---|---|---|
| Android | Per-app VPN allowlist | Package name of the process opening the socket |
| Windows | Application traffic filters | Application path in the filter rule |
| Linux | UID or cgroup routing rules | Owner of the socket, which can be a different program |
Quale processo ha davvero stabilito la connessione
Misura il lato che riceve invece di ragionarci sopra. Tieni il tunnel attivo, clicca un link innocuo e guarda i socket che il nuovo programma tiene aperti.
ss -tnp state established '( dport = :443 )' Get-NetTCPConnection -State Established | Select-Object RemoteAddress,OwningProcess
Il primo comando nomina il processo dietro ogni socket stabilita su Linux, e il secondo fa lo stesso su Windows risolvendo l’identificatore del processo proprietario. Confronta il nome del processo con quelli della tua politica. Se il nome è il browser e il browser è escluso, il clic è uscito dal tunnel per progetto e non per un guasto. Associare una regola di politica a un socket vivo è tutto il metodo.
Ripeti il controllo con il gestore già in esecuzione, poi con il gestore chiuso. I due risultati possono differire, e quella differenza spiega la maggior parte delle segnalazioni intermittenti su link che sfuggono a un tunnel.
La copertura è una proprietà del flusso di lavoro
Se un’attività deve restare dentro il tunnel dall’inizio alla fine, ogni componente che può raggiungere deve stare dentro la politica: l’avviatore, il gestore, il visualizzatore e qualsiasi intermediario che la piattaforma inserisce tra loro. Una copertura più ampia è spesso la risposta onesta, e costa meno che verificare ogni destinazione di condivisione.
Escludere un intermediario di sistema per riparare una sola applicazione è un errore comune. Gli intermediari sono condivisi, quindi l’esclusione segue ogni altra app che usa lo stesso percorso, di solito senza che nessuno se ne accorga finché non arriva una segnalazione settimane dopo. Leggi cos’altro dipende dal componente prima di escluderlo.
Tieni l’identità separata dall’instradamento. Un link può trasportare un token di sessione o un identificatore di account, indipendentemente da quale uscita riceve la richiesta. Un clic instradato correttamente può comunque dire alla destinazione esattamente chi lo ha seguito.
Documenta il flusso di lavoro, non la prima casella. Quando un’attività coinvolge quattro programmi, è lo schema con quattro programmi a prevedere dove va il traffico, e l’impostazione della singola app ne è solo una riga.