Izvoz VPN-a na Androidu: što se zapravo prenosi na novi telefon
Izvoz VPN-a na Androidu prenosi postavke i ponekad ključ, ali nikada autorizaciju uređaja. Provjerite što se stvarno prenosi prije nego izbrišete stari telefon.
Izvoz VPN profila s Androida izgleda kao korak sigurnosne kopije, a izbornik koji ga nudi ne čini ništa da ispravi taj dojam. Ono što nosite sa sobom je ulaz za parser, ključ koji operativni sustav možda nikada neće vratiti i autorizacija izdana upravo tom telefonu. Odvojite to troje i pojavljuje se korisno pitanje: koji dio još nedostaje na novom uređaju?
Datoteka je lagani dio. Ostala dva odlučuju hoće li migracija uspjeti.
Što izvezeni profil zapravo sadrži
Otvorite datoteku u uređivaču teksta prije nego joj povjerujete. OpenVPN profil je mali konfiguracijski jezik: remote, proto, data-ciphers i često ugrađeni blokovi <ca>, <cert>, <key> ili <tls-crypt> koje klijent predaje svom TLS stogu. WireGuard konfiguracija je ravnija, [Interface] drži PrivateKey i Address, zatim po jedan [Peer] za svaku krajnju točku koji nosi PublicKey, AllowedIPs i Endpoint. IKEv2 dolazi kao .mobileconfig s rječnicima korisnog tereta umjesto blokova ključeva.
Ništa od tog teksta nije vjerodajnica samo po sebi. Vjerodajnica je privatni ključ, a svaki ga format ili lijepi unutra ili upućuje na alias koji se razrješava samo unutar klijenta koji ga je stvorio.
Gdje ključ zapravo živi na Androidu
Android čuva podatke aplikacija pod /data/data/<package>, čitljive samo tom UID-u aplikacije. Ne postoji podržan način da kopirate privatni direktorij druge aplikacije s telefona bez roota, a adb backup je prestao biti opći odgovor nakon što ga je Android 12 ukinuo i klijenti počeli deklarirati allowBackup="false". Zato izvoz iz Android klijenta znači ono što taj klijent implementira, a ne kopiju datotečnog sustava.
Sloj identiteta nalazi se ispod aplikacije. Ako je klijent uvezao vaš ključ u Android Keystore, materijal se tamo generira ili zamotava, a kasniji izvozi mogu nositi referencu na Keystore alias umjesto bajtova. Ključevi s hardverskom podrškom napravljeni su tako da ih čak ni aplikacija vlasnik ne može pročitati, kako opisuje Keystore documentation, pa se profil koji upućuje na taj alias čisto uvozi na istom telefonu i ne uspijeva svugdje drugdje.
To nije pokvaren izvoz. To je svojstvo koje je platforma zamoljena pružiti.
Što profil ne može prenijeti
Postavite objekte prema onome što će odredište prihvatiti:
| Objekt | Prenosi se? | Zašto |
|---|---|---|
| Protokol i krajnja točka | Da, ako odredišni klijent to podržava | Običan tekst u profilu |
| CA certifikat i provjera imena hosta | Obično | Javni materijal, ali ime hosta i dalje mora odgovarati certifikatu |
| Klijentski certifikat | Da, osim ako nije vezan uz pojedini uređaj | Certifikati su prenosivi; izdavatelj odlučuje koliko uređaja smije koristiti jedan |
| Privatni ključ | Samo ako je generiran izvan Keystorea | Ključevi s hardverskom podrškom ne mogu se izvesti, samo zamijeniti |
| Račun, MFA, SSO sesija | Ne | Tokeni istječu i ostaju vezani uz uređaj koji ih je dobio |
| Rute, DNS i obuhvat aplikacija | Samo kao konfiguracijski tekst | Android ih primjenjuje pri povezivanju kroz VpnService.Builder |
| Popis aplikacija za split-tunnel | Rijetko | Nazivi paketa razlikuju se među uređajima, a popis je stanje klijenta |
Dva retka stvaraju većinu zabune. Ključ generiran na uređaju i označen kao neizvoziv doista nestaje s podacima aplikacije, pa je zamjena novi ključ i certifikat izdan za njega. Sesijski token kopiran na novi telefon obično umire pri prvom osvježavanju, što izgleda kao neuspješan uvoz.
Uvoz je parsiranje, a zatim zahtjev za pristanak
Na strani primatelja uvoz je parsiranje nakon kojeg slijedi upis. Klijent čita konfiguraciju, provjerava postoji li svaki navedeni blok, a zatim upisuje definiciju tunela u svoj sandbox, zbog čega datoteka koju ste odabrali iz Preuzimanja nije ono što se zatim povezuje.
Zatim dolazi korak autorizacije koji nijedna datoteka ne može preskočiti. Android zahtijeva da aplikacija pozove VpnService.prepare() i dobije vaš pristanak prije nego što uspostavi tunel, pa svježe uvezeni profil još jednom prikazuje sistemski dijalog. Zatim se tunel izričito gradi kroz addAddress, addRoute, addDnsServer i addAllowedApplication ili addDisallowedApplication za usmjeravanje po aplikacijama. Ništa od toga ne proizlazi iz krajnje točke, pa isti profil može proizvesti različit skup djelotvornih ruta u dva klijenta.
Postavke temeljene na certifikatima dodaju još jedno račvanje. Kad poslužitelj izda certifikat određenom uređaju, kao što to čine MDM i SCEP upis, njegovo ponovno korištenje na drugom telefonu ili radi dok poslužitelj ne nametne jednu sesiju po identitetu ili ne uspije na TLS rukovanju. Provjerite politiku izdavatelja prije nego planirate ponovnu upotrebu.
Provjerite novi uređaj prije nego umirovite stari
Držite stari telefon povezan dok novi ne prođe nešto bolje od zelene ikone. Potvrdite izlaznu adresu s novog uređaja i DNS resolver koji je zaista koristio. Ako je split tunneling važan, pokrenite aplikaciju koja treba zaobići tunel i onu koja ne treba, pa pogledajte koja dolazi do vašeg ISP-a.
Jedna provjera rješava izlaznu adresu. Otvorite https://ifconfig.me u pregledniku telefona, zatim pokrenite curl -s https://ifconfig.me s prijenosnog računala na istoj Wi-Fi mreži i usporedite oba odgovora s adresom koju je dodijelio vaš pružatelj.
Tek tada umirovite stari identitet i to kroz izdavatelja: opozovite certifikat ili uklonite uređaj s računa. Brisanje datoteke iz Preuzimanja ništa ne završava, jer dva uređaja s istim certifikatom izgledaju jednako u poslužiteljskom dnevniku.
Ako se izvoz pokaže neprenosivim, rješenje je nova registracija, a ne javni konfiguracijski paket. Zatražite profil za drugi uređaj ili generirajte par ključeva na novom telefonu i pošaljite CSR; sporije je i to je put koji izdavatelj podržava.
Prođite kontrolni popis prije nego bilo što izbrišete: novi uređaj se povezuje, izlazna adresa i DNS se podudaraju, obuhvat po aplikacijama je onakav kakav ste namjeravali, stari identitet je opozvan, a svaka konfiguracijska datoteka koju ste zadržali nalazi se u šifriranom spremištu.