Zato mara kyau shi ne cewa manhajar VpnService tana juya maɓallin tsarin kuma daga nan wayar tana da kariya. Abin da ke faruwa a haƙiƙa ya fi ƙunci: manhajar tana neman izini, tana gina mu’amala, tana karanta da rubuta fakiti ta hanyar bayanin fayil, kuma tana mayar da mu’amalar idan ta tsaya. Rami ɗaya ne kawai irin wannan zai iya rayuwa a lokaci ɗaya, kuma tsarin na iya ɗauke shi ba tare da ya tambaya ba. Yawancin rikice-rikicen da mutane ke ɗora wa ƙa’idar suna fitowa daga wannan tsarin mallaka.

Ɗauki kowane canji na tsarin rayuwa a matsayin ɓangare na ƙira, ba a matsayin yanayi na gefe ba.

Tatsuniya: manhajar tana kunna VPN na wayar

Tafiyar tana farawa da VpnService.prepare(), wanda ke mayar da Intent da mai amfani dole ya karɓa, kuma tana ci gaba da establish(), wanda daga baya zai iya kasawa saboda dalilan da manhajar ba ta sarrafa su. Gina rami na biyu yana kashe mu’amalar farko kuma yana maye gurbin sanarwar tsarin. Babu inda a cikin wannan jerin manhajar ke da maɓallin na dukan na’urar; tana da bayanin da aka ba ta da kuma fakitan da ke sauka a kansa. Har da sanarwar dawwama ta tsarin ce ba ƙirar manhajar ba.

Domin ana ba da mu’amalar ne ba a kwace ta ba, wani abokin ciniki zai iya ɗaukar wurin a kowane lokaci. Manhajar tana sanin hakan ta hanyar kira mai dawowa, ba ta hanyar ƙimar dawowa ba.

Dakatar da manhajar da ƙarfi ana ganinsa a cikin rumfar sanarwa saboda wannan dalili: tsarin yana ba da rahoton abin da ya bayar, ba abin da manhajar ta zaɓa ta nuna ba.

Tatsuniya: ana ba da izini sau ɗaya

Lokacin da tsarin ya miƙa ramin ga wani abokin ciniki, yana aika ma’amalar sokewa a kan binder ɗin da aji na tushe ke mayarwa daga onBind(). Manhajar da ta maye gurbin wannan binder ɗin da nata dole ta aika ma’amalar sokewar da kanta, in ba haka ba VpnService.onRevoke() ba zai taɓa kunna ba kuma sabis ɗin yana ci gaba da rubutu cikin bayanin da babu shi. Mai amfani ma zai iya janye amincewa, kuma tsarin na iya dakatar da sabis ɗin yayin sake kunnawa ko sake haɗawa na koyaushe-a-kunne.

Magance shi aiki ne na zahiri ba layin log ba: daina karanta bayanin, rufe shi, share tutar haɗi kuma gaya wa mai amfani wace yanayi yake ciki. Sannan ka yanke shawara ko manhajar za ta sake ginawa, ta sake tambaya ko ta jira, domin a tsarin koyaushe-a-kunne tsarin na iya dawo da sabis ɗin da kansa.

Manhajar da ta ɗauki sokewa a matsayin keɓe ba yanayi ba za ta ba da rahoton haɗi yayin da duk fakitin da ta rubuta ake watsar da shi, kuma wannan ita ce mafi munin yanayin gazawa ga kayan aikin sirri.

Tatsuniya: mu’amalar tana tace zirga-zirga a madadinku

Abin da ke zuwa IP ne ɗanye. Kama ko tacewa yana nufin nazartar kanun IP, TCP, UDP da IPv6, bin diddigin kwarara da rubuta amsoshi zuwa bayanin, wanda ke mai da manhajar kama ƙaramin tarin hanyoyin sadarwa maimakon kayan aikin tsarin. protect() yana nan domin socket ɗin jigilar manhajar ya tsallake raminta maimakon kama kanta, kuma yana mayar da ƙimar gaskiya wacce ta cancanci dubawa a kowace socket da aka ƙirƙira bayan ramin ya tashi.

Jerin manhajoji da aka yarda da waɗanda ba a yarda ba a cikin magini suna yanke shawara wanda zirga-zirgarsa ke shiga mu’amalar. Ba su ba da damar shiga kayan da ke bayan fakitan IP da mu’amalar ke ɗaukarsu ba, kuma babu API da ke bayyana ramin wani abokin ciniki ko lissafa bayanan martabar VPN na tsarin. Ƙarfin hanyar sadarwa na iya cewa hanyar sadarwa jigilar VPN ce, amma ba wanda ramin yake ba.

Shi ya sa tambayoyin yanayi game da wasu manhajoji ke samun amsoshi masu karo da juna: bayanin kawai ba a bayyana shi ga tsarin aikinku ba.

Abin da tsarin rayuwa ke buƙata a haƙiƙa

Bi diddigin yanayin da kuke sarrafawa: shirye, kafa, sokewa, tsayawa. Sake haɗawa ya kamata ya zama wargajewa sannan kafawa, da mai shi ɗaya ga bayanin da socket ɗin jigila, domin sassa biyu da ke fafatawa don kafawa za su yi faɗa kan wurin da ke akwai. Ana iyakance fara a baya a Android na zamani, don haka watsa na boot ba tabbaci ba ne; yi amfani da sabis na gaba tare da sanarwarsa inda matakin API ya yarda.

Yi log ɗin canjin ba kawai yanayin ƙarshe ba, kuma riƙe injin yanayi ƙanƙane sosai don gwada kowace hanya. Yanayin da ba za ku iya kaiwa ba a gwaji shi ne yanayin da za ku hadu da shi a fili ba tare da log ba.

Gwada tsarin rayuwa a kan na’ura

Emulators na iya yin ƙarya game da haɗi amma ba hanyar izini da sokewa ba da gamsarwa, don haka gudanar da waɗannan a kan ainihin na’ura da aka shigar da wani abokin cinikin VPN na biyu don ya sace wurin.

adb shell dumpsys connectivity | grep -i -A3 vpn
adb shell dumpsys activity services | grep -i -A2 vpnservice
adb logcat -s VpnService:V AndroidRuntime:E
adb shell am force-stop com.example.vpnapp

Fara ramin, tabbatar da sanarwa da mu’amalar, sannan haɗa ɗayan abokin cinikin kuma ka duba ko kiran dawowa na sokewa yana aiki kuma yanayin yana sharewa. Dakatar da manhajar da ƙarfi ka duba ko wani abu har yanzu yana ba da rahoton bayani mai rai.

Maimaita jerin bayan sake kunnawa na koyaushe-a-kunne, domin wannan hanyar ta bambanta da haɗin da mai amfani ya fara. Abin da kuke nema ba alama ce ta kore ba amma hujja cewa manhajar ta daina amfani da bayanin da ba ta mallake shi ba.

Labarai masu alaƙa