Kazi mbili tofauti sana huwekwa chini ya jina VPN ya programu, na moja tu kati yao inapatikana kwa programu ya kawaida kwenye mojawapo ya majukwaa mawili ya simu. Ya kwanza ni kuwasha wasifu ambao mtumiaji tayari ameuhifadhi; ya pili ni kujenga handaki ndani ya mchakato wako mwenyewe. Android inakupa ya pili kupitia VpnService na iOS inakupa ya pili kupitia haki ya Network Extension, wakati ya kwanza inabaki na mfumo, mmiliki wa kifaa au seva ya MDM. Kutambua ni ipi unayohitaji kwa kweli kawaida hufanya mradi uwe mdogo.

Kazi mbili zinazoshiriki jina

Kuwasha wasifu uliohifadhiwa kunamaanisha kumwambia handaki lililopo liinuke: mwenyeji, kitambulisho, itifaki, vyote vikiwa vimeundwa tayari mahali ambapo mtumiaji anaweza kuona. Kujenga handaki kunamaanisha kuwa msimbo wako unamiliki kiolesura, mzunguko wa pakiti na itifaki. Zinaonekana sawa katika orodha ya bidhaa na karibu hazishiriki utekelezaji wowote.

Hakuna jukwaa la simu linalofichua la kwanza kwa programu ya SDK. Muunganisho unaotokea bila mtumiaji kufanya chochote hauwezi kutofautishwa na programu hasidi, kwa hivyo mifumo yote miwili huweka lango la ridhaa mbele ya programu yoyote inayobeba trafiki.

Android: lango la ridhaa, na hakuna API ya wasifu

VpnService imekuwepo tangu Android 4.0 na inaruhusu programu kuunda kiolesura cha tun, kisha kusoma na kuandika pakiti. Huduma lazima itangazwe kwa BIND_VPN_SERVICE, na VpnService.prepare() huzalisha mazungumzo ya mfumo yanayomwomba mtumiaji kuiruhusu. Sampuli ya jukwaa, ToyVpn, ni tamko lililo wazi zaidi la umbo lililokusudiwa: msimbo wako unamiliki kiolesura na kila kitu kinachopita ndani yake.

Isichofanya ni kuongeza kiingilio kwenye skrini ya mipangilio ya VPN ya mfumo. Hakuna API ya umma kwa hilo, na programu ya Mipangilio huweka wasifu wake katika hifadhi ambayo programu ya kawaida haiwezi kufikia. Mwito kwa madarasa yaliyofichwa kutoka programu ya kawaida huzalisha wasifu ambao mfumo hautawahi kuorodhesha, ndiyo sababu msimbo ulioonekana kufanya kazi katika toleo moja huacha kufanya kazi kimya katika linalofuata.

Njia inayosimamiwa ni tofauti. Mmiliki wa kifaa au wasifu anaweza kuteua kifurushi cha VPN kinachowaka kila wakati kupitia API za sera ya kifaa, na chombo cha biashara kinaweza kutuma wasifu ambao mtumiaji hukubali baadaye. Hiyo ni mamlaka ya usimamizi wa kifaa, si ruhusa ambayo programu huomba wakati wa usakinishaji. Ikiwa mteja wako ni shirika, hii ni njia ya kupanga; ikiwa mteja wako ni mtu anayesakinisha kutoka dukani, haipatikani kabisa.

iOS: haki ndiyo mpaka

iOS hugawanya kazi hiyo hiyo kwa njia tofauti. Mteja wa VPN hutekeleza mtoa huduma wa handaki la pakiti au wakala wa programu ndani ya mfumo wa Network Extension, na haki inayolingana lazima itolewe kwa akaunti ya msanidi. Usanidi wa VPN wa kibinafsi kupitia NEVPNManager upo kwa kesi rahisi zaidi, na bado unaendeshwa ndani ya mfumo huo wa ruhusa. Apple huandika uso wote katika marejeleo ya Network Extension, ambayo inafaa kusoma kabla ya kubainisha wigo wa kazi.

Hakuna njia inayotumika kufungua skrini ya mipangilio ya VPN, kusoma usanidi uliohifadhiwa wa mtumiaji au kuanzisha mmoja wao. Mteja anachoweza kufanya ni kutuma wasifu wa usanidi ili mtumiaji ausakinishe, kisha kutumia handaki linalotokana kupitia simu za kawaida za mtandao. Uhandakishaji wa kila programu hutolewa na seva ya MDM kupitia kanuni ya mahitaji, si kuchaguliwa na programu wakati wa utekelezaji.

Mteja wa VPN kutoka kwa muuzaji mkubwa si uthibitisho kwamba akaunti yako inaweza kutuma kitu kimoja. Haki hizo huombwa kwa kila akaunti ya msanidi na hupitiwa, kwa hivyo hatari ya ratiba iko kwa Apple, si katika mpango wako wa sprint.

Desktop hufikia mbali zaidi, lakini umiliki haubadiliki

Windows ni kesi inayoruhusu. Add-VpnConnection huunda kiingilio cha kitabu cha simu kutoka kikao kilichoinuliwa cha PowerShell, na rasdial hukiunganisha au kukitenganisha kutoka kwa skripti. Programu inaweza pia kuendesha mteja wa muuzaji kupitia mstari wake wa amri ulioandikwa. Kuunda wasifu bado ni kitendo cha kiutawala, kwa sababu kiingilio hicho huishi katika hifadhi ya mashine nzima.

macOS hujiendesha vivyo hivyo na zana zingine. scutil --nc start na stop hufanya kazi kwenye huduma zilizopo tayari, wakati kuunda moja ni kazi ya usimamizi wa mfumo. Umiliki wa mchakato kwenye kompyuta ya mkononi hakukufanyi kuwa mmiliki wa usanidi.

Nini cha kujenga badala yake

Ikiwa hitaji la kweli ni kwamba programu yako ifikie API ya ndani, handaki ambalo mtumiaji tayari analiendesha linatosha. Tuma maombi ya kawaida ya HTTPS, acha mfumo uchague njia, na acha kujaribu kudhibiti handaki. Ikiwa hitaji ni kwamba trafiki ya programu yako tu itumie handaki, omba VPN ya kila programu kupitia njia ya usimamizi, au maliza TLS ndani ya programu dhidi ya huduma inayofikiwa bila hiyo.

API zilizofichwa si njia ya mkato inayofaa kuchukuliwa. Hubadilika kati ya matoleo, hushindwa katika ukaguzi wa programu, na hitilafu zinazozalisha huonekana kwa anayerithi msimbo kama hitilafu za kawaida za mtandao. Ulinganisho si Android dhidi ya iOS; ni umiliki wa handaki dhidi ya kuomba jukwaa lielekeze trafiki, na la kwanza pekee ndilo lako la kujenga.

Makala zinazohusiana