Profil IKEv2 VPN di Android bersifat per pengguna, bukan per perangkat
Tunnel disediakan per pengguna dan per paket pemanggil, jadi entri di ponsel bisa yang salah. Periksa kepemilikan sebelum pengaturan.
Ungkapan VPN bawaan di Android mencakup dua hal yang tidak berhubungan: implementasi protokol yang dijalankan platform atas nama Anda, dan bentuk pengaturan yang dipilih pabrikan untuk ditampilkan. Keduanya bukan objek yang sama, dan tidak satu pun menjamin tunnel itu milik pengguna yang aplikasinya membutuhkannya. Penyediaan terjadi pada pengguna tertentu dengan paket pemanggil tertentu, dan semua yang berikutnya mewarisi konteks itu. Baca rantai kepemilikan sebelum layar pengaturan.
Apa yang dibangun platform untuk Anda
Sejak Android 11 platform mengekspos penyediaan VPN melalui VpnManager. Aplikasi yang disetujui mendeskripsikan profil IKEv2, dan platform sendiri menjalankan pertukaran IPsec dan IKE, sehingga aplikasi tidak pernah menyentuh paket. Itulah perbedaan penting dari aplikasi VPN sendiri, yang mengimplementasikan VpnService dan membangun tunnel di prosesnya sendiri.
val profile = Ikev2VpnProfile.Builder(serverAddress, identity)
.setAuthUsernamePassword(user, secret, rootCa)
.build()
getSystemService(VpnManager::class.java).provisionVpnProfile(profile)Panggilan di atas adalah sketsa bentuk, bukan blok untuk disalin: builder punya beberapa varian autentikasi, berbeda menurut level API, dan profil juga membawa materi kepercayaan sertifikat server. Untuk pertanyaan kepemilikan, yang penting lebih sempit daripada sintaksis.
Dua sifat mengikuti rancangan ini. Profil adalah data, jadi administrator dapat menyediakannya alih-alih mengetiknya manual. Dan tunnel adalah jaringan platform, jadi aplikasi melihatnya sebagai jaringan dengan transport VPN, bukan sebagai soket aplikasi lain.
Kepemilikan adalah pengguna, lalu paket
Multipengguna Android adalah pemisahan nyata, bukan label. Profil kerja adalah pengguna terpisah dengan paket terpasangnya, data aplikasinya, penyimpanan kuncinya, dan jangkar kepercayaannya. Produk yang sama yang terpasang di kedua tempat adalah dua instans dengan identitas pengguna berbeda, meski ikon dan nama produknya sama.
Penyediaan dicatat terhadap paket pemanggil di pengguna itu. Jadi aplikasi penyedia yang berjalan di profil pribadi membuat tunnel pribadi, dan aplikasi kerja di profil kerja tidak melihat apa pun darinya. Sebaliknya juga benar, karena itu tunnel profil kerja tidak terlihat oleh aplikasi pribadi tanpa kebijakan eksplisit yang menyatakan sebaliknya.
Pengontrol kebijakan perangkat dapat menyediakan atas nama profil terkelola, yang menjelaskan entri yang tak seorang pun di kantor ingat membuatnya. Jika Anda mengaudit ponsel, itu kemungkinan pemilik profil abu-abu, dan bukan urusan Anda menghapusnya sebagai eksperimen.
Tiga gerbang sebelum paket bergerak
Gerbang pertama adalah kewenangan: manajemen harus mengizinkan VPN, dan sebagian penerapan membatasi jenisnya juga keberadaannya. Kedua adalah identitas: sertifikat klien atau kredensial harus tersedia di pengguna pemilik profil, karena sertifikat yang diimpor ke penyimpanan pribadi tidak terlihat oleh profil kerja.
Ketiga adalah persetujuan dan kebijakan. Pengguna biasanya menyetujui koneksi saat pertama dipakai, dan administrator dapat menyematkannya sebagai selalu aktif, opsional dengan penguncian agar lalu lintas tidak keluar dari tunnel. Pengaturan itu menentukan apa yang terjadi saat tunnel mati, dan itulah bagian yang diperhatikan pengguna.
Cakupan adalah tempat ketiganya bertemu. Profil menentukan gateway dan identitas, sedangkan lapisan kebijakan menentukan aplikasi mana yang boleh memakai tunnel dan apakah lalu lintas dipaksa melewatinya. Karena itu dua ponsel dengan alamat gateway identik bisa berperilaku sangat berbeda.
Mengapa koneksi pribadi tidak mencakup aplikasi kerja
Lalu lintas dari aplikasi kerja dihasilkan di pengguna kerja, dan kebijakan jaringan yang berlaku adalah milik pengguna itu. Tunnel yang dibangun di profil pribadi tidak membawanya, seberapa sehat indikatornya. Fakta tunggal itu menjelaskan sebagian besar laporan ketika pengguna bersumpah VPN tersambung dan satu aplikasi tertentu tetap tidak mencapai layanan internal.
Resolusi nama mengikuti batas yang sama. Sufiks DNS privat dan jangkar kepercayaan bersifat per pengguna, jadi nama host internal yang ter-resolve di profil pribadi bisa gagal di profil kerja bahkan dengan tunnel yang tampak setara, karena kebijakan resolver dan penyimpanan CA adalah objek berbeda.
Verifikasi pada pendaftaran nyata, bukan ponsel laboratorium
Di perangkat, kenali dulu pemilik entri: pengguna mana, paket mana, dan apakah profil berasal dari penyedia platform atau dari aplikasi dengan layanan VPN sendiri. Lalu pastikan identitas yang diharapkan profil benar-benar ada di penyimpanan kunci pengguna itu.
Uji siklus hidup, bukan hanya koneksi. Masuk, buka penyimpanan kredensial, biarkan profil kerja berhenti sejenak untuk malam, lalu bawa kembali dan periksa apakah tunnel kembali tanpa ketukan manual. Profil kerja yang mati setelah jam kerja membawa tunnelnya, dan itu perilaku yang diharapkan bukan kerusakan, asalkan keadaan tidak tersedia yang diharapkan tertulis.
Terakhir, uji aplikasi kerja itu sendiri terhadap titik akhir internal yang dikenal dan bandingkan dengan hasil profil pribadi. Keduanya boleh berbeda; yang tidak boleh berbeda adalah model kepemilikan. Jika tunnel milik pengguna yang salah, penerbitan ulang sertifikat tidak akan memperbaikinya.
Jangan memaksakan masalah dengan meluncurkan aktivitas pengaturan tersembunyi untuk memunculkan menu, dan jangan menyalin kunci privat antar profil agar koneksi tampak. Referensi VpnManager mendokumentasikan apa yang boleh disediakan pemanggil; jika jalur yang disetujui tidak mencakup kasus Anda, itu keputusan administrator, bukan masalah pengaturan.