Ukuvikelwa kwe-VpnService kuyahluleka lapho enye i-VPN isivele isebenza
I-Android ivumela ingxenye eyodwa ye-VPN kumsebenzisi ngamunye. Yenza izihlolo ze-prepare, establish, protect kanye nobunikazi ngokulandelana, bese ukhetha ukuhoxiswa noma ukukhishwa ngohlelo lokusebenza.
Uhlelo lwakho lusebenza lubiza i-VpnService.prepare, luthola i-null, lwakha umhubhe, futhi isichazi sibonakala sivumelekile, kodwa akukho okufika kuseva. Noma i-prepare ibuyisela i-Intent, umsebenzisi uyayivuma, futhi i-establish isahluleka. Imiphumela yomibili ivamise ukusho into eyodwa: olunye uhlelo lokusebenza selukhona ngokwalo ingxenye ye-VPN yalo msebenzisi, futhi izingcingo zakho ze-protect zimaka amasokhethi umhubhe wakho ongakwazi ukuwasebenzisa. Hamba ngezihlolo ezingezansi ngokulandelana futhi ume kwesokuqala esihlulekayo, ngoba isinyathelo sakamuva asikwazi ukulungisa esandulelayo.
Hlola isikhala se-VPN ngaphambi kokuthinta i-protect
I-Android inikeza umsebenzisi ngamunye ingxenye eyodwa kuphela ye-VPN esebenzayo. Lona umthetho weplathifomu, hhayi imvume uhlelo lwakho olungayicela, ngakho amaklayenti amabili afuna womabili ukuba ngumhubhe awakwazi ukuhlalisana.
I-VPN ehlala ivuliwe ebekelwe olunye uhlelo lokusebenza iyisimo esinzima kakhulu, ngoba uhlelo luyigcina ixhumene futhi lwenqaba ukuthathwa. Isihlungi sokuhamba esifana ne-AdGuard, iklayenti lebhizinisi noma i-VPN yomsebenzisi kungabamba isikhala ngenkathi umsebenzisi esekhohliwe ukuthi sifakiwe. Cela umsebenzisi avule Izilungiselelo futhi afunde ingxenye ebhalwe ngaphansi kwe-VPN; igama elilapho lingumnikazi oqhudelana naye. Kuze kube yilapho leyo ngxenye inqanyulwa noma isilungiselelo sokuhlala sivuliwe sisulwa, i-VpnService yakho ayikwazi ukuba yingxenye.
Isinyathelo 1: funda okubuyiselwa yi-prepare
I-VpnService.prepare iphendula umbuzo owodwa: ingabe lolu hlelo lokusebenza lungaba yi-VPN? Ibuyisela i-null lapho imvume isivele ikhona, futhi ibuyisela i-Intent lapho umsebenzisi kusafanele ayivume, okufanele uyethule nge-startActivityForResult. Thatha ukubuyiselwa kwe-null njengemvume yokuqhubeka, hhayi njengobufakazi bokuthi i-establish izophumelela.
Intent intent = VpnService.prepare(context);
if (intent != null) {
startActivityForResult(intent, REQUEST_VPN);
}Uma indlela ye-Intent ibuyile futhi umsebenzisi wenqabile, i-prepare izoqhubeka nokubuyisela i-Intent emzamweni olandelayo. Bhala ikhodi yomphumela esikhundleni sokuphinda uzame ku-loop, ngoba imvume enqatshiwe isinqumo somsebenzisi, hhayi iphutha lesikhashana.
Isinyathelo 2: qinisekisa ukuthi ingxenye ingeyohlelo lwakho
Ngemva kwe-establish, i-ParcelFileDescriptor oyitholayo iwubufakazi bobunikazi bakho, futhi kufanelekile ukuyihlola ngaphambi kwanoma yimuphi umsebenzi wamasokhethi. Isichazi esiyi-null noma esesivaliwe sisho ukuthi ingxenye ayikaze yakhiwe, ngisho noma kungavelanga okukhethekile. Qhathanisa igama lengxenye elivela ku-builder nalelo uhlelo olulibika nge-VPN esebenzayo, usebenzisa i-dumpsys kudivayisi yokuhlola. Uma zihlukile, umhubhe owakhile awuwona umhubhe othwala ukuhamba.
adb shell dumpsys connectivityUkungafani okufanayo kuchaza isithonjana esixhunyiwe nokuhamba okufile. Uhlelo lubonisa umhubhe wolunye uhlelo lokusebenza, kuyilapho ikhodi yakho ibambe isichazi sengxenye engeyona eyayo.
Isinyathelo 3: shaya i-protect ngaphambi kwe-connect
Lapho ingxenye isikhona, amasokhethi avulwa uhlelo lwakho asetshenziswa kumhubhe ngokuzenzakalela. Ukuthutha kwangaphandle akukwazi ukulandela lowo mthetho ngaphandle kwalokho iphakethe eligoqiwe lingabuyela engxenyeni, ngakho VpnService i-protect imaka isokhethi ukuze yeqe i-VPN futhi isebenzise inethiwekhi engaphansi. Ucingo lubuyisela i-boolean, futhi ukungayinaki yikho okuholela esokhethini elibonakala liphilile kodwa lingathwali lutho.
Shaya i-protect ngaphambi kwe-connect noma i-bind, hhayi ngemuva. Ukuvikelwa kufanele kube khona ngaphambi kokuba isokhethi lixhunyaniswe noma liboshwe, ngoba isokhethi elixhunyiwe selivele likhethe indlela yalo futhi i-protect yakamuva ayilinyakazisi ngokuthembekile. Uma i-protect ibuyisela i-false, ma futhi uhlole ubunikazi, ngoba yehluleka lapho ingxenye ingeyona eyohlelo lwakho, okuyisimo esitshiywa enye i-VPN. Ukubuyiselwa kwe-false kuyisignali yokubuyela Esinyathelweni 1, hhayi ukuphinda uzame isokhethi elifanayo.
DatagramSocket socket = new DatagramSocket();
if (!vpnService.protect(socket)) {
return;
}
socket.connect(serverAddress, serverPort);Isinyathelo 4: bopha inqubo lapho isokhethi linzima
Ezinye izinto zokuthutha akusona isokhethi elilodwa: ilabhulali ingavula eziningi, noma ungafuna ukuthi yonke into exhumene enqubeni esizayo isebenzise umgudu ofanayo wokuphuma. I-ConnectivityManager.bindProcessToNetwork ibopha inqubo kunethiwekhi ekhethiwe, futhi i-setProcessDefaultNetwork endala yayenza into efanayo ngaphambi kokuthi isuswe. Cela uxhumano olungaphansi nge-NET_CAPABILITY_NOT_VPN ukuze ukubopha kukhethe inethiwekhi engaphansi komhubhe wakho hhayi umhubhe ngokwawo.
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
.build();Ukubopha inqubo akuyona i-VPN yesibili. Ikhetha umgudu wokuphuma walevo nqubo, okusiza ukuthutha kwakho futhi kungasizi ekuqhubeni imihubhe emibili ngesikhathi esisodwa.
Lungisa idivayisi yomsebenzisi, hhayi indlela yekhodi
Akukho i-API evumela izinhlelo ezimbili zokusebenza ukwabelana ngesikhala se-VPN, ngakho ukulungiswa kuncike esimweni sedivayisi. Nika umsebenzisi izindlela ezimbili ezicacile: nqamula noma susa ukuhlala kuvuliwe kolunye uhlelo lokusebenza ukuze i-prepare yakho ithathe izintambo, noma vula izilungiselelo zohlelo ngalunye zalolo hlelo bese ukhipha uhlelo lwakho emhubheni walo. Ukukhishwa kugcina isihlungi sisebenza kukho konke okunye futhi kuvumela uhlelo lwakho ukusebenzisa uxhumano olujwayelekile, okuvame ukuba umphumela umsebenzisi awufunayo ngempela.
Bhala zombili izindlela embhalweni wakho wokusekela, ngoba abasebenzisi abavamile ukwazi ukuthi yiluphi uhlelo oluphethe i-VPN. Cela bathumele igama le-VPN esebenzayo elivela KZilungiselelo kanye nemiphumela ye-prepare, establish ne-protect evela kumarekhodi akho, futhi ungasho ngomzuzu ukuthi isiphi isinyathelo esihlulekile. Bese uqinisekisa ngokuhamba kwangempela: ukusesha igama, uxhumano lwe-TCP kanye nesicelo esisodwa ngomhubhe, hhayi isithonjana esixhunyiwe kuphela. Isichazi esivumelekile nesikhombisi esiluhlaza kufakazela ubunikazi ekugcineni, hhayi ukuthi ukuthutha kwasinda emithethweni yokuhlela indlela.
Uma zonke izihlolo ezine zidlula futhi ukuhamba kusafa, ubunikazi akuseyona inkinga yakho. Dlulela ekuhleleni indlela nasekufinyelelekeni kweseva, futhi uhlole izifakazelo ezifanayo kudivayisi engenalo uhlelo lwe-VPN olufakiwe.