Uhlelo lokusebenza lwe-Android alukwazi ukuxazulula igama langaphakathi ngenkathi isiphequluli se-VPN client uqobo lwaso sifinyelela kulo, futhi ukwakhiwa okufanayo kuyasebenza kwelinye ifoni. I-URL ayiyona into eguqukayo. Into eguqukayo inqubo yokuthi iyiphi inethiwekhi inqubo yohlelo evunyelwe ukuyisebenzisela ukuxazulula, futhi i-Android ayiqinisekisi ukuthi i-VPN esebenzayo iyona nethiwekhi esetshenziswa amasokhethi akho. Yenza lezi zihlolo ngokulandelana futhi ume lapho isithombe se-resolver singahambisani nokucabanga kwakho.

Isinyathelo 1: fakazela ukuthi uhlelo lusekuphi inethiwekhi

Funda umbono wohlelo uqobo, hhayi ibha yesimo. Kusukela ku-ConnectivityManager, thola inethiwekhi esebenzayo, i-LinkProperties yayo, uhlu lwamaseva e-DNS kanye nesilungiselelo se-DNS yangasese. Uma uhlu luqukethe i-resolver ye-VPN, uhlelo lunendlela eya kuyo; uma luqukethe i-resolver ye-Wi-Fi, ithumbu akuyona inethiwekhi ezimele yaleyo nqubo.

Isithonjana se-VPN sisho kuphela ukuthi kukhona ithumbu. Asisho ukuthi inqubo yohlelo yayiboshiwe kulo, futhi i-Android ayihlali ihambisa ukuxazululwa kwamagama ngoxhumano olubonakala lusebenza. Izinhlelo ze-VPN zendawo ezidlulisela kwelinye idivayisi, amanethiwekhi e-Wi-Fi angenayo i-inthanethi kanye nokwakhiwa komkhiqizi konke kungashiya uhlelo lubuza i-resolver ezimele esikhundleni samaseva ethumbu.

Isinyathelo 2: cela i-transport ye-VPN bese ubopha inqubo

Lapho uhlelo kufanele lusebenzise i-resolver yethumbu, cela inethiwekhi ene-transport ye-VPN bese ubopha inqubo ku-callback, ukuze ikhodi ingaqageli ukuthi inethiwekhi izovela nini:

val request = NetworkRequest.Builder()
    .addTransportType(NetworkCapabilities.TRANSPORT_VPN)
    .build()

connectivityManager.requestNetwork(request, object : NetworkCallback() {
    override fun onAvailable(network: Network) {
        val bound = connectivityManager.bindProcessToNetwork(network)
        Log.i(TAG, "bound to VPN network: " + bound)
    }
})

Lolu cingo lushintsha inethiwekhi ezimele yenqubo yonke, ngakho wonke amasokhethi adalwe ngemuva kwalokho ayisebenzisa. Amasokhethi asevele ekhona agcina inethiwekhi adalwe kuyo, yingakho ichibi lokuxhumana elavulwa ngaphambi kokubopha lingaqhubeka nokuxazulula ngendlela endala. Inani elibuyiswayo liyi-boolean, futhi umphumela ongufalse usho ukuthi ukubopha akwenzekanga; phinda uzame ngokubambezeleka okufushane futhi uloge kokubili ukuzama.

Isinyathelo 3: khawulela ukubopha kulokho okukudingayo

Ukubopha kwenqubo yonke kukhulu. I-telemetry, izihlolo zokubuyekezwa kanye nama-SDK enye inkampani nakho kudlulela ethumbini, futhi uma ithumbu lingenayo i-inthanethi ziqala ukwehluleka. Okwesicelo esisodwa, sebenzisa i-socket factory yenethiwekhi futhi ushiye okuzimele kwedivayisi kukho konke okunye. Khetha imodeli eyodwa ngamabomu: ukubopha okuncane kukho ukuxhumana ngakunye, noma ukubopha kwenqubo nokukhulula okucacile lapho i-VPN inyamalala.

Izici ezimbili ze-resolver zingahlula ukubopha ngaphandle kwenkinga. I-DNS yangasese esimweni esiqinile ithumela imibuzo kuseva ye-DoT enegama esikhundleni se-resolver yenethiwekhi, futhi uhlelo oluletha iklayenti yalo ye-DNS-over-HTTPS ludlula ngokuphelele i-resolver yesistimu. Hlola kokubili ngaphambi kokuphetha ngokuthi ukubopha kwehlulekile. Umbuzo ongafinyeleli kuseva ye-DNS ye-VPN awusoze ubonakale kunoma yiliphi ilogi ohlangothini lwethumbu.

Isinyathelo 4: ungathembi umkhawulo we-CONNECTED

NetworkType.CONNECTED ku-WorkManager kusho ukuthi inethiwekhi ixhunyiwe, futhi i-transport ye-VPN iyayifeza nakuba isixhumanisi se-Wi-Fi noma seselula esingaphansi singasekho. Umsebenzi uyasebenza, zonke izicelo ziyehluleka, futhi inqubomgomo yokuphinda iguqula lokho kube isiphepho esibonakala njengephutha lokuhlela. Ithumbu liyinethiwekhi; umkhawulo wawungakaze ube ukuhlolwa kwe-inthanethi.

Hlola ikhono umsebenzi owudinga ngempela, njengokufinyelela kwi-inthanethi okuqinisekisiwe, futhi gcina inqubomgomo yokuphinda elinganiselwe enokuhlehla. Uma umsebenzi udinga igama langasese, xazulula lelo gama kunethiwekhi ekhethiwe ngaphambi kokwenza umsebenzi, futhi wehluleke ngokushesha ngephutha elicacile esikhundleni sokuphinda isicelo esingeke siphumelele.

Isinyathelo 5: rekhoda ubufakazi futhi uhlole kabusha ibanga

Loga izinhlobo ze-transport zenethiwekhi ekhethiwe, amaseva e-DNS avela ku-LinkProperties, ukuthi ukubopha kubuyise i-true yini, kanye nokwehluleka okuqondile kwesicelo sokuqala. Bese usebenzisa igama langasese negama lomphakathi ngaphansi kokubopha okufanayo. Lelo khulakuphela libonisa ukuthi uhlelo lusebenzise i-resolver yethumbu noma lwehlela buthule kokuzimele kwedivayisi, futhi lowo umehluko uwona umsebenzisi awuzwayo.

Phinda lokhu kunguqulo ye-Android endala kunazo zonke oyisekelayo nakukukhishwa okukodwa kwamanje. Ukuziphatha kwe-resolver okwenza indlela ezimele ibonakale ilungile yikho kanye lapho amadivayisi nezinguqulo zehluka khona, futhi ukwakhiwa okudlula kuphela kudivayisi yokuhlola entsha kakhulu akukaqinisekiswa ebangeni olithumelayo. adb shell dumpsys connectivity iyindlela esheshayo yokuqinisekisa ukuthi idivayisi ibika ziphi izinethiwekhi namakhono ngenkathi uphinda inkinga.

Izihloko ezihlobene