VPN профил в Android: намерете собственика, преди да редактирате
Редът за VPN в системата скрива приложението, което притежава крайната точка, маршрутите и ключовете. Установете собственика, после сравнете заявеното, полученото и приложеното състояние.
Екранът за VPN в Android показва един ред с име, икона на ключ и може би превключвател за постоянна връзка. Той рядко показва крайната точка, политиката за маршрути, DNS сървърите или идентификационните данни, които карат връзката да работи, защото при тунел, базиран на приложение, те принадлежат на приложението. Практическата последица е въпрос от типа на оперативна процедура, а не философски: преди да редактирате изтеглен файл или да търсите централно хранилище на профили, разберете кой компонент притежава настройката, която искате да промените.
Първо определете типа на връзката
На същия екран за настройки има поне три схеми. Приложението може да използва 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-ването на устройството, за да търсите в частното хранилище на приложението, не е необходимо, за да установите собственика, а предположен път до директория с данни не е поддържан интерфейс. Ако отговорът изисква байтове, които вижда само приложението, поискайте от собственика диагностичен експорт, вместо да импровизирате такъв.
Когато работата приключи, затворете цикъла: потвърдете името на активния профил, прочетете отново приложеното състояние и се изключете веднъж, за да проверите, че промяната оцелява след повторно свързване. Настройка, която съществува само в редактора, не е разгърната.