Прокарването на приложение през тунел не пренася маршрутизацията му върху всичко, което това приложение стартира, дори интерфейсът да подсказва обратното. Връзката предава заявка на друга програма, тази програма отваря свой собствен сокет и платформата прилага правилата към новия процес, а не към този, който е показал текста. Именно вторият процес вижда политиката на тунела и той не е този, който сте настроили.

Затова включено приложение може да отвори браузър, който стои извън тунела. Изключен браузър може да върне работа на приложение, което стои вътре в него. И двете посоки на тази изненада са обичайно поведение.

Частта от работния процес, която никой не е настроил

Политиката за всяко приложение се пише спрямо идентичност на изпълним файл или пакет и всяка връзка се оценява в момента на създаването ѝ. Браузърът, програмата за документи, медийният плейър и системният лист за споделяне носят всяка своя идентичност и всяка получава своята присъда. Дълбоката връзка носи данни, а не политика.

Затова наблюдението изглежда произволно: едно и също щракване се маршрутизира по два начина в зависимост кой манипулатор отговори. Пощенски клиент в тунела отваря връзка в браузър, който живее извън тунела, и страницата се зарежда от домашния ви адрес. Браузър извън тунела отваря документ в програма, която живее вътре в него, и файлът пристига през изхода. Нито един от двата резултата не е дефект в клиента.

Вече работещ манипулатор влошава нещата. Ако браузърът е вече отворен, връзката става съобщение до съществуващ процес и този процес запазва маршрутизацията, която е имал при стартирането си. Затварянето и повторното отваряне на манипулатора променя резултата и точно затова проблемът никога не се възпроизвежда при поискване.

PlatformPolicy objectWhat it is evaluated against
AndroidPer-app VPN allowlistPackage name of the process opening the socket
WindowsApplication traffic filtersApplication path in the filter rule
LinuxUID or cgroup routing rulesOwner 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, като разрешава идентификатора на притежаващия процес. Сравнете името на процеса с имената в политиката си. Ако името е браузърът и браузърът е изключен, щракването е напуснало тунела по замисъл, а не по вина. Съпоставянето на правило от политиката с жив сокет е целият метод.

Повторете проверката с вече работещ манипулатор, после със затворен. Двата резултата може да се различават и тази разлика обяснява повечето периодични доклади за връзки, избягали от тунел.

Покритието е свойство на работния процес

Ако дадена задача трябва да остане в тунела от начало до край, всеки компонент, до който може да достигне, трябва да е в политиката: стартерът, манипулаторът, програмата за преглед и всеки посредник, който платформата вмъква между тях. По-широкото покритие често е честният отговор и е по-евтино от одит на всяка цел за споделяне.

Изключването на системен посредник, за да поправите едно приложение, е често срещана грешка. Посредниците са споделени, затова изключването следва всяко друго приложение, което използва същия път, обикновено без някой да забележи, докато не пристигне доклад седмици по-късно. Прочетете какво още зависи от компонента, преди да го изключите.

Пазете идентичността отделно от маршрутизацията. Една връзка може да носи токен за сесия или идентификатор на акаунт независимо кой изход получава заявката. Правилно маршрутизирано щракване все още може да каже на дестинацията точно кой го е последвал.

Документирайте работния процес, а не първото квадратче. Когато една задача обхваща четири програми, диаграмата с четири програми е тази, която предсказва къде отива трафикът, а настройката за едно приложение е само един ред от нея.

Подобни статии