Apl dikecualikan masih dalam talian? Peraturan apl dan laluan berbeza
Mengecualikan apl Android daripada VPN tidak menyekatnya. Senarai benarkan, peraturan UID dan laluan yang ditolak masing-masing menentukan bahagian laluan yang berbeza.
Mengecualikan pakej ialah arahan penghalaan, bukan sekatan, jadi halaman yang dimuatkan selepas VPN disambung memang dijangka dan bukan bukti kegagalan. Pengecualian mengeluarkan apl daripada terowong dan bukan menyekatnya, dan rangkaian biasa membawa trafiknya. Dua dasar berasingan bertemu di sini: satu memilih proses, satu lagi memilih destinasi. Membacanya dalam susunan itu menjelaskan mengapa ikon bersambung dan apl yang berfungsi bukan percanggahan.
Mengapa pengecualian membiarkan rangkaian terbuka
VpnService.Builder menerima sama ada senarai benarkan atau senarai larang, tidak pernah kedua-duanya. Hanya pakej dalam senarai benarkan dihalakan melalui terowong. Senarai larang menyongsangkan perkara itu: setiap pakej kecuali yang tersenarai menggunakan terowong, dan yang tersenarai mengekalkan laluan fizikal. Pakej yang tidak tersenarai di bawah senarai benarkan juga berada di luar terowong, jadi pengecualian ialah keadaan biasa bagi kebanyakan apl dalam mod itu.
Itu menjadikan entri larang setempat satu keputusan penghalaan, bukan peraturan tembok api. Jika keperluannya adalah menghalang apl daripada mencapai hos, terowong mesti meliputinya dan pelayan atau dasar setempat mesti menolak trafik itu. Mengeluarkan apl daripada terowong hanya menukar antara muka mana yang membawa paketnya.
Kes Play Store ialah contoh sengaja yang biasa. Mengecualikan pakej kedai membolehkan muat turun menggunakan sambungan asas apabila laluan keluar VPN mengganggu pemindahan, dan ia menunjukkan pengecualian bermaksud pemintasan, bukan sekatan.
Satu profil, satu senarai
Pembina membaling pengecualian jika kedua-dua panggilan digunakan, jadi profil di hadapan anda ialah senarai benarkan atau senarai larang. Fakta tunggal itu menentukan cara membaca setiap pemerhatian kemudian. Semak kod atau konfigurasi terurus sebelum jadual penghalaan, kerana senarai itu menentukan maksud baki output. Profil hibrid bukan keadaan yang boleh anda perhatikan.
Perbezaan itu juga meramal apa yang akan dilakukan oleh apl yang baru dipasang. Di bawah senarai benarkan ia kekal di luar sehingga seseorang menambahnya, manakala di bawah senarai larang ia menyertai terowong secara lalai.
Konfigurasi terurus mendedahkan pilihan yang sama di bawah nama kunci yang berbeza, dan sesetengah konsol menyebutnya mod VPN setiap apl dan bukan senarai. Tingkah laku tetap berkurang kepada dua panggilan itu, jadi jejaki tetapan itu kembali ke senarai pakej dan bukan mempercayai label. Jika label dan senarai tidak sepadan, senarai menang.
Ikut peraturan UID hingga ke jadual terowong
Android memberikan setiap apl ID pengguna Linux sendiri, dan perkhidmatan VPN memasang peraturan dasar yang sepadan dengan julat UID. Trafik yang sepadan dihantar ke jadual penghalaan yang laluan lalainya menunjuk ke peranti tun. Nombor jadual diperuntukkan bagi setiap contoh VPN, jadi ia berubah selepas sambung semula atau selepas profil VPN kedua dicipta.
Output peraturan ialah peta. Setiap baris menamakan jadual carian, dan jadual itu menyimpan laluan lalai yang menentukan sama ada pakej yang sepadan memasuki terowong.
adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>
Jalankan perintah ketiga dahulu untuk mendapatkan UID, kemudian cari peraturan yang julatnya mengandunginya. Peraturan itu menunjuk ke nombor jadual, dan ip route show table <n> dengan nombor itu menunjukkan sama ada laluan lalai melalui peranti tun wujud. Jika jadual tiada laluan lalai, apl dipilih tetapi tiada laluan, dan itu kegagalan yang berbeza.
Perintah ini memerlukan binaan yang boleh dinyahpepijat atau peranti yang adb shell boleh membaca keadaan rangkaian. Pada telefon pengeluaran pengurus pakej masih menjawab, tetapi pemeriksaan penghalaan mungkin ditolak, jadi rakam apa yang mampu dan anggap selebihnya belum disahkan.
Laluan menuntut awalan, bukan apl
Builder.addRoute menuntut awalan destinasi untuk terowong. Profil yang hanya menambah 10.0.0.0/8 menghantar awalan itu melalui terowong dan meninggalkan setiap destinasi lain pada laluan fizikal. Itu terowong berpecah biasa, dan ia tidak bergantung pada apl mana yang dipilih oleh peraturan.
Konfigurasi yang ditolak oleh pelayan mencerminkan model yang sama. Tolakan laluan individu menambah awalan, manakala arahan redirect-gateway menggantikan laluan lalai dan menangkap segala-galanya untuk apl yang diliputi terowong. Membuang arahan itu boleh mengecilkan terowong yang berfungsi kepada satu subnet tanpa sebarang perubahan pada peranti.
Laluan yang ditolak dengan gateway atau pengkuantifikasi metrik luar biasa juga mungkin gagal dipasang. Utamakan bentuk awalan biasa dan biarkan pelayan mengendalikan penghantaran dan NAT.
Baca persilangan sebelum menukar tetapan
Terowong membawa persilangan proses yang diliputi dan destinasi yang dituntut. Apl yang diliputi yang meminta alamat di luar awalan yang diterbitkan keluar melalui rangkaian fizikal. Pakej yang dilarang kekal di luar walaupun ia meminta alamat di dalam awalan itu. Kedua-duanya bukan pepijat; kedua-duanya ialah dua dasar yang menjalankan tugasnya.
VPN setiap apl juga boleh meninggalkan apl berkaitan tanpa ketersambungan. Apabila on-demand dimatikan dan terowong turun, apl kekal terikat pada VPN setiap apl dan tiada laluan sandaran, yang kelihatan seperti apl rosak dan bukan keadaan dasar. Menghidupkan on-demand, atau membuang kaitan melalui pengurusan, mengubahnya.
| Layer | What it selects | Where to look | Typical mismatch |
|---|---|---|---|
| Package list | Processes | Builder calls or managed configuration | App excluded but expected to be blocked |
| UID policy rule | Which table a UID uses | ip rule show | Tunnel icon on, app still on Wi-Fi |
| Routing table | Destinations for matched traffic | ip route show table <n> | Covered app reaches only one subnet |
| Server push | Prefixes offered to the client | Server route configuration | Tunnel shrinks after a server edit |
Diagnosis satu paksi pada satu masa. Sahkan benarkan atau larang dahulu, baca peraturan UID dan jadual yang dipasang kedua, dan uji apl kedua terhadap destinasi yang sama terakhir. Apl kedua memisahkan pemilihan proses daripada pemilihan destinasi dalam satu permintaan.
Catat hasilnya sebagai apl, destinasi dan nombor jadual. Itulah tiga serangkai yang mesti dikekalkan oleh perubahan seterusnya.