Dobijete ljusku na uređaju, pročitate /etc/resolv.conf ili iskopate staru vrijednost net.dns1, i dobijete jednu adresu. Aplikacija pred vama razrješava preko nečeg sasvim drugog. Na aktuelnoj verziji Androida resolver je po mreži: sistem drži pravilo za svaku Network i primjenjuje ga na socket koji je poslao zahtjev. Datoteka i stara osobina su ostaci i nijedno od njih ne opisuje put koji je vaš upit zaista prešao.

Taj jaz se vidi tokom uvođenja split-tunnela i Private DNS, gdje dvije aplikacije na istom telefonu mogu legitimno vidjeti različite odgovore. Ovaj vodič počinje od pogrešnog ili nedostajućeg razrješavanja i ide unazad do konfiguracije kojoj pripada.

Resolver pripada mreži, ne uređaju

Razrješavanje imena na Androidu 9 i novijem ide preko sistemskog resolvera koji se oslanja na Network za koju je socket vezan. Svaka mreža nosi svoje LinkProperties, a te osobine sadrže listu DNS servera, domene pretrage i stanje Private DNS samo za tu mrežu. Ništa u tom modelu ne odgovara jednoj listi za cijeli uređaj koju biste mogli pročitati iz datoteke.

VPN čini podjelu očitom. Kada tunel ustane, VPN aplikacija dostavlja DNS servere registrovane na vlastitoj mreži VPN-a, pa aplikacije usmjerene kroz njega razrješavaju preko tih servera, dok isključene aplikacije nastavljaju koristiti donju mrežu. Jedan uređaj, dva puta odgovora, bez protivrječnosti.

Pročitajte snimak iz same pogođene aplikacije

Pitajte samu aplikaciju. Metoda koja ima Context i normalnu dozvolu android.permission.ACCESS_NETWORK_STATE može pročitati snimak bez diranja sistemskih osobina:

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 je zadana mreža vašeg procesa, ne jedina mreža na uređaju, i može biti null kada pozivalac nema upotrebljivu zadanu mrežu. Blokiran zadani VPN je uobičajen razlog. isPrivateDnsActive vam kaže da li upiti na toj mreži idu preko TLS-a do imenovanog resolvera, što mijenja ono što će vam pokazati obična UDP 53 sonda. Površina API-ja je dokumentovana pod LinkProperties, a svaka vrijednost u njoj je snimak konfiguracije, ne dokaz da je određeni upit stigao do određenog servera.

Kada zadana mreža nije ona koja obavlja posao

Snimak odgovara samo za zadanu mrežu. Aplikacija može vezati svoj proces ili jedan socket za drugu mrežu, i tada razrješavanje slijedi taj izbor dok vaša dijagnostika i dalje prijavljuje zadanu mrežu. Preglednik koji donosi vlastiti DNS-over-HTTPS resolver uopće ne konsultuje sistemsku listu, pa njegovi odgovori ne govore ništa o ostatku uređaja. Aplikacija radnog profila radi pod odvojenim korisnikom s vlastitim pravilom. Provjerite vezanje prije nego okrivite servere.

VPN integracija je druga polovina. Primiti liniju dhcp-option DNS u OpenVPN profilu i registrovati tu adresu na Android VPN mreži su dva odvojena koraka, a ruta koja nedostaje do servera pada jednako tiho kao pogrešna adresa. S razvojne mašine adb shell dumpsys connectivity ispisuje iste osobine veze po mreži kada build to dozvoli, što potvrđuje listu bez pisanja koda.

Uporedite konfiguraciju s jednim razrješavanjem koje smijete izvesti

Odaberite ime koje se mora razriješiti unutar privatnog imenskog prostora i jedno javno ime, pa zapišite oba rezultata pored snimka: mreža, konfigurisani serveri, stanje Private DNS i tačan tekst greške. Direktan upit imenovanom serveru dokazuje da vam taj server odgovara; ne dokazuje da ga je odabralo uobičajeno razrješavanje aplikacije. Odgovor iz keša nije svjež test, zato ispraznite keš ili koristite ime o kojem danas niko nije pitao.

Ako resolver služi samo klijentima iz određene pristupne mreže, ono što vidi nakon izlaska iz VPN-a može odlučiti ishod, a to je pitanje pravila za onoga ko ga vodi, ne dokaz da operateri blokiraju UDP 53. Gdje je Private DNS aktivan, nekvalifikovano ime hosta može biti odbijeno po dizajnu dok isti server normalno odgovara javnim imenima. Čitanje osobina vam kaže koji režim važi, pa prestajete nagađati filtere paketa.

Popravite sloj kojem pripada nesklad

Radite prema gore umjesto da mijenjate globalno stanje. Ako je aplikacija vezana za pogrešnu mrežu, popravite vezanje. Ako profil dostavlja pogrešnu DNS opciju, popravite profil. Ako je Private DNS strog na mreži čiji resolver ne može služiti vašoj privatnoj zoni, to je odluka upravljanja uređajem, a ne razlog da funkciju posvuda isključite.

Utjerivanje javnih resolvera u DHCP kuku ili sistemsku osobinu je popravka koja neprestano izaziva incidente: privatna imena prestaju razrješavati, promjena nadživi VPN sesiju, a sljedeća osoba na uređaju nađe zastarjelu adresu bez vlasnika. Držite promjenu unutar VPN-a, aplikacije ili sloja upravljanja kojem pripada nesklad, pa zatim ponovo pročitajte snimak da potvrdite da se lista servera zaista promijenila.

Na kraju želite jedan zahtjev aplikacije vezan za jednu mrežu, listu resolvera i stanje Private DNS. Kada možete pokazati taj lanac, poznata adresa u datoteci prestaje biti dokaz ičega.

Povezani članci