Akhri DNS-ka Android si sax ah: shabakad kasta, ma aha resolv.conf
App-kaaga Android wuxuu ku xalliyaa resolver shabakad kasta, ma aha resolv.conf-ka aad hadda akhriday. Marka hore baadh LinkProperties, xirnaanta socket iyo Private DNS.
Waxaad heshaa shell qalabka, waxaad akhridaa /etc/resolv.conf ama waxaad soo qodaa qiimaha net.dns1 ee hore, oo waxaad heshaa hal cinwaan. App-ka hortaada wuxuu ku xalliyaa shay kale gebi ahaan. Daabacaadda Android ee hadda resolver waa mid shabakad kasta: nidaamku wuxuu hayaa siyaasad Network kasta oo wuxuu ku dabaqaa socket-ka codsiga diray. Faylka iyo hantida hore waa hadhaag, midkoodna ma sharraxayo jidka ay codsigaagu dhab ahaan maray.
Farqigan wuxuu muuqdaa inta lagu hirgelinayo split-tunnel iyo Private DNS, halkaas oo laba app oo isku telefoon ah ay si xaq ah u arki karaan jawaabo kala duwan. Hagahan wuxuu ka bilaabmaa xallinta khaldan ama maqan wuxuuna dib ugu noqdaa qaabeynta iska leh.
Resolver wuxuu leeyahay shabakad, ma aha qalab
Xallinta magacyada Android 9 iyo wixii ka dambeeya waxay maraan resolver nidaam oo ku salaysan Network uu socket ku xiran yahay. Shabakad kastaa waxay qaadataa LinkProperties u gaar ah, hantidaasna waxay hayaan liiska server-rada DNS, domain-yada raadinta iyo xaaladda Private DNS ee shabakadaas oo keliya. Waxba ka mid ah qaabkaas kuma habboona liis keliya oo qalabka oo dhan ah oo aad fayl ka akhridi karto.
VPN waxay kala-baxa ka dhigtaa mid cad. Marka tunnel-ku kaco, app-ka VPN wuxuu bixiyaa server-rada DNS ee ku diiwaangashan shabakada VPN-ka laftiisa, sidaas darteed app-yada lagu maroojiyo wuxuu ku xalliyaa server-radaas halka app-yada laga reebay ay sii wadaan isticmaalka shabakada hoose. Hal qalab, laba jid oo jawaab, khilaaf ma leh.
Akhri sawirka gudaha app-ka la saameeyay
Weydii app-ka laftiisa. Habka haysta Context iyo ogolaanshaha caadiga ah ee android.permission.ACCESS_NETWORK_STATE wuxuu akhrin karaa sawirka isagoon taaban hantida nidaamka:
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 waa shabakada caadiga ah ee habkaaga, ma aha shabakada keliya ee qalabka, waxayna noqon kartaa null marka wicitaanku uusan lahayn mid caadi ah oo la isticmaali karo. VPN caadi ah oo la xannibay waa sababta caadiga ah. isPrivateDnsActive wuxuu kuu sheegaa haddii weydiimaha shabakadaas ay maraan TLS oo tagaan resolver magac leh, taas oo beddela waxa baaritaanka fudud ee UDP 53 ku tusayo. Dusha API waxaa lagu diiwaangeliyay LinkProperties hoostiisa, qiimihiisana mid kastaa waa sawir qaabeyn, ma aha caddayn in weydiin gaar ah ay gaartay server gaar ah.
Marka shabakada caadiga ah aysan ahayn tan shaqada qabanaysa
Sawirku wuxuu ka jawaabaa oo keliya kan caadiga ah. App-ku wuxuu ku xiri karaa habkiisa ama hal socket shabakad kale, markaas xallintu waxay raacdaa doorashadaas halka baaritaankaagu weli ka warbixinayo tan caadiga ah. Browser-ka haysta resolver DNS-over-HTTPS u gaar ah marnaba ma weydiiyo liiska nidaamka, sidaas darteed jawaabihiisu waxba kama sheegaan qalabka intiisa kale. App-ka profile-ka shaqada wuxuu ku socdaa isticmaale gooni ah oo leh siyaasad u gaar ah. Hubi xirnaanta ka hor intaadan server-rada eedayn.
Isku-dubaridka VPN waa qaybta kale. Helista sadarka dhcp-option DNS ee profile-ka OpenVPN iyo diiwaangelinta cinwaankaas shabakada VPN ee Android waa laba tallaabo oo gooni ah, jidka server-ka u maqan wuxuuna ku guuldareystaa aamusnaan sida cinwaan khaldan. Mishiinka horumarinta, adb shell dumpsys connectivity wuxuu daabacaa isla sifooyinka isku-xirka shabakad kasta marka build-ku ogolaado, taas oo xaqiijinaysa liiska iyada oo aan code la qorin.
Isbarbar dhig qaabeynta hal xallin oo la ogol yahay inaad samaysato
Dooro magac ay waajib tahay in lagu xalliyo meesha magacyada gaarka ah iyo hal magac guud, kadibna qor labada natiijo sawirka agtiisa: shabakad, server-ro la qaabeeyay, xaaladda Private DNS iyo qoraalka saxda ah ee khaladka. Weydiin toos ah oo server magac leh waxay caddaynaysaa in server-kaas kuu jawaabo; ma caddaynayso in xallinta caadiga ah ee app-ka ay doortay isaga. Jawaab ka timaadda keydka ma aha imtixaan cusub, sidaas darteed nadiifi keydka ama isticmaal magac aan qofna maanta weydiin.
Haddii resolver-ku kaliya u adeego macaamiisha ka imanaya shabakad gelitaan gaar ah, waxa uu arko ka dib bixidda VPN ayaa laga yaabaa inuu go'aamiyo natiijada, tanina waa su'aal siyaasad ah oo u taal kan maamula, ma aha caddayn in shirkadaha isgaarsiintu xannibaan UDP 53. Meesha Private DNS uu firfircoon yahay, magac martigeliyaha aan buuxin ayaa laga yaabaa in la diido naqshad ahaan halka isla server-kaas uu si caadi ah uga jawaabo magacyada guud. Akhrinta hantida waxay kuu sheegtaa habka kee ayaa socda, sidaas darteed waxaad joojisaa qiyaasidda filtarrada baakadaha.
Hagaaji lakabka iska leh ismaandhaafka
Ka shaqee kor u kaca halkii aad wax ka beddeli lahayd xaaladda guud. Haddii app-ka ku xiran yahay shabakad khaldan, hagaaji xirnaanta. Haddii profile-ku bixiyo ikhtiyaar DNS khaldan, hagaaji profile-ka. Haddii Private DNS adag yahay shabakad uusan resolver-keedu u adeegi karin aaggaaga gaarka ah, taasi waa go'aan maamulka qalabka, ma aha sabab lagu damiyo astaamaha meel kasta.
Ku riixidda resolver-ro guud gudaha jillaab DHCP ama hanti nidaam waa hagaajinta si joogto ah u keenta shilal: magacyada gaarka ah way joojiyaan xallinta, isbeddelku wuu ka badbaadaa fadhiga VPN, qofka ku xiga qalabkana wuxuu helaa cinwaan duugoobay oo aan lahayn milkiile. Ku hay isbeddelka gudaha VPN, app-ka ama lakabka maamulka iska leh ismaandhaafka, kadibna dib u akhri sawirka si aad u xaqiijiso in liiska server-rada uu dhab ahaan isbeddelay.
Ugu dambayntii waxa aad rabto waa hal codsi app oo ku xiran hal shabakad, liis resolver iyo xaalad Private DNS. Markaad muujin karto silsiladdaas, cinwaan caan ah oo fayl ku jira ma aha caddayn waxba.