Експорт на VPN от Android: какво наистина се пренася на нов телефон
Експортът на VPN от Android пренася настройки и понякога ключ, но никога оторизацията на устройството. Проверете какво наистина се мести, преди да изтриете стария телефон.
Експортирането на VPN профил от Android изглежда като стъпка за архивиране и менюто, което го предлага, не прави нищо, за да коригира това впечатление. Това, което остава в ръцете ви, е вход за парсер, ключ, който операционната система може никога да не върне, и оторизация, издадена точно на този телефон. Разделете тези три неща и се появява полезният въпрос: коя част все още липсва на новото устройство?
Файлът е лесната част. Другите две решават дали миграцията ще работи.
Какво всъщност съдържа експортираният профил
Отворете файла в текстов редактор, преди да му се доверите. Профилът на OpenVPN е малък конфигурационен език: remote, proto, data-ciphers и често вградени блокове <ca>, <cert>, <key> или <tls-crypt>, които клиентът подава на своя TLS стек. Конфигурацията на WireGuard е по-плоска: [Interface] съдържа PrivateKey и Address, после един [Peer] за всяка крайна точка с PublicKey, AllowedIPs и Endpoint. IKEv2 идва като .mobileconfig с речници за полезен товар вместо блокове с ключове.
Нито един от тези текстове не е удостоверение сам по себе си. Удостоверението е частният ключ и всеки формат или го поставя вградено, или сочи към псевдоним, който се разрешава само в клиента, който го е създал.
Къде всъщност живее ключът на Android
Android пази данните на приложенията под /data/data/<package> и до тях има достъп само UID на това приложение. Няма поддържан начин да копирате частната директория на друго приложение от телефон без root, а adb backup престана да бъде общ отговор, след като Android 12 го отмени и клиентите започнаха да декларират allowBackup="false". Затова експорт от Android клиент означава това, което този клиент реализира, а не копие на файловата система.
Слоят за идентичност е под приложението. Ако клиент е импортирал ключа ви в Android Keystore, материалът се генерира или обвива там и по-късните експорти могат да носят препратка към псевдоним на Keystore вместо байтовете. Ключовете с хардуерна поддръжка са създадени така, че дори приложението собственик не може да ги прочете, както описва Keystore documentation, така че профил, сочещ към този псевдоним, се импортира чисто на същия телефон и се проваля навсякъде другаде.
Това не е счупен експорт. Това е свойството, което платформата е била помолена да осигури.
Какво профилът не може да пренесе
Подредете обектите срещу това, което получателят ще приеме:
| Обект | Пренася се? | Защо |
|---|---|---|
| Протокол и крайна точка | Да, ако клиентът на получателя го поддържа | Обикновен текст в профила |
| CA сертификат и проверка на името на хоста | Обикновено | Публичен материал, но името на хоста все още трябва да съвпада със сертификата |
| Клиентски сертификат | Да, освен ако не е обвързан с конкретно устройство | Сертификатите са преносими; издателят решава колко устройства могат да използват един |
| Частен ключ | Само ако е генериран извън Keystore | Ключовете с хардуерна поддръжка не могат да се експортират, само да се заменят |
| Акаунт, MFA, SSO сесия | Не | Токените изтичат и остават обвързани с устройството, което ги е получило |
| Маршрути, DNS и обхват на приложенията | Само като конфигурационен текст | Android ги прилага при свързване чрез VpnService.Builder |
| Списък с приложения за разделен тунел | Рядко | Имената на пакетите се различават между устройствата, а списъкът е състояние на клиента |
Два реда причиняват повечето объркване. Ключ, генериран на устройството и маркиран като неекспортируем, наистина изчезва с данните на приложението, затова замяната е нов ключ плюс сертификат, издаден за него. Сесийният токен, копиран на нов телефон, обикновено умира при първото обновяване, което изглежда като неуспешен импорт.
Импортът е разбор, а след това заявка за съгласие
От страната на получателя импортът е разбор, последван от запис. Клиентът чете конфигурацията, проверява че всеки посочен блок съществува, после записва дефиницията на тунела в собствения си sandbox, поради което файлът, който сте избрали от Изтегляния, не е това, което се свързва след това.
След това идва стъпка за оторизация, която никой файл не може да прескочи. Android изисква приложението да извика VpnService.prepare() и да получи вашето съгласие, преди да установи тунел, затова току-що импортираният профил все още показва системния диалог веднъж. После тунелът се изгражда изрично чрез addAddress, addRoute, addDnsServer и addAllowedApplication или addDisallowedApplication за маршрутизиране по приложения. Нищо от това не следва от крайна точка, затова един и същ профил може да даде различен набор от ефективни маршрути в два клиента.
Конфигурациите с сертификати добавят още едно разклонение. Когато сървърът издаде сертификат на конкретно устройство, както правят MDM и SCEP регистрацията, използването му на втори телефон или работи, докато сървърът наложи една сесия на идентичност, или се проваля при TLS ръкостискането. Проверете политиката на издателя, преди да планирате повторно използване.
Проверете новото устройство, преди да пенсионирате старото
Дръжте стария телефон свързан, докато новият не премине нещо по-добро от зелена икона. Потвърдете изходния адрес от новото устройство и DNS резолвера, който то действително е използвало. Ако split tunneling е важно, стартирайте приложение, което трябва да заобиколи тунела, и едно, което не трябва, после вижте кое достига до вашия доставчик.
Една проверка решава въпроса с изходния адрес. Отворете https://ifconfig.me в браузъра на телефона, после изпълнете curl -s https://ifconfig.me от лаптоп в същата Wi-Fi мрежа и сравнете двата отговора с адреса, който доставчикът ви е задал.
Едва тогава пенсионирайте старата идентичност и го направете през издателя: отзовете сертификата или премахнете устройството от акаунта. Изтриването на файл от Изтегляния не прекратява нищо, защото две устройства с един и същ сертификат изглеждат идентични в журнала на сървъра.
Ако експортът се окаже непреносим, решението е нова регистрация, а не публичен конфигурационен пакет. Поискайте профил за второ устройство или генерирайте двойката ключове на новия телефон и подайте CSR; по-бавно е и това е пътят, който издателят поддържа.
Преминете през списъка, преди да изтриете нещо: новото устройство се свързва, изходният адрес и DNS съвпадат, обхватът по приложения е това, което сте искали, старата идентичност е отзована, а всеки запазен конфигурационен файл стои в шифровано хранилище.