Подељени тунел: зашто се веза отвара изван VPN-а који сте поставили
Рутирање прати процес који отвара сокет, а не апликацију која вам је показала везу. Докажите која се програма повезује пре него што проширите изузетке.
Пропуштање апликације кроз тунел не преноси њено рутирање на све што та апликација покрене, иако интерфејс сугерише супротно. Веза предаје захтев другој апликацији, та апликација отвара сопствени сокет, а платформа примењује правила на нови процес, а не на онај који је приказао текст. Управо тај други процес види политика тунела, и он није онај који сте конфигурисали.
Укључена апликација зато може да отвори прегледач који стоји изван тунела. Искључени прегледач може да врати посао апликацији која стоји унутар њега. Оба смера тог изненађења су уобичајено понашање.
Део тока рада који нико није конфигурисао
Политика по апликацији пише се према идентитету извршне датотеке или пакета, а свака веза се оцењује у тренутку када настане. Прегледач, прегледач докумената, медијски плејер и системски лист за дељење носе сваки свој идентитет, и сваки добија своју пресуду. Дубока веза носи податке, а не политику.
Зато се запажање чини произвољним: исти клик се рутира на два начина, зависно од тога који руковалац одговори. Поштански клијент у тунелу отвара везу у прегледачу који живи изван тунела, и страница се учитава са ваше кућне адресе. Прегледач изван тунела отвара документ у прегледачу који живи унутар њега, и датотека стиже кроз излаз. Ни један од та два резултата није грешка у клијенту.
Руковалац који већ ради погоршава ствар. Ако је прегледач већ отворен, веза постаје порука постојећем процесу, а тај процес задржава рутирање које је имао при покретању. Затварање и поновно отварање руковаоца мења исход, и зато се проблем никада не репродукује на захтев.
| 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 |
Који је процес стварно успоставио везу
Мерите страну која прима уместо да о њој расправљате. Држите тунел укључен, кликните безазлену везу и погледајте сокете које држи нови програм.
ss -tnp state established '( dport = :443 )' Get-NetTCPConnection -State Established | Select-Object RemoteAddress,OwningProcess
Прва наредба именује процес иза сваког успостављеног сокета на Linux-у, а друга чини исто на Windows-у решавањем идентификатора процеса који га поседује. Упоредите име процеса са именима у својој политици. Ако је име прегледач и прегледач је искључен, клик је напустио тунел по дизајну, а не због грешке. Упаривање правила политике са живим сокетом је читав метод.
Поновите проверу са руковаоцем који већ ради, а затим са затвореним. Два резултата могу да се разликују, и та разлика објашњава већину повремених извештаја о везама које беже из тунела.
Покривеност је својство тока рада
Ако задатак мора да остане у тунелу од почетка до краја, свака компонента до које може да стигне мора бити унутар политике: покретач, руковалац, прегледач и сваки посредник који платформа убаци између њих. Шира покривеност је често искрен одговор, и јефтинија је од ревизије сваке мете дељења.
Искључити системског посредника да бисте поправили једну апликацију честа је грешка. Посредници су дељени, па искључење прати сваку другу апликацију која користи исти пут, обично без тога да ико примети док извештај не стигне недељама касније. Прочитајте шта још зависи од компоненте пре него што је искључите.
Држите идентитет одвојено од рутирања. Веза може да носи токен сесије или идентификатор налога, без обзира на то који излаз прима захтев. Исправно рутиран клик ипак може одредишту да каже тачно ко га је следио.
Документујте ток рада, а не прво поље за потврду. Када задатак обухвата четири програма, дијаграм са четири програма је онај који предвиђа камо саобраћај иде, а подешавање за једну апликацију је само један његов ред.