VPN Android láìsí root: ẹni tí ó ní ìfọwọ́sí, àwọn ọ̀nà àti dídènà
Ìfọwọ́sí, ìfarahàn TUN àti ìlànà dídènà ẹ̀rọ jẹ́ ìyọ̀nda mẹ́ta ọ̀tọ̀ọ̀tọ̀. Ṣàwárí èyí tí ẹ̀ka kọ̀ọ̀kan ní kí o tó ṣàyẹ̀wò ìwé-ìṣiṣẹ́ VPN Android.
Root kì í ṣe ohun tí ó jẹ́ kí ìwé-ìṣiṣẹ́ VPN Android lè gbé ìrìnàjò, dènà àsọdùn tàbí wà lẹ́yìn àtúnbẹ̀rẹ̀. Àwọn ènìyàn máa ń sọ gbogbo rẹ̀ pọ̀ sí „ìwé-ìṣiṣẹ́ náà ní ìyọ̀nda VPN“, èyí tí ó fi àwọn ọ̀nà mẹ́ta ọ̀tọ̀ọ̀tọ̀ pamọ́: ìfọwọ́sí tí olùlò fún, ìfarahàn àpò tí ẹ̀rọ ń dá, àti ìlànà dídènà ti pèpéle tí kì í ṣe ti ìwé-ìṣiṣẹ́ láti ṣàlàyé. Ṣíṣàyẹ̀wò àpẹẹrẹ VPN Android túmọ̀ sí bíbéèrè irú wo nínú àwọn mẹ́ta náà ni ìdánilójú kan gbọ́lẹ̀ lé lórí ní tòótọ́, nítorí olúwa àti ọ̀nà ìkùnà kọ̀ọ̀kan yàtọ̀.
Ìfọwọ́sí ń wá nípasẹ̀ ìgbòkègbodò ẹ̀rọ
VpnService.prepare() kò fi ohunkóhun fúnni. Ó ń dá intent padà sí ìgbòkègbodò ìfọwọ́sí ẹ̀rọ nígbà tí ìfọwọ́sí kò sí, ìwé-ìṣiṣẹ́ náà sì ṣí ìjíròrò yẹn kí olùlò lè fọwọ́ sí iṣẹ́ náà. Bíbẹ̀rẹ̀ ìlànà ìwé-ìṣiṣẹ́ fúnra rẹ̀, fífi ìyọ̀nda kún manifest, tàbí fífi ojú-ìwé „mú VPN ṣiṣẹ́“ tí a ṣe àkànṣe hàn kò dá ìyọ̀nda náà.
Ìyọ̀nda náà níàlàá pẹ̀lú. Ó jẹ́ ti àpò kan nínú profáìlì olùlò, nítorí náà ẹ̀dà ti ara ẹni àti ẹ̀dà iṣẹ́ jẹ́ ìpinnu ọ̀tọ̀ọ̀tọ̀, olówó ẹ̀rọ sì lè múra profáìlì tí a ń darí sílẹ̀ yàtọ̀ sí ti ara ẹni. Bí ìjíròrò kò bá farahàn rí, tí prepare() sì dá null padà, ìfọwọ́sí ti wà tẹ́lẹ̀ fún àpò yẹn nínú profáìlì yẹn; ìyẹn kì í ṣe ẹ̀rí pé ìwé-ìṣiṣẹ́ náà gbẹ́kẹ̀lé, ó kàn fi hàn pé ìyọ̀nda wà.
Ìfarahàn jẹ́ ìbéèrè tí ẹ̀rọ ń mú ṣẹ
Lẹ́yìn ìfọwọ́sí, ìwé-ìṣiṣẹ́ náà ṣàlàyé ohun tí ó fẹ́ pẹ̀lú VpnService.Builder: àwọn àdírẹ́sì, ọ̀nà, olùpèsè DNS, MTU àti, níbi tí a ti ń ṣe àtìlẹ́yìn, àwọn ìwé-ìṣiṣẹ́ tí a óò kó mọ́ tàbí yọ kúrò. establish() béèrè lọ́wọ́ ẹ̀rọ láti dá ìfarahàn ihò àbáwọlé àti láti darí ìrìnàjò tí ó bá mu lọ sínú rẹ̀. Ẹ̀rọ ni ó ní ìpinnu ìdarí; ìwé-ìṣiṣẹ́ náà gba àpèjúwe fáìlì, lẹ́yìn náà ó gbọ́dọ̀ ṣe ohun tí ó wúlò pẹ̀lú àwọn àpò.
| What you observe | Who actually owns it |
|---|---|
| VPN consent dialog | The system, triggered by prepare() |
| Routes, DNS and app lists | The app requests them; the system applies them |
| One active VPN per profile | The platform; a new service replaces the old one |
| Always-on and block-without-VPN | Device policy enforced by the platform |
Tábìlì yẹn ni àkópọ̀ ìkọ́ ní ibi kan. Ìwé-ìṣiṣẹ́ náà ń kópa nínú ìtọ́jú àpò; kò ní ìfarahàn, tábìlì ìdarí tàbí iye iṣẹ́ tí ó lè ṣiṣẹ́.
Sókẹ́ẹ̀tì ihò àbáwọlé gbọ́dọ̀ bọ́ kúrò nínú ihò rẹ̀ fúnra rẹ̀
Ìsopọ̀ tí ó ń gbé ìrìnàjò tí a ti fi àmì pamọ́ fúnra rẹ̀ jẹ́ sókẹ́ẹ̀tì. Bí a bá darí rẹ̀ padà sínú ìfarahàn tí ìwé-ìṣiṣẹ́ náà ṣẹ̀ṣẹ̀ dá, ihò náà yóò gbára lé ihò, yóò sì dúró. VpnService.protect() so sókẹ́ẹ̀tì yẹn mọ́ nẹ́tíwọ́kì ìsàlẹ̀ kí ó lè yẹ̀ ẹ́ kọjá, ìdí niyẹn tí alábàáṣe iṣẹ́ tí ó tọ́ fi ń dáàbò bo sókẹ́ẹ̀tì òde rẹ̀ ṣáájú ìfọwọ́-sọ̀wọ́ àkọ́kọ́.
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
Àwọn àṣẹ wọ̀nyí fi nẹ́tíwọ́kì VPN tí a ti fi sórí ẹ̀rọ, àpò tí ó wà ní títan nígbà gbogbo àti bóyá a ti ṣètò títìpa hàn. Ìwọ̀n-àkíyèsí ìkàwé ni wọ́n: bí àwọn iye kò bá bá ohun tí àpẹẹrẹ náà sọ mu, ìdánilójú náà jẹ́ nípa ìfarahàn ìwé-ìṣiṣẹ́ náà kì í ṣe ipò ẹ̀rọ.
Dídènà lè jẹ́ ti pèpéle
Android ṣàkọsílẹ̀ ìlànà tí ó ń dènà àwọn ìsopọ̀ tí kò lò VPN. Ìmúṣẹ yẹn jẹ́ àdéhùn pèpéle, kì í ṣe ìwé-ìṣiṣẹ́ tí ń tún ìsopọ̀ gbìyànjú ní àyíká. Yíyí ohun-ìdáná wà nínú ètò VPN ti ẹ̀rọ náà gẹ́gẹ́ bí „Dènà àwọn ìsopọ̀ láìsí VPN“, àti lórí ẹ̀rọ tí a ń darí, olówó lè tan ún fún gbogbo profáìlì. Ìyàtọ̀ yìí ṣe pàtàkì nígbà tí o bá ń ṣàyẹ̀wò ìdánilójú títà: alábàáṣe iṣẹ́ lè fi àmì kọkọrọ hàn kí ó sì tún so mọ́ra pẹ̀lú agbára nígbà tí ìrìnàjò tààrà ṣì lè ṣeé ṣe, tàbí àwọn ìwé-ìṣiṣẹ́ tí a bo lè wà ní àìsopọ̀ nítorí pé ẹ̀rọ ń mú títìpa ṣẹ.
Ìwé-ìṣiṣẹ́ náà ni ó ya àmì kọkọrọ, nítorí náà ó kàn fìdí rẹ̀ múlẹ̀ pé ìwé-ìṣiṣẹ́ náà gbà pé ó so mọ́ra. Bóyá ìwé-ìṣiṣẹ́ mìíràn yóò pàdánù àǹfààní nẹ́tíwọ́kì rẹ̀ ni pèpéle ń pinnu, nítorí náà àyẹ̀wò tí ó wúlò ni láti wo ìwé-ìṣiṣẹ́ yẹn tí ó ń kùnà nígbà tí ihò náà wà ní títan.
Àmì „títan nígbà gbogbo“ láti ṣọ́ọ̀bù ìwé-ìṣiṣẹ́ kò rọ́pò àdéhùn yẹn pẹ̀lú. Títan nígbà gbogbo àti títìpa jẹ́ ètò ẹ̀rọ, tí olówó máa ń lò ní ọ̀pọ̀ ìgbà, ìhùwàsí wọn fún àwọn ìwé-ìṣiṣẹ́ tí a yọ kúrò ni pèpéle ń ṣàlàyé. Ka ètò náà, kì í ṣe àmì náà.
Àwọn ìbéèrè mẹ́rin fún àyẹ̀wò àpẹẹrẹ
Ìkíní, ta ni ó fọwọ́ sí: àpò wo, profáìlì wo, àti ṣé olùlò ni tàbí ìlànà ẹ̀rọ tí a ń darí? Ìkejì, kí ni ìwé-ìṣiṣẹ́ náà béèrè: àwọn ọ̀nà wo, àwọn ìdílé àdírẹ́sì wo, àwọn ìwé-ìṣiṣẹ́ wo tí a kó mọ́ tàbí yọ kúrò? Ìkẹta, kí ni ó ṣẹlẹ̀ nígbà tí ihò náà kò sí: ẹ̀rọ ń dènà tàbí ìrìnàjò ń padà sínú nẹ́tíwọ́kì ìsàlẹ̀? Ìkẹrin, kí ni ìwé-ìṣiṣẹ́ náà ń ṣe pẹ̀lú àwọn àpò tí ó gbà?
Ìbéèrè ìkẹrin ni èyí tí àpẹẹrẹ ìyọ̀nda kò lè dá lóhùn. Ìfọwọ́sí àti ìfarahàn TUN fìdí rẹ̀ múlẹ̀ pé ìwé-ìṣiṣẹ́ náà lè gba ìrìnàjò, kì í ṣe pé ó ń fi àmì pamọ́, ń ṣèdájọ́ ẹlẹ́gbẹ́ tàbí ń bọ́ láṣeyọ́rí. Àwọn wọ̀nyí jẹ́ ànímọ́ ìmúṣẹ, ibẹ̀ sì ni àyẹ̀wò òtítọ́ ń lo àkókò rẹ̀.
Ìbéèrè root tí kò pọn dandan kì í di ẹtọ́ nípasẹ̀ pípè àbájáde ní kill switch, ìjíròrò ìfọwọ́sí kì í sì ṣe àyẹ̀wò ààbò. Pa ìyọ̀nda mẹ́ta náà mọ́ ọ̀tọ̀ọ̀tọ̀, gbogbo ìdánilójú yóò di èyí tí a lè ṣàyẹ̀wò.