Профіль VPN на Android: знайдіть власника перед редагуванням
Рядок VPN у системі приховує застосунок, якому належать кінцева точка, маршрути й ключі. Визначте власника, потім порівняйте запитаний, отриманий і застосований стан.
Екран VPN у Android показує один рядок з назвою, значком ключа й, можливо, перемикачем постійного підключення. Він рідко показує кінцеву точку, політику маршрутів, сервери DNS або облікові дані, що забезпечують з'єднання, бо в тунелі на основі застосунку вони належать застосунку. Практичний наслідок — питання для runbook, а не філософське: перш ніж редагувати завантажений файл або шукати центральне сховище профілів, з'ясуйте, який компонент володіє налаштуванням, яке ви хочете змінити.
Спершу визначте тип з'єднання
На тому самому екрані налаштувань є щонайменше три схеми. Застосунок може використовувати VpnService, щоб побудувати віртуальний інтерфейс і володіти протоколом та приватною конфігурацією, включно з локальним застосунком фільтрації без віддаленого виходу. Android також може надати профіль IKEv2 платформи через Ikev2VpnProfile, доступний з API 30, де платформа зберігає більшу частину профілю. А застосунок постачальника може показати власний список серверів і зібрати налаштування всередині.
adb shell dumpsys connectivity | grep -i -A12 "VPN"
adb shell cmd connectivity list-owners 2>/dev/null || true
Перша команда показує активну мережу VPN і властивості її з'єднання, тобто застосований стан. Якщо рядок називає знайомий вам пакет, почніть із власного подання профілю цього застосунку, а не з системного екрана.
Запишіть власника та межі профілю
Запишіть чотири факти, перш ніж щось змінювати: пакет-власник, чи з'єднання в особистому або робочому профілі, назву профілю або з'єднання так, як її показує застосунок, і хто ним керує. Власник пристрою може надати VPN робочого профілю, який користувач особистого профілю не може редагувати, а той самий застосунок, встановлений двічі, дає двох незалежних власників.
Цей крок запобігає найчастішій втраченій годині — редагуванню профілю, який не є підключеним. Застосунки часто тримають кілька профілів, і активний є властивістю застосунку, а не рядка Android.
Порівняйте запитаний, отриманий і застосований стан
Це три різні етапи, і розбіжність між ними підказує, який компонент виправляти.
| Stage | Where to look | What it proves |
|---|---|---|
| Requested | The app's profile editor or imported file | What the owner intends to use |
| Received | Sanitized app log of server-supplied options | What the peer actually pushed |
| Applied | Link properties and routes after connect | What the device is really using |
Застосований етап — єдиний, який можна спостерігати, не довіряючи чиємусь журналу. Порівняйте сервери DNS і маршрути у властивостях активного з'єднання з тими, що заявляє профіль; якщо вони різняться, сервер щось передав або застосунок застосував політику, якої ви не очікували.
adb shell ip addr show tun0
adb shell ip route show table all | head -40
Назви інтерфейсів різняться між застосунками, тому спершу перелічіть інтерфейси й прочитайте той, що з'явився під час підключення тунелю. Маршрут, який є в редакторі застосунку, але відсутній тут, ніколи не застосовувався; маршрут, який є тут, але відсутній у редакторі, прийшов звідкись інде.
Редагуйте той артефакт, який власник справді читає
Для імпортованого профілю OpenVPN застосунок зазвичай тримає власну копію. Пізніше редагування початково завантаженого файлу не змінить наступне з'єднання; використовуйте документований редактор застосунку або імпортуйте знову й підтвердьте, який профіль тепер активний. Це різниця між зміною файлу та зміною конфігурації.
Застосунки постачальників часто збирають налаштування зі списку серверів, а не записують файл, який може редагувати користувач. Відсутність кнопки експорту не є доказом, що VPN підроблений, а експортований файл може не містити ключів, прив'язаних до пристрою, або матеріалів реєстрації, потрібних іншому пристрою. Розглядайте експорт та імпорт як окремі операції з власними умовами.
Напишіть нотатку для підтримки, не розкриваючи секретів
Корисна нотатка називає точний застосунок і профіль, налаштування, що виглядає неправильно, і докази з кожного етапу. Наприклад: цей профіль отримує від сервера приватну адресу DNS, але цільовий робочий застосунок не може розв'язати свою службу, а застосовані властивості з'єднання показують той резолвер, тоді як редактор профілю показує інший.
Тримайте облікові дані поза нотаткою. Щоб визначити власника, не потрібно робити root на пристрої й шукати в приватному сховищі застосунку, а вгаданий шлях до каталогу даних не є підтримуваним інтерфейсом. Якщо відповідь потребує байтів, які бачить лише застосунок, попросіть у власника діагностичний експорт, а не вигадуйте його самі.
Коли роботу завершено, замкніть цикл: підтвердьте назву активного профілю, перечитайте застосований стан і один раз відключіться, щоб перевірити, чи зміна переживає повторне підключення. Налаштування, яке існує лише в редакторі, не розгорнуто.