Разделен тунел: защо връзка се отваря извън зададения от вас 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, като разрешава идентификатора на притежаващия процес. Сравнете името на процеса с имената в политиката си. Ако името е браузърът и браузърът е изключен, щракването е напуснало тунела по замисъл, а не по вина. Съпоставянето на правило от политиката с жив сокет е целият метод.
Повторете проверката с вече работещ манипулатор, после със затворен. Двата резултата може да се различават и тази разлика обяснява повечето периодични доклади за връзки, избягали от тунел.
Покритието е свойство на работния процес
Ако дадена задача трябва да остане в тунела от начало до край, всеки компонент, до който може да достигне, трябва да е в политиката: стартерът, манипулаторът, програмата за преглед и всеки посредник, който платформата вмъква между тях. По-широкото покритие често е честният отговор и е по-евтино от одит на всяка цел за споделяне.
Изключването на системен посредник, за да поправите едно приложение, е често срещана грешка. Посредниците са споделени, затова изключването следва всяко друго приложение, което използва същия път, обикновено без някой да забележи, докато не пристигне доклад седмици по-късно. Прочетете какво още зависи от компонента, преди да го изключите.
Пазете идентичността отделно от маршрутизацията. Една връзка може да носи токен за сесия или идентификатор на акаунт независимо кой изход получава заявката. Правилно маршрутизирано щракване все още може да каже на дестинацията точно кой го е последвал.
Документирайте работния процес, а не първото квадратче. Когато една задача обхваща четири програми, диаграмата с четири програми е тази, която предсказва къде отива трафикът, а настройката за едно приложение е само един ред от нея.