Tunel divizat: de ce un link se deschide în afara VPN-ului pe care l-ați configurat
Rutarea urmează procesul care deschide socketul, nu aplicația care v-a arătat linkul. Dovediți care program se conectează înainte de a lărgi excepțiile.
Trecerea unei aplicații printr-un tunel nu îi transportă rutarea către tot ce lansează acea aplicație, chiar dacă interfața sugerează contrariul. Un link predă o cerere altui program, acel program își deschide propriul socket, iar platforma aplică regulile procesului nou, nu celui care a afișat textul. Exact acel al doilea proces este ceea ce vede politica tunelului, iar el nu este cel pe care l-ați configurat.
O aplicație inclusă poate deci deschide un browser care stă în afara tunelului. Un browser exclus poate da lucrul înapoi unei aplicații care stă în interiorul lui. Ambele direcții ale acestei surprize sunt comportament obișnuit.
Partea fluxului de lucru pe care nimeni nu a configurat-o
Politica pe aplicație se scrie împotriva identității unui executabil sau a unui pachet, iar fiecare conexiune este evaluată în momentul în care este creată. Browserul, vizualizatorul de documente, playerul media și foaia de partajare a sistemului poartă fiecare propria identitate, iar fiecare primește propriul verdict. Un link profund transportă date, nu politică.
De aceea observația pare arbitrară: același clic este rutat în două feluri, în funcție de ce handler răspunde. Un client de e-mail din tunel deschide un link într-un browser care trăiește în afara tunelului, iar pagina se încarcă de la adresa dumneavoastră de acasă. Un browser din afara tunelului deschide un document într-un vizualizator care trăiește în interiorul lui, iar fișierul sosește prin ieșire. Niciunul dintre cele două rezultate nu este un defect al clientului.
Un handler care rulează deja înrăutățește situația. Dacă browserul este deja deschis, linkul devine un mesaj către un proces existent, iar acel proces păstrează rutarea pe care o avea la pornire. Închiderea și redeschiderea handlerului schimbă rezultatul, și de aceea problema nu se reproduce niciodată la cerere.
| 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 |
Care proces a făcut de fapt conexiunea
Măsurați partea care primește în loc să raționați despre ea. Țineți tunelul pornit, faceți clic pe un link inofensiv și priviți socketurile pe care le ține programul nou.
ss -tnp state established '( dport = :443 )' Get-NetTCPConnection -State Established | Select-Object RemoteAddress,OwningProcess
Prima comandă numește procesul din spatele fiecărui socket stabilit pe Linux, iar a doua face același lucru pe Windows, rezolvând identificatorul procesului proprietar. Comparați numele procesului cu cele din politica dumneavoastră. Dacă numele este browserul și browserul este exclus, clicul a părăsit tunelul prin proiectare, nu din cauza unei erori. Potrivirea unei reguli de politică cu un socket viu este întreaga metodă.
Repetați verificarea cu handlerul deja pornit, apoi cu el închis. Cele două rezultate pot diferi, iar această diferență explică majoritatea rapoartelor intermitente despre linkuri care scapă dintr-un tunel.
Acoperirea este o proprietate a fluxului de lucru
Dacă o sarcină trebuie să rămână în tunel de la început până la sfârșit, fiecare componentă pe care o poate atinge trebuie să fie în interiorul politicii: lansatorul, handlerul, vizualizatorul și orice intermediar pe care platforma îl inserează între ele. O acoperire mai largă este adesea răspunsul onest și este mai ieftină decât auditarea fiecărei ținte de partajare.
Excluderea unui intermediar de sistem pentru a repara o singură aplicație este o greșeală frecventă. Intermediarii sunt partajați, așa că excluderea urmează fiecărei alte aplicații care folosește aceeași cale, de obicei fără ca cineva să observe până când nu sosește un raport săptămâni mai târziu. Citiți de ce altceva depinde componenta înainte de a o exclude.
Țineți identitatea separată de rutare. Un link poate purta un token de sesiune sau un identificator de cont, indiferent de ce ieșire primește cererea. Un clic rutat corect poate totuși să spună destinației exact cine l-a urmat.
Documentați fluxul de lucru, nu prima casetă de selectare. Când o sarcină acoperă patru programe, diagrama cu patru programe este cea care prevede unde merge traficul, iar setarea pentru o singură aplicație este doar un rând al ei.