Unapata shell kwenye kifaa, unasoma /etc/resolv.conf au unachimbua thamani ya zamani ya net.dns1, na unapata anwani moja. Programu iliyo mbele yako hutatua kupitia kitu kingine kabisa. Katika toleo la sasa la Android resolver ni kwa kila mtandao: mfumo huweka sera kwa kila Network na kuitumia kwenye socket iliyotuma ombi. Faili na sifa ya zamani ni mabaki, na hakuna hata moja inayoeleza njia ambayo swali lako liliipitia kweli.

Pengo hili huonekana wakati wa kupeleka split-tunnel na Private DNS, ambapo programu mbili kwenye simu moja zinaweza kuona majibu tofauti kwa haki. Mwongozo huu huanza kutoka kwa utatuzi mbovu au usiokuwepo na kurudi nyuma hadi usanidi unaomiliki.

Resolver ni mali ya mtandao, si ya kifaa

Utatuzi wa majina kwenye Android 9 na baadaye hupitia resolver ya mfumo inayotegemea Network ambayo socket imefungwa. Kila mtandao hubeba LinkProperties zake, na sifa hizo zina orodha ya seva za DNS, vikoa vya utafutaji na hali ya Private DNS kwa mtandao huo pekee. Hakuna kitu katika muundo huo kinacholingana na orodha moja ya kifaa chote unayoweza kusoma kutoka faili.

VPN hufanya mgawanyiko uwe wazi. Tunnel inapopanda, programu ya VPN hutoa seva za DNS zilizosajiliwa kwenye mtandao wa VPN yenyewe, kwa hiyo programu zinazopitishwa kupitia hiyo hutatua kwa seva hizo wakati programu zilizotengwa zinaendelea kutumia mtandao wa chini. Kifaa kimoja, njia mbili za majibu, hakuna ukinzani.

Soma picha ya papo hapo kutoka ndani ya programu iliyoathirika

Uliza programu yenyewe. Njia yenye Context na ruhusa ya kawaida android.permission.ACCESS_NETWORK_STATE inaweza kusoma picha ya papo hapo bila kugusa sifa za mfumo:

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?.privateDnsServerName

activeNetwork ni mtandao chaguo-msingi wa mchakato wako, si mtandao pekee kwenye kifaa, na inaweza kuwa null wakati mpigaji hana chaguo-msingi linaloweza kutumika. VPN chaguo-msingi iliyozuiwa ndiyo sababu ya kawaida. isPrivateDnsActive hukuambia kama maswali kwenye mtandao huo yanapita kupitia TLS hadi resolver iliyotajwa, jambo linalobadilisha kile uchunguzi rahisi wa UDP 53 utakuonyesha. Uso wa API umeandikwa chini ya LinkProperties, na kila thamani ndani yake ni picha ya papo hapo ya usanidi, si uthibitisho kwamba swali fulani lilifika kwenye seva fulani.

Wakati mtandao chaguo-msingi si ule unaofanya kazi

Picha ya papo hapo hujibu kwa chaguo-msingi pekee. Programu inaweza kufunga mchakato wake au socket moja kwenye mtandao mwingine, na wakati huo utatuzi hufuata chaguo hilo huku utambuzi wako ukiendelea kuripoti chaguo-msingi. Kivinjari kinacholeta resolver yake ya DNS-over-HTTPS ha-ulizi kabisa orodha ya mfumo, kwa hiyo majibu yake hayasemi kitu kuhusu sehemu nyingine ya kifaa. Programu ya wasifu wa kazi huendeshwa chini ya mtumiaji tofauti na sera yake. Angalia kiungo kabla ya kulaumu seva.

Ujumuishaji wa VPN ni nusu nyingine. Kupokea mstari wa dhcp-option DNS katika wasifu wa OpenVPN na kusajili anwani hiyo kwenye mtandao wa VPN wa Android ni hatua mbili tofauti, na njia inayokosekana hadi seva hushindwa kimya kama anwani isiyo sahihi. Kutoka kwa mashine ya maendeleo, adb shell dumpsys connectivity huchapisha sifa zilezile za kiungo kwa kila mtandao wakati build inaruhusu, jambo linalothibitisha orodha bila kuandika msimbo.

Linganisha usanidi na utatuzi mmoja unaoruhusiwa kufanya

Chagua jina ambalo lazima litatuliwe katika nafasi ya majina ya faragha na jina moja la umma, na uandike matokeo yote mawili kando ya picha ya papo hapo: mtandao, seva zilizosanidiwa, hali ya Private DNS na maandishi kamili ya hitilafu. Swali la moja kwa moja kwa seva iliyotajwa huthibitisha kwamba seva hiyo inakujibu; haliwezi kuthibitisha kwamba utatuzi wa kawaida wa programu uliichagua. Jibu lililohifadhiwa kwenye akiba si jaribio jipya, kwa hiyo safisha akiba au tumia jina ambalo hakuna aliyeliuliza leo.

Ikiwa resolver inahudumia wateja kutoka mtandao fulani wa ufikiaji pekee, kile inachokiona baada ya kutoka VPN kinaweza kuamua matokeo, na hili ni swali la sera kwa anayeisimamia, si uthibitisho kwamba waendeshaji wanazuia UDP 53. Mahali Private DNS inatumika, jina la mwenyeji lisilo kamili linaweza kukataliwa kwa muundo wakati seva hiyo hiyo inajibu majina ya umma kwa kawaida. Kusoma sifa hukuambia ni hali gani inatumika, kwa hiyo unaacha kukisia vichujio vya pakiti.

Rekebisha tabaka linalomiliki kutokulingana

Fanya kazi kwenda juu badala ya kuhariri hali ya jumla. Ikiwa programu imefungwa kwenye mtandao usio sahihi, rekebisha kiungo. Ikiwa wasifu unatoa chaguo la DNS lisilo sahihi, rekebisha wasifu. Ikiwa Private DNS ni kali kwenye mtandao ambao resolver yake haiwezi kuhudumia eneo lako la faragha, hiyo ni uamuzi wa usimamizi wa kifaa, si sababu ya kuzima kipengele kila mahali.

Kusukuma resolver za umma kwenye ndoano ya DHCP au sifa ya mfumo ndiko kurekebisha kunakoendelea kusababisha matukio: majina ya faragha huacha kutatuliwa, mabadiliko huishi zaidi ya kipindi cha VPN, na mtu anayefuata kwenye kifaa hupata anwani ya zamani isiyo na mmiliki. Weka mabadiliko ndani ya VPN, programu au tabaka la usimamizi linalomiliki kutokulingana, kisha soma tena picha ya papo hapo ili kuthibitisha orodha ya seva ilibadilika kweli.

Mwishoni unachotaka ni ombi moja la programu lililofungwa kwenye mtandao mmoja, orodha ya resolver na hali ya Private DNS. Ukiweza kuonyesha mnyororo huo, anwani inayojulikana kwenye faili haitakuwa tena uthibitisho wa kitu chochote.

Makala zinazohusiana