Ka DNS Android dáadáa: nípasẹ̀ àwọn nẹ́tíwọ́kì, kì í ṣe resolv.conf
Àpòlúmọ̀ Android rẹ ń yanjú nípasẹ̀ resolver fún nẹ́tíwọ́kì kọ̀ọ̀kan, kì í ṣe nípasẹ̀ resolv.conf tí o ṣẹ̀ṣẹ̀ kà. Ṣàyẹ̀wò LinkProperties, ìsopọ̀ socket àti Private DNS kí o tó bẹ̀rẹ̀.
O gba shell lórí ẹ̀rọ náà, o ka /etc/resolv.conf tàbí o fì í jáde iye net.dns1 àtijọ́, o sì gba àdírẹ́sì kan. Àpòlúmọ̀ tó wà níwájú rẹ yanjú nípasẹ̀ nǹkan mìíràn pátápátá. Nínú ìtúsílẹ̀ Android lọ́wọ́lọ́wọ́, resolver jẹ́ ti nẹ́tíwọ́kì kọ̀ọ̀kan: ẹ̀rọ náà ń pa ìlànà mọ́ fún Network kọ̀ọ̀kan, ó sì ń lò ó lórí socket tó fi ìbéèrè náà ránṣẹ́. Fáìlì àti ànímọ́ àtijọ́ jẹ́ àjẹkù, kì í sì í ṣe pé ọ̀kan nínú wọn ṣàpèjúwe ọ̀nà tí ìbéèrè rẹ gbà ní gidi.
Ààlà yìí ń farahàn nígbà ìgbékalẹ̀ split-tunnel àti Private DNS, níbi tí àwọn àpòlúmọ̀ méjì lórí fọ́nì kan lè rí ìdáhùn ọ̀tọ̀ọ̀tọ̀ lẹ́tọ̀ọ́nà. Ìtọ́nisọ́nà yìí bẹ̀rẹ̀ láti ìyànjú tí kò tọ́ tàbí tí ó ṣáà, ó sì padà sẹ́yìn sí ìṣètò tó ni í.
Resolver jẹ́ ti nẹ́tíwọ́kì, kì í ṣe ti ẹ̀rọ
Ìyànjú orúkọ lórí Android 9 àti síwájú ń gba ẹ̀rọ resolver tó dá lórí Network tí socket so mọ́. Nẹ́tíwọ́kì kọ̀ọ̀kan ń gbé LinkProperties tirẹ̀, àwọn ànímọ́ yẹn sì ní àkójọ àwọn sẹ́bà DNS, àwọn ìkànnì wíwá àti ipò Private DNS fún nẹ́tíwọ́kì yẹn nìkan. Kò sí nǹkan nínú àwòrán yẹn tó bá àkójọ kan tí ó kún fún ẹ̀rọ náà mu tí o lè kà látinú fáìlì.
VPN ń mú ìpínyà náà hàn kedere. Nígbà tí ọ̀nà abẹ́lẹ̀ náà gòkè, àpòlúmọ̀ VPN ń pèsè àwọn sẹ́bà DNS tí wọ́n forúkọsílẹ̀ lórí nẹ́tíwọ́kì VPN fúnra rẹ̀, kí àwọn àpòlúmọ̀ tí a ń darí nípasẹ̀ rẹ̀ lè yanjú lórí àwọn sẹ́bà yẹn nígbà tí àwọn àpòlúmọ̀ tí a yọ kúrò ń tẹ̀síwájú lílo nẹ́tíwọ́kì tó wà nísàlẹ̀. Ẹ̀rọ kan, ọ̀nà ìdáhùn méjì, kò sí ìtakora.
Ka àwòrán gbàlẹ̀ látinú àpòlúmọ̀ tó kàn
Bèèrè lọ́wọ́ àpòlúmọ̀ náà fúnra rẹ̀. Ọ̀nà tó ní Context àti àṣẹ deede android.permission.ACCESS_NETWORK_STATE lè ka àwòrán gbàlẹ̀ láìfọwọ́ kàn àwọn ànímọ́ ẹ̀rọ:
val cm = getSystemService(ConnectivityManager::class.java) ?: return
val network = cm.activeNetwork
val links = network?.let { cm.getLinkProperties(it) }
val dnsServers = links?.dnsServers
val privateDnsActive = links?.isPrivateDnsActive
val privateDnsName = links?.privateDnsServerNameactiveNetwork ni nẹ́tíwọ́kì àìpéjá fún ìlànà rẹ, kì í ṣe nẹ́tíwọ́kì kan ṣoṣo lórí ẹ̀rọ, ó sì lè jẹ́ null nígbà tí ẹni tó pè kò ní àìpéjá tó ṣe é lò. VPN àìpéjá tí a dílẹ̀ ni ìdí tó wọ́pọ̀. isPrivateDnsActive sọ fún ọ bóyá àwọn ìbéèrè lórí nẹ́tíwọ́kì yẹn ń gba TLS lọ sí resolver olórúkọ, èyí tó ń yí ohun tí àyẹ̀wò UDP 53 rírọ̀n yóò fi hàn ọ padà. Ojú API wà ní ìkọ̀wé lábẹ́ LinkProperties, gbogbo iye inú rẹ̀ sì jẹ́ àwòrán gbàlẹ̀ ìṣètò, kì í ṣe ẹ̀rí pé ìbéèrè pàtó dé sẹ́bà pàtó.
Nígbà tí nẹ́tíwọ́kì àìpéjá kì í ṣe èyí tó ń ṣe iṣẹ́
Àwòrán gbàlẹ̀ ń dáhùn fún àìpéjá nìkan. Àpòlúmọ̀ lè so ìlànà rẹ̀ tàbí socket kan mọ́ nẹ́tíwọ́kì mìíràn, nígbà yẹn ìyànjú á tẹ̀lé ìyàn náà nígbà tí ìwádìí rẹ ṣì ń jábọ̀ àìpéjá. Aṣàwákiri tó mú resolver DNS-over-HTTPS tirẹ̀ wá kì í béèrè àkójọ ẹ̀rọ rárá, nítorí náà àwọn ìdáhùn rẹ̀ kò sọ nǹkan kan nípa ìyókù ẹ̀rọ náà. Àpòlúmọ̀ profáìlì iṣẹ́ ń ṣiṣẹ́ lábẹ́ olùlò ọ̀tọ̀ pẹ̀lú ìlànà tirẹ̀. Ṣàyẹ̀wò ìsopọ̀ kí o tó dá àwọn sẹ́bà lẹ́bi.
Ìsopọ̀ VPN ni ìdajì kejì. Gbígba ìlà dhcp-option DNS nínú profáìlì OpenVPN àti fíforúkọsílẹ̀ àdírẹ́sì yẹn lórí nẹ́tíwọ́kì VPN Android jẹ́ ìgbésẹ̀ méjì ọ̀tọ̀ọ̀tọ̀, ọ̀nà tó ṣáà sí sẹ́bà sì kùnà ní ìdákẹ́jẹ́ẹ́ bí àdírẹ́sì tí kò tọ́. Láti ẹ̀rọ ìdàgbàsókè, adb shell dumpsys connectivity ń tẹ̀ àwọn ànímọ́ ìsopọ̀ kan náà jáde fún nẹ́tíwọ́kì kọ̀ọ̀kan nígbà tí build gbà á, èyí tó ń jẹ́rìí àkójọ náà láìkọ kóòdù.
Fi ìṣètò náà wé ìyànjú kan tí a gbà ọ́ láàyè láti ṣe
Yan orúkọ kan tí ó gbọdọ̀ yanjú nínú ààyè orúkọ àdáni àti orúkọ gbogbogbò kan, kí o sì kọ àwọn ìdáhùn méjèèjì lẹ́gbẹ̀ẹ́ àwòrán gbàlẹ̀: nẹ́tíwọ́kì, àwọn sẹ́bà tí a ṣètò, ipò Private DNS àti ọ̀rọ̀ àṣìṣe gangan. Ìbéèrè tààrà sí sẹ́bà olórúkọ ń fi hàn pé sẹ́bà yẹn ń dáhùn ọ; kò fi hàn pé ìyànjú àpòlúmọ̀ déedé ló yàn án. Ìdáhùn tó wà nínú káṣì kì í ṣe àyẹ̀wò tuntun, nítorí náà pa káṣì mọ́ tàbí lo orúkọ tí ẹnìkan kò béèrè nípa rẹ̀ lónìí.
Bí resolver bá ń sin àwọn oníbàárà láti nẹ́tíwọ́kì àwọlé pàtó nìkan, ohun tí ó rí lẹ́yìn jáde VPN lè pinnu àbájáde, èyí sì jẹ́ ìbéèrè ìlànà fún ẹni tó ń darí rẹ̀, kì í ṣe ẹ̀rí pé àwọn oníṣẹ́ ń dí UDP 53. Níbi tí Private DNS ti ń ṣiṣẹ́, orúkọ agbàlejò tí kò pé lè jẹ́ kíkọ̀ nípasẹ̀ àpẹẹrẹ nígbà tí sẹ́bà kan náà ń dáhùn àwọn orúkọ gbogbogbò bí ipò deede. Kíkà àwọn ànímọ́ ń sọ ìpò wo ni ó wà lẹ́nu, nítorí náà o jáwọ́ láti díwọ̀n àwọn àlẹ̀mọ́ pákẹ́tì.
Tún ìpele tó ni àìbáramu náà ṣe
Ṣiṣẹ́ lọ sókè dípò kíkọ ipò gbogbogbò. Bí àpòlúmọ̀ bá so mọ́ nẹ́tíwọ́kì tí kò tọ́, tún ìsopọ̀ náà ṣe. Bí profáìlì bá ń pèsè àṣàyàn DNS tí kò tọ́, tún profáìlì náà ṣe. Bí Private DNS bá le lórí nẹ́tíwọ́kì tí resolver rẹ̀ kò lè sin àgbègbè àdáni rẹ, ìyẹn jẹ́ ìpinnu ìṣàkóso ẹ̀rọ, kì í ṣe ìdí láti pa ẹ̀yà náà ní gbogbo ibi.
Títì resolver gbogbogbò sínú kọ́kọ̀ DHCP tàbí ànímọ́ ẹ̀rọ ni àtúnṣe tó ń dá ìṣẹ̀lẹ̀ leralera: àwọn orúkọ àdáni jáwọ́ yanjú, ìyípadà náà ń gbé jáde ju ìpàdé VPN lọ, ẹni tó kàn lórí ẹ̀rọ náà sì rí àdírẹ́sì àtijọ́ tí kò ní olówó. Pa ìyípadà náà mọ́ nínú VPN, àpòlúmọ̀ tàbí ìpele ìṣàkóso tó ni àìbáramu náà, kí o sì tún àwòrán gbàlẹ̀ kà láti jẹ́rìí pé àkójọ sẹ́bà yí padà ní gidi.
Ní ìparí ohun tí o fẹ́ ni ìbéèrè àpòlúmọ̀ kan tó so mọ́ nẹ́tíwọ́kì kan, àkójọ resolver àti ipò Private DNS. Nígbà tí o bá lè fi ẹ̀wọ̀n yẹn hàn, àdírẹ́sì tí a mọ̀ nínú fáìlì kì í ṣe ẹ̀rí nǹkan kan mọ́.