O tẹ orí ìlà VPN nínú Àwọn Ètò, o rí profáìlì tí ẹlòmíràn fi sórí ẹ̀rọ, o sì bẹ̀rẹ̀ sí wá ìpè tó ń ṣàfikún ọ̀kan. Irú ìpè bẹ́ẹ̀ kò sí. App lè ṣí ọ̀nà àbáwọlé tirẹ̀ nípasẹ̀ VpnService, ṣùgbọ́n àwọn àkọsílẹ̀ inú àkójọ yẹn jẹ́ ti pẹtẹ́lì àti ti ẹ̀rọ ìsokọ́ tó dá wọn. Mímọ ibi tí ààlà wà gan-an ń gba ọ̀sẹ̀ kan lọ́wọ́ lílẹ̀pa àwọn kíláàsì tó pamọ́.

Bẹ̀rẹ̀ pẹ̀lú ohun tí ojú-ìwé Àwọn Ètò ń fi hàn

Àkójọ VPN jẹ́ ìforúkọsílẹ̀ àwọn profáìlì tí ẹ̀rọ tàbí ẹ̀rọ ìsokọ́ olùpèsè fi sórí ẹ̀rọ: PPTP, L2TP/IPsec, IKEv2, àti àwọn ìlà tí app OEM tàbí MDM ti ta. Ìlà kọ̀ọ̀kan gbé àdírẹ́sì sáàbà, àwọn ẹ̀rí ìdánimọ̀ àti ìmúṣẹ ìlànà tó ń gbé lóde ètò rẹ. Nígbà tí olùlò bá tẹ Sopọ̀ níbẹ̀, ẹ̀rọ ìsokọ́ pẹtẹ́lì ni ó gbé ọ̀nà àbáwọlé sókè, kì í ṣe kóòdù rẹ. Ìdí nìyẹn tí ìlà náà fi wà lẹ́yìn àtúnbẹ̀rẹ̀ àti ìdí tí yíyọ app rẹ kò fi yọ ọ́ kúrò rárá.

Ní ẹ̀gbẹ́ olùlò, àkójọ náà dàbí ojú API, ibi tí àfikún VPN yẹ kí ó wà ní àìjìnnà ìfọkàn kan. Kì í ṣe bẹ́ẹ̀. Àwọn ibi àbáwọlé gbogbogbò kan ṣoṣo tó ń fọwọ́ kàn án ni àwọn ìfọkàn ìrìnàjò, àti gbogbo ohun tó ń kọ sínú rẹ̀ jẹ́ ti pẹtẹ́lì tàbí ti ẹ̀ka tó ní àṣẹ.

Àbájáde gbígbéṣẹ́: tí àpilẹ̀kọ ìtìlẹ́yìn bá sọ fún àwọn olùlò pé kí wọ́n ṣàfikún profáìlì nínú Àwọn Ètò, app rẹ kò ṣe apá kan nínú ìṣàn yẹn rárá.

Ohun tí VpnService ń fún ọ ní ti gidi

VpnService àti VpnService.Builder ṣàpèjúwe ọ̀nà àbáwọlé kan tí app rẹ ni. O ń ṣàfikún àwọn àdírẹ́sì, ọ̀nà, sáàbà DNS àti MTU, o ń dín ìrìnnà kù pẹ̀lú addAllowedApplication() tàbí addDisallowedApplication(), lẹ́yìn náà establish() ń dá ParcelFileDescriptor padà fún ìsopọ̀ TUN. Láti àkókò yẹn app ń kà àwọn pákẹ́ẹ̀tì IP, ó sì ń kọ ìdáhùn, ìyẹn ni pé ìlànà náà jẹ́ tirẹ láti mú ṣẹ tàbí fi kún un: OpenVPN, WireGuard, ọ̀nà ìgbéjáde àkànṣe.

Kò sí ohunkóhun nínú ìtẹ̀lẹ̀ yẹn tó ń sọ PPTP, L2TP/IPsec tàbí IKEv2. Builder kò ní fẹ́là tó sọ pé lo ẹ̀rọ ìsokọ́ L2TP ti ẹ̀rọ, kò sì sí ìpèpadà tó jẹ́ kí o darí profáìlì tí pẹtẹ́lì ti ní. Èyí ni ààlà gidi, àti pé ààlà àṣà ni, kì í ṣe àlàfo àwọn àṣẹ.

Nítorí náà app lè jẹ́ ẹ̀rọ ìsokọ́ VPN ní Android gan-an. Ó kàn kò lè jẹ́ olùṣàkóso fún àwọn ẹ̀rọ ìsokọ́ tó wá pẹ̀lú fọ́nù.

Ìjíròrò ìfọwọ́sí kì í ṣe ọ̀ṣọ́

