VPN profilio eksportavimas iš Android atrodo kaip atsarginės kopijos žingsnis, o meniu, kuris tai siūlo, nieko nedaro, kad šis įspūdis būtų pataisytas. Jums lieka parserio įvestis, raktas, kurio operacinė sistema gali niekada negrąžinti, ir autorizacija, išduota būtent tam telefonui. Atskirkite šiuos tris ir atsiras naudingas klausimas: kurios dalies naujame įrenginyje dar trūksta?

Failas yra lengvoji dalis. Kitos dvi lemia, ar migracija veiks.

Ką iš tikrųjų sudaro eksportuotas profilis

Atidarykite failą teksto redaktoriuje prieš juo pasitikėdami. OpenVPN profilis yra maža konfigūracijos kalba: remote, proto, data-ciphers ir dažnai įterpti <ca>, <cert>, <key> arba <tls-crypt> blokai, kuriuos klientas perduoda savo TLS stekui. WireGuard konfigūracija yra plokštesnė: [Interface] laiko PrivateKey ir Address, tada po vieną [Peer] kiekvienam galiniam taškui su PublicKey, AllowedIPs ir Endpoint. IKEv2 ateina kaip .mobileconfig su naudingosios apkrovos žodynais, o ne raktų blokais.

Nė vienas iš šių tekstų savaime nėra prisijungimo duomuo. Prisijungimo duomuo yra privatusis raktas, ir kiekvienas formatas jį arba įklijuoja viduje, arba nurodo slapyvardį, kuris išsprendžiamas tik to kliento viduje, kuris jį sukūrė.

Kur raktas iš tikrųjų gyvena Android

Android laiko programų duomenis po /data/data/<package>, kuriuos skaityti gali tik tos programos UID. Nėra palaikomo būdo nukopijuoti kitos programos privatų katalogą iš telefono be root, o adb backup nustojo būti bendru atsakymu po to, kai Android 12 jį panaikino ir klientai pradėjo deklaruoti allowBackup="false". Taigi eksportas iš Android kliento reiškia tai, ką tas klientas įgyvendina, o ne failų sistemos kopiją.

Tapatybės sluoksnis yra po programa. Jei klientas importavo jūsų raktą į Android Keystore, medžiaga ten generuojama arba apvyniojama, o vėlesni eksportai gali turėti nuorodą į Keystore slapyvardį, o ne baitus. Techninės įrangos palaikomi raktai sukurti taip, kad net juos turinti programa negali jų perskaityti, kaip aprašo Keystore documentation, todėl profilis, nurodantis tą slapyvardį, švariai importuojamas tame pačiame telefone ir nepavyksta visur kitur.

Tai ne lūžęs eksportas. Tai savybė, kurios buvo paprašyta iš platformos.

Ko profilis negali pernešti

Sulyginkite objektus su tuo, ką priims paskirties vieta:

ObjektasPersikelia?Kodėl
Protokolas ir galinis taškasTaip, jei paskirties klientas jį palaikoPaprastas tekstas profilyje
CA sertifikatas ir pagrindinio kompiuterio vardo patikraPaprastaiVieša medžiaga, bet vardas vis tiek turi atitikti sertifikatą
Kliento sertifikatasTaip, jei jis nesusietas su konkrečiu įrenginiuSertifikatai perkeliami; išdavėjas sprendžia, kiek įrenginių gali naudoti vieną
Privatusis raktasTik jei sugeneruotas už Keystore ribųTechninės įrangos palaikomi raktai negali būti eksportuojami, tik pakeičiami
Paskyra, MFA, SSO sesijaNeŽetonai baigiasi ir lieka susieti su įrenginiu, kuris juos gavo
Maršrutai, DNS ir programų apimtisTik kaip konfigūracijos tekstasAndroid juos taiko prisijungdamas per VpnService.Builder
Padalinto tunelio programų sąrašasRetaiPaketų pavadinimai skiriasi tarp įrenginių, o sąrašas yra kliento būsena

