Позначили одну програму в OpenVPN? Вирішує база списку
Той самий позначений пакет означає включення або виключення залежно від бази списку. Спершу виберіть базу «лише включення», перепідключіться, потім перевірте весь сценарій.
Прапорець виглядає як усе рішення, але в Android це не так. Той самий позначений пакет означає «лише ця програма використовує VPN» за бази «лише включення» і «ця програма обходить VPN» за бази, що виключає вибрані. Люди встановлюють клієнт, знаходять список із написом Дозволені програми, позначають один потрібний пакет і йдуть із політикою, яка робить навпаки. Зміна клієнта рідко допомагає; вибір бази до того, як торкнутися списку, допомагає.
База — це політика, а не прапорець
У VpnService в Android клієнт налаштовує маршрутизацію за програмами через addAllowedApplication або addDisallowedApplication. Перший обмежує тунель переліченими пакетами, другий пропускає через тунель усе, крім них. Клієнти загортають обидва варіанти в інтерфейс, який може виглядати майже однаково, а деякі підписують розділ за списком, а не за режимом, тому сам заголовок розділу не скаже, яка база активна.
Читайте перемикач режиму над списком, а не заголовок. В оригінальному клієнті OpenVPN for Android список дозволених програм має базу «лише включення» і базу з виключенням вибраних, а брендована збірка може сформулювати обидві інакше, зберігши ту саму поведінку. Знімок екрана з іншого клієнта або зі старішої версії того самого не є доказом щодо режиму, у якому ви перебуваєте.
| What the client shows | What a checked app gets |
|---|---|
| Allowed apps, include-only baseline | The app uses the tunnel; unchecked apps do not |
| Allowed apps, exclude-selected baseline | The app bypasses the tunnel; everything else uses it |
| No list configured | Client or profile default, commonly all apps |
Та таблиця і є весь міф. Позначення програми — це твердження про один пакет; база вирішує, чи звучить воно як «включити», чи «виключити».
Спершу режим, потім пакет
Працюйте в такому порядку, бо вибір, зроблений за однієї бази, може пережити зміну режиму й тихо перевернути свій ефект:
- Визначте справжній пакет і те, особиста це копія чи копія робочого профілю.
- Відкрийте налаштування вибору програм саме того профілю VPN, до якого підключаєтеся.
- Задайте базу, сенс якої — «лише вибрані програми використовують VPN».
- Уключіть потрібний пакет, а не пов'язані програми залиште поза набором.
- Перепідключіться, щоб клієнт перебудував інтерфейс із новим списком.
Профіль важливий не менше за пакет. У клієнта може бути кілька профілів, і вибір за програмами належить тому, до якого ви справді підключаєтеся; редагування профілю, яким ви ніколи не користуєтеся, нічого не змінює. На керованому пристрої робочий профіль — окремий користувач із власною копією програми та власною політикою, тому те, що особистий екземпляр перебуває в тунелі, нічого не говорить про робочий.
Перепідключіться, перш ніж оцінювати результат
VpnService читає списки програм, коли встановлюється інтерфейс тунелю. Працюючий тунель не обов'язково підхоплює правку списку, а клієнти різняться тим, чи перебудовують його автоматично, чи чекають, доки ви відключитеся й підключитеся знову.
Якщо зміна ніби нічого не робить, перевірте перепідключення, перш ніж сумніватися в списку. Потім зробіть свіжий запит замість перезавантаження вже відкритої сторінки: програма, що тримає встановлене з'єднання, — поганий об'єкт перевірки, і побачений результат може належати старому інтерфейсу.
Ваш сценарій може вийти за межі програми
Програма може передати завдання браузеру для входу, переглядачеві документів або цілі спільного доступу. За бази «лише включення» ці помічники перебувають поза тунелем, тому сценарій може зірватися на півдорозі, навіть якщо першу програму налаштовано правильно. Додавайте помічника, лише якщо сценарій справді його потребує, і робіть це свідомо, а не виявляйте під час демонстрації.
Вибір за програмами не замінює й власної політики маршрутів з'єднання. Профіль усе ще має нести префікси призначення та родини адрес, які використовує програма, а шлюз усе ще має дозволяти службу. Правильно внесена до списку програма з недосяжним призначенням виглядає так само, як неправильно налаштований список.
Перевірте обидві сторони, потім запишіть політику
Перевірте один свіжий запит у включеній програмі й один у програмі, що має залишитися зовні. Порівняйте адресу виходу та доступ до приватного ресурсу, потім повторіть після перепідключення. Якщо ваша організація використовує політику Android, що блокує з'єднання без VPN, виключена програма може бути заблокована повністю замість прямого виходу; це політика, яка працює, а не несправність, яку треба обійти.
Запишіть режим, назви пакетів разом із профілем, які програми мають обходити, які родини адрес несе тунель і що має відбуватися, коли тунель падає. Якщо клієнт не може чисто виразити сценарій, виберіть ширший затверджений набір програм або політику керованого профілю замість редагування правил брандмауера на рівні root, що не входить до підтримуваного Android механізму для окремих програм.