Nítorí ọ̀nà àbáwọlé rẹ lè gba ìrìnnà àwọn app mìíràn, ẹ̀rọ ń fipá mu olùlò láti fọwọ́ sí i ní gbangba. prepare() ń dá Intent padà tí o gbọ́dọ̀ ṣe ìfilọ́lẹ̀, ìfọwọ́sí náà so mọ́ àpò rẹ, àti nígbà tí ọ̀nà àbáwọlé wà lórí ọ̀nà, ọ̀pá ipò ń fi àmì tó dúró hàn. VPN kejì tó gòkè wá yóò pa ti àkọ́kọ́, nítorí Android ń ṣiṣẹ́ VPN kan tó ń gbé ìgbésẹ̀ ní àkókò kan.

Òfin kan-ṣiṣẹ́ yẹn ń mú àwọn ènìyàn kọsẹ̀ nínú ìdánwò. O gbé ọ̀nà àbáwọlé rẹ sókè nígbà tí ẹ̀rọ ìsokọ́ iléeṣẹ́ kan so mọ́, o sì pinnu pé kóòdù rẹ ti bàjẹ́, nígbà tí pẹtẹ́lì kàn yí padà kúrò lọ́dọ̀ ẹ̀rọ ìsokọ́ kejì. A lè fagilé àwọn ìfọwọ́sí lẹ́yìn náà, prepare() sì lè dá null padà lórí àwọn ẹ̀rọ tí kò ní ìgbésẹ̀ ìfọwọ́sí, nítorí náà establish() ṣì gbọ́dọ̀ kojú ìkùnà.

API tó pamọ́ àti àwọn ìfọkàn ètò

Àwọn ìdáhùn àtijọ́ ń tọ́ka sí àwọn kíláàsì com.android.internal àti àwọn ìsopọ̀ AIDL tí ẹ̀rọ ìsokọ́ inú ń lò. Wọn kò sí nínú SDK, wọ́n ń yí padà láàárín àwọn ìtújáde láìsí ìkìlọ̀, àwọn ilé ìtajà app sì ka irú àbáwọlé yẹn sí ewu. Yíyọ root kúrò nínú ẹ̀rọ kò sì mú wọn dúró, nítorí root àti àbáwọlé API tó pamọ́ jẹ́ ìṣòro tí kò ní ìbáṣepọ̀.

Olùrànlọ́wọ́ ìrìnàjò tí a ṣe àtìlẹ́yìn fún ni Settings.ACTION_VPN_SETTINGS, tí iye rẹ̀ jẹ́ android.net.vpn.SETTINGS. Yanjú rẹ̀ kí o tó ṣe ìfilọ́lẹ̀, nítorí àwọn ìkọ́lé OEM kan kò pèsè ìgbésẹ̀ yẹn, kí o sì lọ sí àwọn ìgbésẹ̀ kíkọ nígbà tí yíyanjú bá kùnà. Ó ń gbé olùlò lọ sí ojú-ìwé, kò sì ṣètò ohunkóhun.

Àwọn ọ̀nà ẹni-ẹ̀rọ àti MDM ni ìyàtọ̀ tí àwọn ènìyàn máa ń ní lọ́kàn. DevicePolicyManager lè yan àpò VPN tó ń tan nígbà gbogbo, àwọn ìṣètò tí a ń ṣàkóso sì lè kó àwọn ètò ṣáájú fún ẹ̀rọ ìsokọ́ tó ṣe àtìlẹ́yìn fún wọn, ṣùgbọ́n ìyẹn kì í ṣe SDK gbangba tó ń kọ profáìlì PPTP.

Wo ìpinnu náà láti ẹ̀gbẹ́ olùlò

Tí ọjà rẹ bá ní láti gbé ìrìnnà, ṣètò VpnService pẹ̀lú àkójọ ìlànà gidi, kí o sì fi àkókò pamọ́ fún ìṣàn ìfọwọ́sí àti òfin VPN kan. Tí èròǹgbà bá ni láti sopọ̀ mọ́ profáìlì iléeṣẹ́ tó wà tẹ́lẹ̀, iṣẹ́ rẹ ni ìtọ́nisọ́nà: ìsopọ̀ jíjìn sí ojú-ìwé ètò, kọ àwọn ààyè sílẹ̀, kí o sì jẹ́ kí ẹ̀rọ ìsokọ́ pẹtẹ́lì ṣe ọ̀nà àbáwọlé. Tí app kàn bá ní láti dé ibi ìparí àdáni kan, kò ní lòdì sí ọ̀nà àbáwọlé tirẹ̀ rárá.

Kọ ìpinnu yẹn sílẹ̀ kí o tó kọ kóòdù, nítorí àwọn ọ̀nà mẹ́ta kò ní ó fẹ́rẹ̀ẹ́ jẹ́ ohunkóhun tó jọra lẹ́yìn sprint àkọ́kọ́.

Ìyẹ̀wò ìkẹyìn kí o tó bẹ̀rẹ̀: ṣé ìbéèrè náà sọ pé app wa ló ń sopọ̀, tàbí pé ẹ̀rọ ló ń sopọ̀? Ti àkọ́kọ́ ni VpnService, ti kejì ni profáìlì tí o kò lè dá. Mímú gbólóhùn yẹn tọ́ ni ó pọ̀ ju àtúnṣe èyíkéyìí lọ.

Àwọn àpilẹ̀kọ tó jọra