Dvi eilutės sukelia didžiausią painiavą. Įrenginyje sugeneruotas ir neeksportuojamu pažymėtas raktas tikrai dingsta kartu su programos duomenimis, todėl pakaitalas yra naujas raktas ir jam išduotas sertifikatas. Į naują telefoną nukopijuotas sesijos žetonas paprastai miršta per pirmą atnaujinimą, o tai atrodo kaip nepavykęs importas.

Importas yra analizė, o tada sutikimo užklausa

Priimančiojoje pusėje importas yra analizė, po kurios atliekamas įrašymas. Klientas nuskaito konfigūraciją, patikrina, ar egzistuoja kiekvienas nurodytas blokas, tada įrašo tunelio apibrėžimą į savo smėlio dėžę, todėl failas, kurį pasirinkote iš Atsisiuntimų, nėra tai, kas vėliau prisijungia.

Tada ateina autorizacijos žingsnis, kurio negali praleisti joks failas. Android reikalauja, kad programa iškviestų VpnService.prepare() ir gautų jūsų sutikimą prieš sukurdama tunelį, todėl ką tik importuotas profilis vis tiek vieną kartą parodo sistemos dialogą. Tada tunelis kuriamas aiškiai per addAddress, addRoute, addDnsServer ir addAllowedApplication arba addDisallowedApplication maršrutizavimui pagal programas. Nė vienas iš jų nėra numanomas iš galinio taško, todėl tas pats profilis gali duoti skirtingą veiksmingų maršrutų rinkinį dviejuose klientuose.

Sertifikatais pagrįstos konfigūracijos prideda dar vieną šaką. Kai serveris išduoda sertifikatą konkrečiam įrenginiui, kaip tai daro MDM ir SCEP registracija, jo pakartotinis naudojimas antrame telefone arba veikia tol, kol serveris reikalauja vienos sesijos vienai tapatybei, arba nepavyksta TLS rankos paspaudime. Patikrinkite išdavėjo politiką prieš planuodami naudoti pakartotinai.

Patikrinkite naują įrenginį prieš išleisdami senąjį

Laikykite seną telefoną prijungtą, kol naujasis praeis ką nors geresnio nei žalia piktograma. Patvirtinkite išėjimo adresą iš naujo įrenginio ir DNS sprendiklį, kurį jis iš tikrųjų naudojo. Jei split tunneling svarbu, paleiskite programą, kuri turėtų apeiti tunelį, ir vieną, kuri neturėtų, ir pažiūrėkite, kuri pasiekia jūsų tiekėją.

Vienas patikrinimas išsprendžia išėjimo adresą. Atidarykite https://ifconfig.me telefono naršyklėje, tada paleiskite curl -s https://ifconfig.me iš nešiojamojo kompiuterio tame pačiame Wi-Fi ir palyginkite abu atsakymus su adresu, kurį priskyrė jūsų tiekėjas.

Tik tada išleiskite seną tapatybę, ir darykite tai per išdavėją: atšaukite sertifikatą arba pašalinkite įrenginį iš paskyros. Failo ištrynimas iš Atsisiuntimų nieko nepabaigia, nes du įrenginiai su tuo pačiu sertifikatu serverio žurnale atrodo vienodai.

Jei eksportas pasirodo neperkeliamas, sprendimas yra nauja registracija, o ne viešas konfigūracijos paketas. Paprašykite antro įrenginio profilio arba sugeneruokite raktų porą naujame telefone ir pateikite CSR; lėčiau, ir tai yra kelias, kurį palaiko išdavėjas.

Pereikite kontrolinį sąrašą prieš ką nors trindami: naujas įrenginys prisijungia, išėjimo adresas ir DNS sutampa, apimtis pagal programas yra tokia, kaip norėjote, sena tapatybė atšaukta, o bet koks išsaugotas konfigūracijos failas yra šifruotoje saugykloje.

Susiję straipsniai