Розділений тунель: чому посилання відкривається поза налаштованим вами 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, розв'язуючи ідентифікатор процесу-власника. Порівняйте ім'я процесу з іменами у вашій політиці. Якщо ім'я — це браузер, а браузер виключений, клік залишив тунель за задумом, а не через несправність. Зіставлення правила політики з живим сокетом — це весь метод.
Повторіть перевірку з уже запущеним обробником, а потім із закритим. Два результати можуть відрізнятися, і ця різниця пояснює більшість епізодичних звітів про посилання, що виходять із тунелю.
Покриття — властивість робочого процесу
Якщо завдання має залишатися в тунелі від початку до кінця, кожен компонент, до якого воно може дістатися, має бути всередині політики: засіб запуску, обробник, переглядач і будь-який посередник, який платформа вставляє між ними. Ширше покриття часто і є чесна відповідь, і воно дешевше за аудит кожної мети спільного доступу.
Виключати системного посередника, щоб виправити один застосунок, — поширена помилка. Посередники є спільними, тому виняток поширюється на кожен інший застосунок, що використовує той самий шлях, зазвичай без того, щоб хтось це помітив до звіту через тижні. Прочитайте, що ще залежить від компонента, перш ніж виключати його.
Тримайте ідентичність окремо від маршрутизації. Посилання може нести маркер сеансу або ідентифікатор облікового запису незалежно від того, який вихід отримує запит. Правильно маршрутизований клік усе одно може точно сказати пункту призначення, хто за ним перейшов.
Документуйте робочий процес, а не перший прапорець. Коли завдання охоплює чотири програми, саме схема з чотирма програмами передбачає, куди піде трафік, а налаштування одного застосунку — лише один її рядок.