Root si kitu kinachoruhusu programu ya VPN ya Android kubeba trafiki, kuzuia uvujaji au kuendelea baada ya kuwasha upya. Watu hufupisha haya yote kama „programu ina ruhusa ya VPN“, ambayo huficha mifumo mitatu tofauti: idhini kutoka kwa mtumiaji, kiolesura cha pakiti ambacho mfumo huweka, na sera ya uzuiaji ya jukwaa ambayo si ya programu kuifafanua. Kukagua muundo wa VPN ya Android maana yake ni kuuliza ni ipi kati ya hizo tatu dai linategemea kweli, kwa sababu kila moja ina mmiliki na namna tofauti ya kushindwa.

Idhini huja kupitia shughuli ya mfumo

VpnService.prepare() haitoi chochote. Hurudisha intent kwa shughuli ya idhini ya mfumo idhini inapokosekana, na programu hufungua mazungumzo hayo ili mtumiaji aidhinishe huduma. Kuanzisha mchakato wa programu yenyewe, kuongeza ruhusa kwenye manifest, au kuonyesha skrini maalum ya „washa VPN“ hakuundi idhini.

Idhini pia ina wigo. Ni ya kifurushi katika wasifu wa mtumiaji, kwa hiyo nakala ya kibinafsi na nakala ya kazi ni maamuzi tofauti, na mmiliki wa kifaa anaweza kuandaa wasifu unaosimamiwa kwa namna tofauti na wa kibinafsi. Ikiwa mazungumzo hayatokei kamwe na prepare() ikirudisha null, idhini ipo tayari kwa kifurushi hicho katika wasifu huo; hiyo si ushahidi kwamba programu inaaminika, ni kwamba idhini ipo.

Kiolesura ni ombi ambalo mfumo hutimiza

Baada ya idhini, programu hueleza inachotaka kwa VpnService.Builder: anwani, njia, seva za DNS, MTU na, inapotumika, programu za kujumuisha au kuondoa. establish() huomba mfumo kuunda kiolesura cha handaki na kuelekeza trafiki inayolingana ndani yake. Mfumo unamiliki uamuzi wa uelekezaji; programu hupokea kielezi cha faili na kisha lazima ifanye kitu cha manufaa na pakiti.

What you observeWho actually owns it
VPN consent dialogThe system, triggered by prepare()
Routes, DNS and app listsThe app requests them; the system applies them
One active VPN per profileThe platform; a new service replaces the old one
Always-on and block-without-VPNDevice policy enforced by the platform

Jedwali hilo ni usanifu mahali pamoja. Programu hushiriki katika kushughulikia pakiti; haimiliki kiolesura, jedwali la uelekezaji au idadi ya huduma zinazoweza kuendeshwa.

Soketi ya handaki lazima itoroke handaki yake yenyewe

Muunganisho unaobeba trafiki iliyosimbwa wenyewe ni soketi. Ikiwa utaelekezwa tena kwenye kiolesura ambacho programu imetoka kuunda, handaki inategemea handaki na kukwama. VpnService.protect() hufunga soketi hiyo kwenye mtandao wa chini ili ikwepe kunasa, na ndiyo sababu mteja sahihi hulinda soketi yake ya nje kabla ya kupeana mkono la kwanza.

adb shell dumpsys connectivity | grep -i -A5 vpn
adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

Amri hizi zinaonyesha mtandao wa VPN uliosakinishwa, kifurushi cha kila wakati kuwasha na kama kufuli kumewekwa. Ni uchunguzi wa kusoma tu: ikiwa thamani hazioani na kile muundo unadai, dai linahusu kiolesura cha programu na si hali ya mfumo.

Uzuiaji unaweza kuwa wa jukwaa

Android huandika sera inayozuia miunganisho isiyotumia VPN. Utekelezaji huo ni mkataba wa jukwaa, si programu inayojaribu tena miunganisho katika mzunguko. Swichi iko katika mipangilio ya VPN ya kifaa kama Zuia miunganisho bila VPN, na kwenye kifaa kinachosimamiwa mmiliki anaweza kuiwasha kwa wasifu wote. Tofauti hii ni muhimu unapotathmini dai la masoko: mteja anaweza kuonyesha aikoni ya kufuli na kuunganisha tena kwa fujo wakati trafiki ya moja kwa moja bado inawezekana, au programu zilizofunikwa zinaweza kubaki nje ya mtandao kwa sababu mfumo unatekeleza kufuli.

Aikoni ya kufuli huchorwa na programu, kwa hiyo inathibitisha tu kwamba programu inaamini imeunganishwa. Ikiwa programu nyingine itapoteza ufikiaji wa mtandao huamuliwa na jukwaa, kwa hiyo ukaguzi wa manufaa ni kuona programu hiyo ikishindwa wakati handaki iko wazi.

Lebo ya „kila wakati imewashwa“ kutoka duka la programu pia haichukui nafasi ya mkataba huo. Kila wakati imewashwa na kufuli ni mipangilio ya kifaa, ambayo mara nyingi hutumiwa na mmiliki, na tabia yake kwa programu zilizoondolewa huamuliwa na jukwaa. Soma mpangilio, si beji.

Maswali manne kwa ukaguzi wa muundo

Kwanza, nani aliidhinisha: kifurushi kipi, wasifu upi, na ilikuwa mtumiaji au sera ya kifaa kinachosimamiwa? Pili, programu iliomba nini: njia zipi, familia zipi za anwani, programu zipi zilizojumuishwa au kuondolewa? Tatu, nini kinatokea handaki isipopatikana: mfumo unazuia au trafiki inarudi kwenye mtandao wa chini? Nne, programu hufanya nini na pakiti inazopokea?

Swali la nne ni lile ambalo mfumo wa idhini hauwezi kujibu. Idhini na kiolesura cha TUN huthibitisha kwamba programu inaweza kupokea trafiki, si kwamba inaisimba, inathibitisha mwenzake au inapona vizuri. Hizo ni sifa za utekelezaji, na hapo ndipo ukaguzi wa uaminifu hutumia muda wake.

Ombi la root lisilo la lazima haliwi halali kwa kuita matokeo kill switch, na mazungumzo ya idhini si ukaguzi wa usalama. Weka vibali vitatu tofauti na kila dai linakuwa la kuthibitika.

Makala zinazohusiana