Ìrònú tí kò tọ́ ni pé ohun elo VpnService yí yíyan ètò kan padà àti pé láti ìgbà náà fọ́nù náà wà ní ààbò. Ohun tí ó ń ṣẹlẹ̀ ní ti gidi kéré ju bẹ́ẹ̀ lọ: ohun elo náà béèrè ìfọwọ́sí, kọ́ ojú-ìwé kan, kà àti kọ àwọn pákẹ́tì nípasẹ̀ àpèjúwe fáìlì, ó sì dá ojú-ìwé náà padà nígbà tí ó bá dúró. Ọ̀nà àbẹ̀wò kan ṣoṣo bẹ́ẹ̀ lè wà láàyè ní àkókò kan, ètò sì lè gbà á lọ láìbéèrè. Ọ̀pọ̀ ìhùwàsí tí ó ń da àwọn ènìyàn láàmú tí wọ́n ń fi lé ìlànà lórí wá láti inú àwòkọ́ṣe ìní yẹn.

Ka gbogbo ìyípadà ìgbésí ayé sí apá kan ti ètò, kì í ṣe ọ̀ràn etí.

Àròsọ: ohun elo náà tan VPN ti fọ́nù

Ìṣàn náà bẹ̀rẹ̀ pẹ̀lú VpnService.prepare(), tí ó dá Intent padà tí olùlò gbọdọ̀ gbà, ó sì ń tẹ̀síwájú pẹ̀lú establish(), tí ó ṣì lè kùnà lẹ́yìn náà nítorí àwọn ìdí tí ohun elo náà kò darí. Ṣíṣe ọ̀nà àbẹ̀wò kejì máa ń pa ojú-ìwé àkọ́kọ́ kù, ó sì rọ́pò ìkìlọ̀ ètò. Kò sí ibi kankan nínú ìtẹ̀lé yẹn tí ohun elo náà ni yíyan fún gbogbo ẹ̀rọ; ó ni àpèjúwe tí a fún un àti àwọn pákẹ́tì tí ó ń bọ̀ lé e. Kódà ìkìlọ̀ pípẹ́ jẹ́ ti ètò, kì í ṣe ti ètò ohun elo náà.

Nítorí pé a ń fún ni ojú-ìwé náà, a kò gbà á pẹ̀lú ipá, nítorí náà alábàáṣepọ̀ mìíràn lè gba ibi náà ní àkókò kankan. Ohun elo náà mọ̀ ọ́ nípasẹ̀ ìpè padà, kì í ṣe nípasẹ̀ iye ìdápadà.

Dídúró ohun elo náà pẹ̀lú ipá ń hàn nínú pánẹ́ẹ̀lì ìkìlọ̀ fún ìdí kan náà: ètò ń ròyìn ohun tí ó fún, kì í ṣe ohun tí ohun elo náà yàn láti fi hàn.

Àròsọ: a ń fún ìfọwọ́sí lẹ́ẹ̀kan ṣoṣo

Nígbà tí ètò bá fi ọ̀nà àbẹ̀wò náà lé alábàáṣepọ̀ mìíràn lọ́wọ́, ó ń rán ìṣòwò ìfagilé lórí binder tí kíláàsì ìpìlẹ̀ ń dá padà láti onBind(). Ohun elo tí ó rọ́pò binder yẹn pẹ̀lú tirẹ̀ gbọdọ̀ fi ìṣòwò ìfagilé náà kọjá fúnra rẹ̀, bí bẹ́ẹ̀ kọ́ VpnService.onRevoke() kò ní ṣiṣẹ́ rárá, iṣẹ́ náà sì ń kọ sí àpèjúwe tí kò sí mọ́. Olùlò pẹ̀lú lè fagi lé àṣẹ náà, ètò sì lè dá iṣẹ́ náà dúró nígbà àtúnbí tàbí àtúnsopọ̀ tí ó wà ní ṣíṣí nígbà gbogbo.

Mímú èyí ṣiṣẹ́ jẹ́ iṣẹ́ gidi, kì í ṣe ìlà àkọsílẹ̀: dáwọ́ kíkà àpèjúwe náà dúró, pa á, nu àsíá tí ó sopọ̀ mọ́ kí o sì sọ fún olùlò ní ipò tí ó wà. Lẹ́yìn náà pinnu bóyá ohun elo náà gbọdọ̀ tún gbé e kalẹ̀, béèrè lẹ́ẹ̀kan sí i tàbí dúró, nítorí nínú ìṣètò tí ó wà ní ṣíṣí nígbà gbogbo ètò lè mú iṣẹ́ náà padà fúnra rẹ̀.

Ohun elo tí ó ka ìfagilé sí àfikún kì í ṣe ipò yóò ròyìn pé ó sopọ̀ nígbà tí a ń fi gbogbo pákẹ́tì tí ó kọ nù, ìyẹn sì ni ipò ìkùnà tí ó burú jùlọ fún irinṣẹ́ àṣírí.

Àròsọ: ojú-ìwé náà ń ṣe àyọ tíráfíkì fún ọ

