Android always-on VPN: bí wọ́n ṣe ń yanjú orúkọ ibi-ipari kọ́kọ́
Android ń dí ìrìnàjò kí ọ̀nà-ìmọ́lẹ̀ tó wà, ṣùgbọ́n alátìlẹ́yìn ṣì ní láti yanjú ibi-ipari tirẹ̀. Èyí ni ìtòlẹ́sẹẹsẹ, àti ibi tí ó ti dí.
Fọ́nù tún bẹ̀rẹ̀, always-on wà ní ṣíṣi, «dín àwọn ìsopọ̀ tí kò ní VPN» wà ní ṣíṣi, ṣùgbọ́n ọ̀nà-ìmọ́lẹ̀ kò gbé sókè rárá. Kò sí ohun tí wọ́n ṣe àìtọ́: ìdín náà ń ṣe iṣẹ́ rẹ̀, àti ìgbìyànjú alátìlẹ́yìn fúnra rẹ̀ láti dé ibi-ipari rẹ̀ wà lábẹ́ rẹ̀ pẹ̀lú. Orúkọ ibi-ipari gbọ́dọ̀ yanjú kí ọ̀nà-ìmọ́lẹ̀ tó wà, nípasẹ̀ alátìlẹ́yìn tí a gbà láàyè láti bá nẹ́tíwọ́kì sọ̀rọ̀ nígbà tí gbogbo àwọn ohun-èlò mìíràn kò ní ààyè. Yíyé èwo ẹ̀ka ni ó ń ṣe èyí, àti ní ìtòlẹ́sẹẹsẹ wo, ni ó sọ àdììtú yìí di ìbéèrè ìṣètò.
Ohun tí olùkọ́ VPN ń béèrè níti gidi
Ohun-èlò VPN Android kò fi àdírẹ́sì sáfà fún pẹpẹ. Ó kọ́ ojú-ipadà àdúgbò: àwọn àdírẹ́sì àti ọ̀nà fún ọ̀nà-ìmọ́lẹ̀, àwọn olùyanjú tí àwọn ohun-èlò gbọ́dọ̀ lò nínú rẹ̀, lẹ́yìn náà establish() dá àpèjúwe fáìlì padà tí ohun-èlò náà ń kà tí ó sì ń kọ gẹ́gẹ́ bí àkójọ IP àìdánimọ́. Ibi-ipari tí ó jìnnà kò farahàn nínú olùkọ́ yẹn rárá.
Èyí ni òtítọ́ ìgbékalẹ̀ pàtàkì. Pẹpẹ dá ojú-ipadà tun, ó sì ń fi ìlànà ṣiṣẹ́ lé e lórí; ohun-èlò náà ń ṣe ìgbékalẹ̀ ìrìnàjò nínú ààyè olùlò, ìyẹn túmọ̀ sí pé ohun-èlò náà fúnra rẹ̀ yanjú orúkọ ibi-ipari rẹ̀, ó sì ṣí ìsopọ̀ tí a fi ààmì ṣe. Nítorí náà ibi-ipari ní ìrísí orúkọ ẹ̀rọ̀ ṣeéṣe — kì í ṣe nítorí pé pẹpẹ ń gbà àwọn orúkọ, bí kò ṣe nítorí pé pẹpẹ kò rí ibi-ipari rárá.
Pápá kan nínú olùkọ́ ń gba àwọn àdírẹ́sì: àwọn sáfà DNS. Wọ́n gbọ́dọ̀ jẹ́ àdírẹ́sì olùyanjú oníka, ní ọ̀pọ̀ ìgbà àwọn tí olùṣiṣẹ́ fẹ́ béèrè nípasẹ̀ ọ̀nà-ìmọ́lẹ̀. Pápá yẹn ń ṣàpèjúwe ibi tí àwọn ohun-èlò ń rán àwọn ìbéèrè lọ lẹ́yìn tí ọ̀nà-ìmọ́lẹ̀ gbé sókè. Kò sọ ohun kankan nípa bí alátìlẹ́yìn ṣe ń rí ibi-ipari, àti pé a ka àwọn méjèèjì bí ìṣètò kan náà ni ibi tí ìdàrúdàpọ̀ ti bẹ̀rẹ̀.
Ìbéèrè DNS méjì, kì í ṣe ọ̀kan
Ìbéèrè kìíní ni: ibi tí àwọn ohun-èlò ń rán àwọn ìbéèrè lọ nígbà tí ọ̀nà-ìmọ́lẹ̀ bá gbé sókè? Ìdáhùn ni àdírẹ́sì olùyanjú nínú ọ̀nà-ìmọ́lẹ̀, tí wọ́n lè dé nípasẹ̀ ojú-ipadà tun, tí ó sì jẹ́ oníka nípa ìgbékalẹ̀.
Ìbéèrè kejì ni: báwo ni alátìlẹ́yìn ṣe rí ibi-ipari tirẹ̀ kí ọ̀nà-ìmọ́lẹ̀ yẹn tó wà? Ìwádìí yẹn ń ṣẹlẹ̀ níta ọ̀nà-ìmọ́lẹ̀, lórí nẹ́tíwọ́kì ìsàlẹ̀, nínú ìlànà alátìlẹ́yìn. Ó lè lo orúkọ, ó sì gbọ́dọ̀ lo olùyanjú tí ẹ̀rọ̀ lè dé láìsí VPN.
| Stage | Who resolves | Path | Failure looks like |
|---|---|---|---|
| Endpoint lookup | The VPN app | Underlying network, protected socket | Never connects; no tunnel interface traffic |
| Peer authentication | Client and server | Tunnel transport | Connects then drops; certificate or key error |
| Private name lookup | Apps via the tunnel | Resolver inside the tun | Tunnel up, internal sites do not resolve |
Ìpele mẹ́ta, àmì mẹ́ta tí ó yàtọ̀. Ìfiránṣẹ́ àṣìṣe kan tí ó sọ «kò lè sopọ̀» ń dà wọ́n pọ̀, ìyẹn sì ni ìdí tí àwọn ènìyàn fi bẹ̀rẹ̀ sí ṣàtúnṣe pápá sáfà DNS láti tún ìṣòro kan ṣe tí ó ṣẹlẹ̀ kí wọ́n tó ka pápá yẹn pàápàá.
Ìdí tí bootstrap lè dí
Always-on pẹ̀lú ìdín tí ó wà ní ṣíṣi túmọ̀ sí pé a ń sọ ìrìnàjò tí kò wà nínú VPN nù, pẹ̀lú ìrìnàjò ohun-èlò tí ó ní VPN náà. Ọ̀nà jáde wà ní kedere: ohun-èlò ń pe protect() lórí sọ́kẹ́ẹ̀tì, èyí ń so ó mọ́ nẹ́tíwọ́kì ìsàlẹ̀ kí ó lè gbá ọ̀nà-ìmọ́lẹ̀ kọjá kí a sì gbà á láàyè láti jáde. Gbogbo alátìlẹ́yìn VPN gbọ́dọ̀ ṣe èyí fún ìrìnàjò tirẹ̀, bí bẹ́ẹ̀ kọ́ kò ní dé sáfà rárá.
Wò ó báyìí: ìṣètò kan níbi tí olùyanjú kanṣoṣo tí ó mọ orúkọ ibi-ipari wà fúnra rẹ̀ nínú ọ̀nà-ìmọ́lẹ̀. Alátìlẹ́yìn nílò ọ̀nà-ìmọ́lẹ̀ láti yanjú orúkọ, àti orúkọ láti kọ́ ọ̀nà-ìmọ́lẹ̀. Ìyẹn jẹ́ ìgbẹ́kẹ̀le yíyípo gidi, kò sì sí ìṣètò alátìlẹ́yìn tí ó yanjú rẹ̀. Àṣìṣe àpẹrẹ ni, kì í ṣe àṣìṣe ẹ̀rọ.
Àkókò ń fi ìgbẹ́kẹ̀le kan náà hàn ní àwọn ìrísí tí ó rọrùn. Nígbà ìbẹ̀rẹ̀ kí ìṣílẹ̀kùn àkọ́kọ́ tó ṣẹlẹ̀, ẹ̀rọ̀ lè má tíì ní nẹ́tíwọ́kì tí ó ṣeé lò; ní captive portal, nẹ́tíwọ́kì wà ṣùgbọ́n ó ń dín ohun gbogbo mọ́ àyè àti portal; nígbà ìyípadà láti Wi-Fi sí nẹ́tíwọ́kì alágbèéká, nẹ́tíwọ́kì ìsàlẹ̀ sọ́kẹ́ẹ̀tì tí a dáàbò bò yí padà, alátìlẹ́yìn sì gbọ́dọ̀ kíyè sí i kí ó sì tún yanjú. Ọ̀kọ̀ọ̀kan wọ̀nyí jẹ́ ìṣẹ̀lẹ̀ bootstrap, ọ̀kọ̀ọ̀kan sì yẹ láti dán wò ní àmọ̀ọ́mọ̀ dípò kí a ṣàwárí ní agogo 3 òru.
Ìdí tí fífi ìdáhùn dúró kì í ṣe ojútùú
Ọ̀nà àbáyọ tí ó ń fani mọ́ra ni yanjú orúkọ lẹ́ẹ̀kan kí a sì lẹ àdírẹ́sì tí ó jáde mọ́ pápá oníka, tàbí kí a kọ ọ́ mọ́ àmúdúró àkànṣe. Ó dàbí ẹni pé ó ń ṣiṣẹ́, ó sì sọ orúkọ di àwòrán. Nígbà tí olùṣiṣẹ́ bá gbé ibi-ipari, gẹ́gẹ́ bí ìṣípòpadà, ìyípadà anycast, àdírẹ́sì àgbègbè tuntun, alátìlẹ́yìn ń tẹ̀síwájú láti pe èyí àtijọ́, kò sì sí ohun tí ó ṣàlàyé ìdí rẹ̀ nínú UI.
Àwọn àkọsílẹ̀ DNS ní àkókò ìgbé-ayé pẹ́kúpẹ́rẹ́ kí àwọn ìdáhùn lè yí padà; ìṣàmúlò ìrántí ni a ń túmọ̀ ní ìbámu pẹ̀lú àkókò yẹn, kì í ṣe títí láé. Fífi ìdáhùn dúró ń ju ẹ̀rọ tí ó mú orúkọ dára ju àdírẹ́sì lọ nù, nígbà tí ó ń pa ìnáwó iṣẹ́ ṣíṣe mọ́.
Fífi dúró sábà máa ń bá ìwà búburú kejì lọ: fífi ìwádìí ìdánimọ̀ rọrùn nítorí pé ìsopọ̀ ń kùnà ní ọ̀nà mìíràn báyìí. Ìjẹ́rìí ìdánimọ̀ sáfà kì í ṣe apá kan ìṣòro bootstrap, fífi í di aláìlera sì ń pààrọ̀ ìyọnu DNS fún ewu gbígbọ́nà.
Àwọn àpẹrẹ tí ó gbógun ti àtúnbẹ̀rẹ̀
Ìṣètò tí ó dúró pẹ́ kò fani mọ́ra. Lo alátìlẹ́yìn tí ó ń ṣe àwọn sọ́kẹ́ẹ̀tì ààbò dáadáa tí ó sì ń yanjú ibi-ipari rẹ̀ lórí nẹ́tíwọ́kì ìsàlẹ̀, kí o sì fún un ní orúkọ ibi-ipari tí a ń yanjú ní gbangba, tàbí nípasẹ̀ olùyanjú tí wọ́n lè dé kí ọ̀nà-ìmọ́lẹ̀ tó wà. Jẹ́ kí ìdín wà ní ṣíṣi; pípa á tán pátápátá kí DNS lè ṣiṣẹ́ ń yọ ànímọ́ tí ìṣètò náà wà fún kúrò.
Níbi tí ibi-ipari gbọ́dọ̀ wà ní ìkọ̀kọ̀, pèsè ọ̀nà bootstrap tí ó kedere tí pẹpẹ lè lò — olùyanjú tí wọ́n lè dé láìsí ọ̀nà-ìmọ́lẹ̀, tàbí ìsopọ̀ ìṣàkóso tí olùṣiṣẹ́ ń tọ́jú — kí o sì jẹ́ kí ìyọkùrò yẹn wà ní háíkù, kì í ṣe ti ìlànà olùlò. Àwọn ìwé Android VpnService ni ìtọ́kasí fún ohun tí pẹpẹ ń ṣe ìdánilójú nípa ààbò àti ìgbà ayé, àti ìtọ́kasí VpnService.Builder ń jẹ́rìí pé pápá DNS ń gba àwọn àdírẹ́sì oníka.
Lẹ́yìn náà ṣàyẹ̀wò àwọn ìpele mẹ́ta, ní ìtòlẹ́sẹẹsẹ, lórí ìsopọ̀ tuntun lẹ́yìn àtúnbẹ̀rẹ̀: orúkọ ibi-ipari yanjú, ọ̀nà-ìmọ́lẹ̀ fìdí kalẹ̀, a sì jẹ́rìí olùbákẹ́gbẹ́, orúkọ ìkọ̀kọ̀ sì yanjú nípasẹ̀ olùyanjú ọ̀nà-ìmọ́lẹ̀. Bí ìpele kìíní bá kùnà, ohun tí ó tẹ̀lé kò lè ṣiṣẹ́, àtúnṣe sì jẹ́ ti ọ̀nà bootstrap — kì í ṣe ti pápá olùyanjú láé.
- Yíyanjú ibi-ipari ń ṣẹlẹ̀ nínú ohun-èlò, níta ọ̀nà-ìmọ́lẹ̀, lórí sọ́kẹ́ẹ̀tì ààbò.
- Pápá DNS nínú olùkọ́ jẹ́ fún àwọn ohun-èlò nínú ọ̀nà-ìmọ́lẹ̀, kì í ṣe fún ibi-ipari alátìlẹ́yìn fúnra rẹ̀.
- Olùyanjú tí wọ́n kì í lè dé àyàfi nípasẹ̀ ọ̀nà-ìmọ́lẹ̀ jẹ́ ìdí, kì í ṣe ìbẹ̀rẹ̀ lọ́ra.
- Dán ibi-ipari, ìjẹ́rìí àti ìwádìí ìkọ̀kọ̀ wò lọ́tọ̀ọ̀tọ̀ lẹ́yìn àtúnbẹ̀rẹ̀.