Түзмөктө shell аласыз, /etc/resolv.conf окуйсуз же эски net.dns1 маанисин казып аласыз, жана бир дарек аласыз. Алдыңыздагы колдонмо таптакыр башка нерсе аркылуу чечет. Учурдагы Android чыгарылышында resolver тармак боюнча: система ар бир Network үчүн саясат кармайт жана аны сурамды жиберген socketке колдонот. Файл жана эски касиет калдыктар, жана экөө тең сурамыңыз чындыгында жүргөн жолду сүрөттөбөйт.

Бул ажырым split-tunnel жана Private DNS киргизүү учурунда көрүнөт, мында бир телефондогу эки колдонмо мыйзамдуу түрдө ар башка жоопторду көрө алат. Бул колдонмо туура эмес же жок чечүүдөн башталып, ага таандык конфигурацияга карай артка жүрөт.

Resolver тармакка таандык, түзмөккө эмес

Android 9 жана андан кийинки версияларда аттарды чечүү socket байланган Network ге таянган системалык resolver аркылуу жүрөт. Ар бир тармак өзүнүн LinkProperties маалыматын алып жүрөт, жана бул касиеттер DNS серверлеринин тизмесин, издөө домендерин жана Private DNS абалын ушул тармак үчүн гана сактайт. Бул моделде файлдан окуй турган бирдиктүү түзмөк тизмесине туура келген эч нерсе жок.

VPN бөлүнүүнү айкын кылат. Туннель көтөрүлгөндө, VPN колдонмосу VPNдин өз тармагында катталган DNS серверлерин берет, ошондуктан анын аркылуу багытталган колдонмолор ошол серверлерде чечет, ал эми чыгарылган колдонмолор астындагы тармакты колдонууну улантат. Бир түзмөк, эки жооп жолу, каршылык жок.

Сүрөттү жабыркаган колдонмонун ичинен окуңуз

Колдонмонун өзүнөн сураңыз. Context жана кадимки android.permission.ACCESS_NETWORK_STATE уруксаты бар ыкма системалык касиеттерге тийбей сүрөттү окуй алат:

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 — процессиңиздин демейки тармагы, түзмөктөгү жалгыз тармак эмес, жана чакыруучунун жарактуу демейкиси жок болсо null болушу мүмкүн. Бөгөттөлгөн демейки VPN — кадимки себеп. isPrivateDnsActive ошол тармактагы сурамдар TLS аркылуу аталган resolverге барарын айтат, бул жөнөкөй UDP 53 текшерүүсү эмнени көрсөтөрүн өзгөртөт. API бети LinkProperties астында документтелген, жана андагы ар бир маани конфигурациянын сүрөтү, белгилүү сурамдын белгилүү серверге жеткенин далилдебейт.

Демейки тармак ишти аткарган тармак болбогондо

Сүрөт демейки тармак үчүн гана жооп берет. Колдонмо өз процессин же бир socketти башка тармакка байлай алат, ошондо чечүү ошол тандоону ээрчийт, ал эми диагностикаңыз дагы эле демейкини билдирет. Өз DNS-over-HTTPS resolverин алып келген браузер системалык тизмеге такыр кайрылбайт, ошондуктан анын жооптору түзмөктүн калган бөлүгү жөнүндө эч нерсе айтпайт. Жумуш профилинин колдонмосу өз саясаты бар өзүнчө колдонуучу астында иштейт. Серверлерди күнөөлөөдөн мурун байланышты текшериңиз.

VPN интеграциясы — экинчи жарым. dhcp-option DNS сабын OpenVPN профилинде кабыл алуу жана ошол даректи Android VPN тармагында каттоо — эки өзүнчө кадам, ал эми серверге жетпеген маршрут туура эмес дарек сыяктуу эле тынч ишке ашпайт. Иштөө машинасынан adb shell dumpsys connectivity build уруксат бергенде ошол эле байланыш касиеттерин тармак боюнча басып чыгарат, бул код жазбастан тизмени ырастайт.

Конфигурацияны өзүңүзгө уруксат берилген бир чечүү менен салыштырыңыз

Жеке ат мейкиндигинде чечүүгө тийиш болгон атты жана бир коомдук атты тандап, эки жыйынтыкты тең сүрөттүн жанына жазыңыз: тармак, конфигурацияланган серверлер, Private DNS абалы жана катанын так тексти. Аталган серверге түз сурам ошол сервердин сизге жооп берерин далилдейт; ал кадимки колдонмо чечүүсү аны тандаганын далилдебейт. Кэштеги жооп жаңы тест эмес, ошондуктан кэшти тазалаңыз же бүгүн эч ким сурабаган атты колдонуңуз.

Эгер resolver белгилүү бир кирүү тармагынын кардарларына гана кызмат кылса, анын VPN чыгышынан кийин көргөнү жыйынтыкты чече алат, жана бул аны башкарган адам үчүн саясат маселеси, операторлордун UDP 53тү блоктогонунун далили эмес. Private DNS активдүү жерде квалификациясыз хост аты дизайн боюнча четке кагылышы мүмкүн, ал эми ошол эле сервер коомдук аттарга кадимкидей жооп берет. Касиеттерди окуу кайсы режим күчүндө экенин айтат, ошондуктан пакет чыпкалары жөнүндө божомолдоону токтотосуз.

Шайкешсиздикке таандык катмарды оңдоңуз

Глобалдык абалды оңдоонун ордуна өйдө карай иштеңиз. Колдонмо туура эмес тармакка байланган болсо, байланышты оңдоңуз. Профиль туура эмес DNS опциясын берсе, профилди оңдоңуз. Private DNS resolverи жеке зонаңызга кызмат кыла албаган тармакта катуу болсо, бул түзмөктү башкаруу чечими, функцияны бардык жерде өчүрүүгө себеп эмес.

Коомдук resolverлерди DHCP илгичине же системалык касиетке түртүү — дайыма окуяларды жараткан оңдоо: жеке аттар чечилбей калат, өзгөртүү VPN сессиясынан ашып кетет, жана түзмөктөгү кийинки адам ээсиз эскирген даректи табат. Өзгөртүүнү шайкешсиздикке таандык VPN, колдонмо же башкаруу катмарынын ичинде кармаңыз, анан серверлердин тизмеси чын эле өзгөргөнүн ырастоо үчүн сүрөттү кайра окуңуз.

Аягында сиз бир тармакка, resolver тизмесине жана Private DNS абалына байланган бир колдонмо сурамын каалайсыз. Ушул чынжырды көрсөтө алганыңызда, файлдагы тааныш дарек эми эч нерсенин далили эмес.

Тектеш макалалар