Чи заблокує ваш мережевий вимикач застосунок, який ви виключили з тунелю?
Виключений застосунок може навмисно йти напряму, а захищений має при збої залишатися закритим. Спершу опишіть політику для кожного застосунку, потім перевірте, що саме застосовує клієнт.
Мережевий вимикач увімкнено, застосунок навмисно виключено з тунелю, і дві вимоги тепер суперечать одна одній. Одна каже, що назовні можна лише через тунель, друга — що ця програма має йти напряму. Кожен клієнт вирішує цей конфлікт по-своєму, а сторінка налаштувань рідко пояснює, яке правило перемагає. Опишіть політику для кожного застосунку, перш ніж довіряти будь-якій позначці.
Дві політики, одна машина
Мережевий вимикач — це обіцянка про збій: коли тунель не захищає трафік, трафік зупиняється. Розділений тунель — це обіцянка про вибір: ці програми або адресати використовують тунель, а ті ні. Друга обіцянка створює трафік, про який має вирішити перша. Жодна обіцянка не помилкова; просто їх писали різні люди для різних загроз.
Можливі три наслідки, і лише один із них задуманий під час розгортання. Виключений застосунок може залишитися прямим під час збою, що поважає поділ і ламає вимикач. Його можуть заблокувати разом з усім іншим, що поважає вимикач і ламає поділ. Або його блокують лише іноді, залежно від того, як платформа оцінює правило після зникнення інтерфейсу. Саме останній випадок і породжує звернення.
Спершу список застосунків, потім правило
Перелічіть програми, які мають використовувати тунель, ті, які мають іти напряму, та назви або адресати, які не повинні з'являтися в жодному списку. Окремо вкажіть поведінку розв'язувача й бік IPv6, бо обидва можуть дотримуватися іншої політики, ніж трафік сторінок.
Правила для застосунків зазвичай відповідають виконуваному файлу або пакету, а не профілю всередині нього. Профіль браузера, приватне вікно та розширення не мають власної мережевої ідентичності, тож успадковують те, що отримав процес. Допоміжний процес, запущений цим браузером, може взагалі не успадкувати те саме правило.
Потрібні два списки, а не один: що тунель має нести і що за жодних умов не повинно виходити за його межі. Застосунок, який є в обох, — це конфлікт вимог, а не деталь реалізації, і його треба вирішити до налаштування клієнта.
Що робить клієнт під час збою
Одні реалізації блокують виключені застосунки під час збою і повертають їм доступ після повторного підключення. Інші зберігають прямий шлях увесь час, що узгоджується з поділом і є слабшим як властивість безпеки. Блокування на рівні платформи може повністю перекрити власний вибір клієнта для окремих застосунків. Ця різниця не косметична, бо вона вирішує, чи виключений застосунок є винятком із політики, чи дірою.
Постійно ввімкнений VPN у Android із параметром блокування з'єднань без VPN — найясніший випадок, бо блокування застосовує платформа, а не клієнт, і виключений пакет блокується разом з усім іншим, поки тунель вимкнено. Настільний клієнт, який застосовує винятки для застосунків у власному драйвері, зазвичай залишає виключений процес на фізичному інтерфейсі, бо ніколи не володів трафіком цього процесу. Обидві поведінки можна захистити, і лише одна відповідає вимозі, що виключений застосунок має залишатися придатним до використання. Запитайте, який компонент застосовує правило, перш ніж тлумачити результат.
Читайте поведінку тієї операційної системи, яка перед вами, а не налаштування з такою самою назвою деінде. API застосування різняться, і один прапорець може означати суттєво різні речі на настільному комп'ютері та на телефоні. Версія теж важлива, бо керування блокуванням переміщалося між екранами в різних випусках Android, а список винятків на боці клієнта — не те саме керування, що блокування платформи.
Три моменти: тунель увімкнено, тунель вимкнено, повторне підключення
Використовуйте нешкідливі запити в три моменти: поки тунель працює, під час збою, який вас цікавить, і після повторного підключення. Один результат браузера не може встановити поведінку виключеного застосунку.
curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com
Адреса виходу показує, який шлях обрано, а явний тест інтерфейсу показує, що відбувається, коли тунель — єдиний доступний вихід. Запишіть очікуваний результат біля кожного рядка, перш ніж запускати будь-який із них, інакше вивід буде витлумачено заднім числом.
Якщо виключений застосунок залишається без мережі, перевірте пріоритет політик, перш ніж додавати широкий дозвіл у брандмауері, бо таке виправлення знищує відмінність, яку ви перевіряли. Якщо він залишається прямим, підтвердьте, що це був задокументований виняток, а не випадковий відкат. За суворої вимоги для всього пристрою скоротіть список винятків, доки його не можна буде перевірити вручну.