Раздзелены тунель: чаму спасылка адкрываецца па-за 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, вырашаючы ідэнтыфікатар працэсу-ўладальніка. Параўнайце імя працэсу з імёнамі ў вашай палітыцы. Калі імя — гэта браўзер, а браўзер выключаны, клік выйшаў з тунеля па задуме, а не праз памылку. Супастаўленне правіла палітыкі з жывым сокетам — гэта ўвесь метад.
Паўтарыце праверку, калі апрацоўшчык ужо працуе, а потым калі ён закрыты. Два вынікі могуць адрознівацца, і гэтае адрозненне тлумачыць большасць перыядычных паведамленняў пра спасылкі, што ўцякаюць з тунеля.
Ахоп — гэта ўласцівасць працэсу
Калі задача павінна заставацца ў тунелі ад пачатку да канца, кожны кампанент, да якога яна можа дацягнуцца, павінен быць унутры палітыкі: запускальнік, апрацоўшчык, праглядальнік і любы пасрэднік, які платформа ўстаўляе паміж імі. Шырэйшы ахоп часцей за ўсё і ёсць сумленны адказ, і ён таннейшы за аўдыт кожнай мэты абагульвання.
Выключыць сістэмнага пасрэдніка, каб выправіць адну праграму, — распаўсюджаная памылка. Пасрэднікі агульныя, таму выключэнне ідзе за кожнай іншай праграмай, якая выкарыстоўвае той жа шлях, звычайна без таго, каб хтосьці заўважыў гэта да прыходу справаздачы праз тыдні. Прачытайце, што яшчэ залежыць ад кампанента, перш чым выключаць яго.
Трымайце ідэнтычнасць асобна ад маршрутызацыі. Спасылка можа несці маркер сеансу або ідэнтыфікатар уліковага запісу незалежна ад таго, які выхад атрымае запыт. Правільна маршрутызаваны клік усё яшчэ можа сказаць пункту прызначэння, хто менавіта перайшоў па ім.
Дакументуйце працэс, а не першую птушку. Калі задача ахоплівае чатыры праграмы, дыяграма з чатырма праграмамі — гэта тая, што прадказвае, куды пойдзе трафік, а налада адной праграмы — усяго адзін радок у ёй.