Екран 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.

Порівняйте запитаний, отриманий і застосований стан

Це три різні етапи, і розбіжність між ними підказує, який компонент виправляти.

StageWhere to lookWhat it proves
RequestedThe app's profile editor or imported fileWhat the owner intends to use
ReceivedSanitized app log of server-supplied optionsWhat the peer actually pushed
AppliedLink properties and routes after connectWhat 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 на пристрої й шукати в приватному сховищі застосунку, а вгаданий шлях до каталогу даних не є підтримуваним інтерфейсом. Якщо відповідь потребує байтів, які бачить лише застосунок, попросіть у власника діагностичний експорт, а не вигадуйте його самі.

Коли роботу завершено, замкніть цикл: підтвердьте назву активного профілю, перечитайте застосований стан і один раз відключіться, щоб перевірити, чи зміна переживає повторне підключення. Налаштування, яке існує лише в редакторі, не розгорнуто.

Схожі статті