Dua keperluan yang berbunyi sama bukanlah sama: «kecualikan aplikasi ini daripada VPN» dan «hantar satu destinasi ini di luar VPN untuk komputer riba di hotspot saya». Yang pertama mengubah cara soket pada telefon memilih rangkaian. Yang kedua mesti mengubah keputusan penghantaran untuk paket yang tiba daripada peranti lain selepas telefon sudah menerimanya. Mencampurkan kedua-duanya ialah cara klien hotspot berakhir dengan pengecualian yang sentiasa hanya terpakai pada pelayar telefon itu sendiri.

Dua subsistem memiliki kedua-dua soalan

Android memisahkan rangkaian aplikasi dan penambatan. Soket aplikasi diberikan kepada rangkaian oleh tindanan kesambungan, dan aplikasi VPN memutuskan soketnya yang mana masuk ke dalam terowong. Paket yang dihantar daripada klien yang ditambat dikendalikan oleh subsistem penambatan, yang meminta netd laluan, peraturan dasar dan terjemahan pada antara muka hiliran.

Pengecualian setiap aplikasi dinilai apabila aplikasi membuka soket. Paket yang dihantar tidak pernah sampai ke semakan itu, kerana ia tidak berasal daripada soket aplikasi pada peranti ini. Itulah keseluruhan sebab kedua-dua tetapan tidak boleh saling menggantikan, dan ia bukan pepijat pada mana-mana satu pun.

Apa yang sebenarnya diubah oleh pengecualian setiap aplikasi

Pembina VpnService boleh menamakan pakej yang kekal di luar terowong dengan addDisallowedApplication, atau menamakan satu-satunya pakej yang dibenarkan di dalam dengan addAllowedApplication. Aplikasi itu kemudian membuka soket pada rangkaian asas sementara VPN terus memiliki laluan lalai untuk semua yang lain.

Skopnya tepat: soket pakej itu sendiri, pada peranti ini, selagi terowong naik. Ia tidak menyebut apa-apa tentang trafik yang dihantar, apa-apa tentang peranti kedua dan apa-apa tentang paket yang dihantar oleh sistem bagi pihak penambatan.

Ia juga bukan kawalan destinasi. Mengecualikan pelayar mengecualikan setiap alamat yang dicapai oleh pelayar itu, termasuk yang anda mahu kekalkan di dalam terowong. Apabila keperluan menamakan destinasi dan bukannya aplikasi, pemilih aplikasi ialah alat yang salah mengikut binaan.

Bagaimana paket yang ditambat kelihatan kepada telefon

Paket klien tiba pada antara muka hotspot dengan alamat sumber peribadi yang diberikan oleh telefon, katakan 192.168.43.20, dan destinasi awam. Untuk menghantarnya telefon memerlukan laluan ke pautan atas dan peraturan terjemahan supaya balasan menemui jalan pulang, kerana alamat peribadi klien tidak bermakna pada rangkaian selular.

Android menyatakan itu dengan peraturan dasar yang memilih jadual penghalaan, dan netd membina semula jadual dan peraturan berkaitan apabila rangkaian dan VPN berubah. Nombor jadual, keutamaan peraturan atau nama antara muka yang disalin daripada siaran forum, atau daripada model yang sama pada keluaran lebih lama, tidak menetapkan pemilikan yang tahan lama. Pembinaan semula itu juga sebab mengapa peraturan yang ditulis dengan tangan boleh berfungsi selama satu jam dan berhenti selepas sambungan semula seterusnya.

Dasar apa yang sebenarnya diperlukan oleh pengecualian hotspot

Tulis keputusan itu sebagai sumber, destinasi dan laluan yang dimaksudkan sebelum menyentuh peraturan. Bentuk minimum untuk satu destinasi yang diluluskan kelihatan seperti ini:

SourceDestinationIntended path
One authorized hotspot clientOne approved public service addressOrdinary cellular uplink
The same clientAll other covered destinationsShared VPN
The phone's own appsTheir existing destinationsUnchanged phone policy

Kedua-dua arah mesti lengkap. Cabang langsung memerlukan laluan yang boleh digunakan melalui pautan atas selular yang kebetulan semasa; cabang VPN memerlukan laluan terowong serta kebenaran untuk menghantar. Sebarang terjemahan sumber mesti sepadan dengan jalan keluar yang anda pilih, kerana NAT yang digunakan pada antara muka terowong menunjukkan alamat terowong dan bukan alamat selular, dan laluan balik kemudian tidak bersetuju dengan laluan keluar.

Balasan mesti sampai kepada klien hiliran yang sama melalui keadaan yang dijejaki atau laluan eksplisit, dan pembilang paket keluar tidak membuktikan apa-apa daripada itu. Kekalkan juga pengangkutan luar VPN itu sendiri di luar skop pengecualian, jika tidak paket pembawa terowong mewarisi dasar yang ditulis untuk permintaan web klien.

Satu alamat yang ditangkap bukan destinasi

Satu alamat IPv4 yang dibaca daripada pelayar ialah petikan sesaat. Perkhidmatan besar menjawab daripada anycast atau daripada set alamat tepi yang berputar, banyak yang dwi-tindanan, dan aliran log masuk boleh menyentuh hos pengesahan dan telemetri yang tidak pernah ditunjukkan oleh halaman. Pengecualian yang dibina di sekitar alamat yang kebetulan anda lihat rosak pada kali seterusnya perkhidmatan itu mengimbangi semula beban.

Gunakan alamat yang didokumenkan oleh pemilik perkhidmatan, atau julat yang diterbitkannya, dan ambil kira kedua-dua keluarga alamat. Jika keperluan tidak dapat dinyatakan sebagai set yang stabil, ia mungkin soalan dasar untuk perkhidmatan dan bukan tipu helah penghalaan pada telefon.

Sahkan dari sisi hiliran

Tiga semakan, dalam susunan ini: perkhidmatan yang dipilih daripada komputer riba, destinasi biasa yang mesti kekal di dalam VPN, dan aplikasi telefon yang mesti kekal tidak terjejas. Kemudian ulangi selepas sambungan semula dan selepas perubahan pautan atas, kerana pada masa itulah jadual dasar dibina semula.

Jika pelaksanaan perkongsian telefon tidak dapat memegang kontrak itu sepanjang sambungan semula, pindahkan dasar terpilih ke penghala hiliran yang disokong dan bukan mengumpul peraturan root pada peranti. Penghala boleh menyatakan padanan sumber dan destinasi dengan pemilik yang stabil, dan dokumentasi modul penambatan ialah rujukan yang betul untuk apa yang sebenarnya dilakukan oleh telefon.

Artikel berkaitan