Mengapa aplikasi iPhone anda tidak boleh menghidupkan atau mematikan VPN sistem
Aplikasi awam tidak boleh menukar VPN sistem, membaca keadaannya atau memaksa sambungan. Peraturan On Demand, profil Always On pada peranti yang dipantau dan MDM ialah pilihannya.
Seorang pengurus produk meminta butang yang menghidupkan VPN syarikat, dan permintaan itu kedengaran remeh. Pada iOS ini bukan ciri kecil; ia berada di luar kontrak awam, dan setiap jalan pintas sama ada gagal semakan atau rosak pada keluaran seterusnya. Telusuri permintaan itu melalui apa yang sebenarnya dibenarkan platform, dan reka bentuk sebahagian besarnya menulis dirinya sendiri. Aplikasi boleh memiliki konfigurasi VPN dan memulakannya. Aplikasi tidak boleh mencapai suis sistem, tidak boleh membaca keadaan profil yang tidak diciptanya, dan tidak boleh mengekalkan pengguna bersambung bertentangan dengan kehendaknya.
Mulakan dengan tiga perkara yang dimaksudkan pengguna
Pisahkan makna sebelum memisahkan API. Kadang-kadang pengguna mahu terowong aplikasi anda bersambung, kadang-kadang dia mahu suis dalam Tetapan dihidupkan untuk profil yang dipasang orang lain, dan kadang-kadang dia mahu telefon tidak boleh melayari tanpa terowong. Itu sepadan dengan tiga mekanisme berbeza, dan hanya yang pertama terbuka kepada aplikasi biasa.
Makna kedua itulah yang menjana soalan Stack Overflow, dan ia tiada jawapan yang disokong. Suis dalam Tetapan milik pengguna dan, pada peranti terurus, milik profil. Tiada API awam menyenaraikan konfigurasi VPN, melaporkan sama ada terowong sistem hidup, atau menukarnya.
Apa yang sebenarnya boleh dicipta oleh aplikasi
NetworkExtension memberikan aplikasi konfigurasinya sendiri melalui NEVPNManager. Dengan hak Personal VPN dan persetujuan pengguna, aplikasi menyimpan konfigurasi yang muncul dalam Tetapan dengan namanya sendiri, dan ia boleh memulakan atau menghentikan sambungan tunggal itu. Itu keupayaan sebenar yang boleh disemak, dan itu juga keseluruhan skop: pengurus hanya membaca dan menulis apa yang diciptanya.
Hak itu bukan automatik. Anda memintanya daripada Apple dan menjelaskan mengapa aplikasi memerlukan terowong, dan klien yang satu-satunya tujuan ialah menghidupkan profil orang lain tiada jawapan yang baik. Penyedia terowong paket mengikut peraturan yang sama dengan kelas berbeza: NETunnelProviderManager memiliki konfigurasi berasaskan penyedia yang dipasang oleh aplikasi sendiri. Tiada satu pun daripada kedua-dua laluan itu mencapai profil yang dihantar oleh MDM.
Persetujuan juga terpakai semasa menyimpan. Menulis konfigurasi meminta pengguna, dan permintaan itu bukan sesuatu yang boleh ditekankan oleh aplikasi demi keselesaan.
Membaca keadaan terlanggar dinding yang sama
Status kelihatan lebih mesra daripada kawalan dan sama tertutupnya. NEVPNStatus melaporkan tidak sah, terputus, menyambung, bersambung, mengesahkan semula atau memutuskan untuk konfigurasi aplikasi sendiri, dan pemberitahuan dilepaskan pada setiap perubahan. Ia tidak berkata apa-apa tentang terowong yang dipasang oleh profil pengurusan, dan itulah keadaan yang ingin dilihat oleh meja bantuan.
Pemantauan laluan rangkaian dan perubahan antara muka ditawarkan sebagai pengganti dalam semakan reka bentuk. Ia menerangkan laluan yang dilalui trafik aplikasi, yang berubah atas sebab tidak berkaitan keadaan VPN, dan menggunakannya sebagai bacaan VPN menghasilkan antara muka yang berbohong dalam kedua-dua arah.
On Demand dan Always On ialah tuas sebenar
Tuas yang disokong hidup dalam profil dan bukan dalam aplikasi. Peraturan On Demand memberitahu sistem bila hendak bersambung: senarai syarat tersusun dengan tindakan, dinilai oleh sistem pengendalian, bukan oleh kod anda. Peraturan yang bersambung pada mana-mana antara muka mencipta rasa sentiasa bersambung tanpa memberikan kawalan kepada mana-mana aplikasi.
Always On VPN ialah mekanisme penguatkuasaan, dan ia terikat pada pengawasan. Pada peranti yang diawasi, MDM memasang profil yang mengekalkan terowong, manakala pada telefon peribadi tanpa pengawasan kunci yang sama tidak menghasilkan tingkah laku yang sama. Asimetri itu disengajakan, dan tiada gabungan kunci muatan yang menghapuskannya. Apabila keperluan benar-benar ialah VPN mesti dihidupkan, keperluan itu sebenarnya ialah peranti mesti diuruskan.
Di antara keduanya duduk sepupu yang lebih lemah: peraturan yang menyambung semula selepas pengguna memutuskan. Ia menyambung semula apabila peraturan dinilai kali berikutnya, yang tidak sama dengan serta-merta, dan pengguna yang memutuskan dengan sengaja akan menyedari perbezaannya. Reka bentuk antara muka di sekitar jurang itu dan bukan menjanjikan kunci.
Hantar laluan yang disokong
Empat soalan menentukan mekanisme sebelum ada kod: siapa memiliki peranti, sama ada ia diawasi, klien mana yang menamatkan terowong, dan dari mana profil datang. Jika mana-mana satu tidak diketahui, permintaan ciri itu belum bersedia untuk dianggar.
API peribadi yang mencuit VPN sistem akan lulus demo dan gagal semakan, dan jika dihantar melalui cara lain ia rosak pada keluaran iOS seterusnya. Tiada versi pertukaran itu yang berbaloi untuk satu suis.
Telemetri pengurusan ialah saluran berasingan: ia melaporkan bahawa profil dipasang dan sama ada peranti mematuhi, yang merupakan pelaporan dan bukan permukaan kawalan setiap aplikasi. Uji aliran itu pada peranti sebenar selepas setiap kemas kini, kerana tingkah laku yang disokong hidup dalam OS dan OS bergerak.