Ohun tí ó ń dé ni IP tí kò tíì ṣe àtúnṣe. Mímú tàbí ṣíṣe àyọ túmọ̀ sí ṣíṣàyẹ̀wò àwọn orí-ọ̀rọ̀ IP, TCP, UDP àti IPv6, títọpinpin àwọn ìṣàn àti kíkọ àwọn ìdáhùn padà sínú àpèjúwe náà, èyí tí ó sọ ohun elo mímú di àkájọ àwọn nẹ́tíwọ́kì kékeré kì í ṣe ohun èlò ètò. protect() wà kí sọ́kẹ́tì gbígbé ti ohun elo náà fúnra rẹ̀ lè kọjá ọ̀nà àbẹ̀wò rẹ̀ dípò kí ó mú fúnra rẹ̀, ó sì ń dá iye boolean padà tí ó yẹ kí a ṣàyẹ̀wò lórí gbogbo sọ́kẹ́tì tí a dá lẹ́yìn tí ọ̀nà àbẹ̀wò náà bá dìde.

Àwọn àkọsílẹ̀ ohun elo tí a gbà àti tí a kò gbà nínú olùkọ́ ni ó pinnu tani tíráfíkì rẹ̀ ń wọ ojú-ìwé náà. Wọn kò fúnni ní ààyè sí ẹrù tí ó kọjá àwọn pákẹ́tì IP tí ojú-ìwé náà ń gbé, kò sì sí API tí ó ń fi ọ̀nà àbẹ̀wò alábàáṣepọ̀ mìíràn hàn tàbí ṣe àkọsílẹ̀ àwọn profáìlì VPN ti ètò. Àwọn agbára nẹ́tíwọ́kì lè sọ pé nẹ́tíwọ́kì kan jẹ́ gbígbé VPN, ṣùgbọ́n kì í ṣe tani ọ̀nà àbẹ̀wò náà jẹ́.

Ìdí nìyẹn tí àwọn ìbéèrè ipò nípa àwọn ohun elo mìíràn fi ń gba àwọn ìdáhùn tí ó tako ara wọn: a kò fi ìsọfúnni náà hàn fún ìlànà rẹ rárá.

Ohun tí ìgbésí ayé ń béèrè ní ti gidi

Tọpinpin àwọn ipò tí ìwọ ń darí: ti ṣetán, ti fi kalẹ̀, ti fagilé, ti dúró. Àtúnsopọ̀ gbọdọ̀ jẹ́ yíyọ kúrò, lẹ́yìn náà fífi kalẹ̀, pẹ̀lú olóhun kan ṣoṣo fún àpèjúwe náà àti sọ́kẹ́tì gbígbé, nítorí àwọn ẹ̀yà méjì tí ń díje láti fi kalẹ̀ yóò jà fún ibi òfo kan ṣoṣo. Àwọn ìbẹ̀rẹ̀ ẹ̀yìn ni a fi ààlà dé lórí Android òde òní, nítorí náà ìgbóhùn ìbẹ̀rẹ̀ kì í ṣe ìdánilójú; lo iṣẹ́ iwájú pẹ̀lú ìkìlọ̀ rẹ̀ níbi tí ìpele API bá gbà á.

Ṣe àkọsílẹ̀ ìyípadà náà kì í ṣe ipò ìparí nìkan, kí o sì tọ́jú ẹ̀rọ ipò náà kí ó kéré tó láti dán gbogbo ọ̀nà wò. Ipò tí ìwọ kò lè dé ni ìdánwò ni ipò tí ìwọ yóò bá pàdé ní pápá láìsí àkọsílẹ̀.

Dán ìgbésí ayé wò lórí ẹ̀rọ

Àwọn emulator lè ṣe àfihàn ìsopọ̀ ní èèkèé ṣùgbọ́n kì í ṣe ọ̀nà ìfọwọ́sí àti ìfagilé ní ọ̀nà tí ó gbéṣẹ́, nítorí náà ṣe àwọn wọ̀nyí lórí ẹ̀rọ gidi tí a ti fi kúlẹ́ẹ̀nì VPN kejì sórí láti jí ibi náà.

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

Bẹ̀rẹ̀ ọ̀nà àbẹ̀wò náà, jẹ́rìí ìkìlọ̀ àti ojú-ìwé náà, lẹ́yìn náà so kúlẹ́ẹ̀nì kejì mọ́ kí o sì wo bóyá ìpè padà ìfagilé ń ṣiṣẹ́ àti bóyá ipò náà ń nu. Dá ohun elo náà dúró pẹ̀lú ipá kí o sì yẹ̀wò bóyá ohun kan ṣì ń ròyìn àpèjúwe tí ó wà láàyè.

Tún ìtẹ̀lé náà ṣe lẹ́yìn àtúnbí tí ó wà ní ṣíṣí nígbà gbogbo, nítorí ọ̀nà yẹn yàtọ̀ sí ìsopọ̀ tí olùlò bẹ̀rẹ̀. Ohun tí ìwọ ń wá kì í ṣe àmì aláwọ̀ ewé bí kò ṣe ẹ̀rí pé ohun elo náà dáwọ́ lílo àpèjúwe tí kì í ṣe tirẹ̀ mọ́ dúró.

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