ADB және Android эмуляторы VPN артында істемейді: үш жол
ADB анықтауы, эмулятордың виртуалдық желілік картасы және хост шешушісі VPN артында бөлек сәтсіздікке ұшырайды. Туннельді кінәламас бұрын әр жолды кезекпен тексеріңіз.
Кеңсе VPN-іне қосыласыз, содан Android Studio жұмыс істеп тұрған эмуляторды жоғалтады, adb start-server қатып қалады, ал Wi-Fi-дағы нақты телефон құрылғылар тізімінен шығып қалады. Бір туннель бір өнімді бөгеп тұрғандай көрінеді. Іс жүзінде үш бөлек жол үш түрлі жолмен сәтсіздікке ұшырайды: adb құрылғыларды анықтауы, эмулятордың виртуалдық желісі және хост шешушісі. Туннель әдетте тек соңғысына ие, көбіне оның бір бөлігіне ғана.
Үш сокет, үш иесі
adb сервері хосттағы 5037 портында тыңдайды және құрылғылармен USB немесе TCP арқылы сөйлеседі, желілік анықтау үшін mDNS қолданады. Эмулятор өзінің виртуалдық маршрутизаторының артында жұмыс істейді: қонақ 10.0.2.15, шлюзі 10.0.2.2 және DNS сервері 10.0.2.3, ал эмулятор процесі мұның бәрін хост сокеттеріне айналдырады. Хост шешушісі — VPN клиенті DNS пен іздеу домендерін орнататын орын.
Бұл бөліну бір түзетудің бір құралда жұмыс істеп, екіншісінде істемейтінін түсіндіреді. Хост шешушісін ауыстыратын клиент жұмыс істеп тұрған эмулятор процесін іске қосқанда оқыған шешуші күйімен қалдырады. multicast сүзетін клиент DNS-ке тимей-ақ анықтауды бұзады. Виртуалдық адаптерлерді сүзетін клиент хост браузері жұмыс істеп тұрғанда эмулятордан бас тартады. Әр симптомның себебі бөлек, сондықтан кез келген параметрді өзгертер алдында сәтсіз жолды анықтаңыз.
adb көретін нәрседен бастаңыз
VPN-ге тиер алдында adb devices іске қосыңыз. Бос тізім — тасымалдау мәселесі, маршруттау емес, және сервер ешқашан тіркемеген құрылғыны ешбір туннель параметрі түзетпейді. Серверді таза қайта іске қосыңыз: әуелі adb kill-server, содан кейін adb start-server, және ол қай портты алғанын білу үшін шығысты оқыңыз. Іске қосудың өзі қатып қалса, multicast сүзетін желіде mDNS анықтауы әдеттегі күдікті; құжатталған шешім — серверді анықтауды өшіріп іске қосу:
ADB_MDNS_OPENSCREEN=0 adb start-server
adb devicesНақты құрылғы үшін USB ең қысқа жол. TCP керек болса, құрылғыны тыңдау режиміне adb tcpip 5555 арқылы қосыңыз да, құрылғы мекенжайы мен портына қосылыңыз, adb connect 192.0.2.10:5555. 5037 порты — хост серверінің порты, құрылғы тыңдайтын порт емес.
Эмуляторды ішінен тексеріңіз
Эмулятор DNS-ке 10.0.2.3-тен жауап береді, ол шешушіні хост процесі қоректендіреді. VPN клиенті хост шешушісін өзгертсе, эмулятор оны мұраға алады; клиент эмулятор процесін сүзсе немесе іске қосқаннан кейін хост адаптерлер тізімі өзгерсе, ол мұны істей алмайды. Екеуін бір shell-ден сандық мақсат пен атпен ажыратыңыз. adb shell ping -c 2 10.0.2.2 виртуалдық желінің хост жағына жететінін дәлелдейді. Кейінгі ат іздеу шешім шекарадан өткенін көрсетеді.
Содан кейін сол ат іздеуді хостта орындаңыз. Хост шешеді, эмулятор шешпейді — үзіліс хост шешушісі мен эмулятордың виртуалдық желісінің арасында, туннельде емес. Екеуі де сәтсіз болса, хост шешушісін қарау керек. VPN қосылғаннан кейін эмуляторды қайта іске қосу бір байқауға тұрарлық, өйткені кейбір клиенттер жұмыс істеп тұрған эмулятор процесі қабылдамайтын шешуші күйін орнатады.
Хост шешушісі мен клиент сүзгілерін тексеріңіз
Толық туннель клиенті хост шешушісін өзімен алмастырады, ал split-DNS клиенті іздеу домендері мен шартты жіберушілерді қосады. Ішкі аттар көбіне сол split-DNS конфигурациясына тәуелді, сондықтан қосылған кезде хосттың нені қолданатынын қараңыз: шешуші мекенжайы, іздеу домені және ішкі аймақтың корпоративтік DNS-ке бағытталуы. Жалпы аттарға жауап беріп, ішкі аттарға бермейтін шешуші — саясат мәселесі, бұзылған туннель емес.
Кейбір корпоративтік клиенттер виртуалдық адаптерлерден келетін трафикті де бөгейді. Сүзгі драйвері үшін эмулятор виртуалдық адаптер болып көрінеді, сондықтан хост мінсіз жұмыс істеп, саясат эмулятордан бас тартады. Бұл саясат жұмыс станциясынан көрінбейді, прокси параметрлерін болжау оны ашпайды. Хост шешіп, эмулятор шешуші параметрлеріне қарамастан бөгелсе, дұрыс эскалация — клиент саясатын иеленетін топқа.
Тексеру тәртібі және әр нәтиженің мағынасы
Жоғарыдан төмен жұмыс істеңіз және бірінші сәтсіз жолда тоқтаңыз. Әр нәтиже басқа иесін көрсетеді, және ешқайсысы Android Studio-ны қайта орнатумен түзелмейді.
| Result | Likely owner | Next check |
|---|---|---|
| adb devices is empty with USB attached | USB, driver or adb server | cable, authorization prompt, adb kill-server |
| adb start-server hangs | mDNS discovery | ADB_MDNS_OPENSCREEN=0 |
| Emulator reaches 10.0.2.2, names fail | Host resolver to emulator boundary | host lookup of the same name |
| Host resolves, emulator still fails | Emulator process or client filter | restart emulator, ask IT about virtual adapters |
| Both fail for internal names only | Split DNS or search domain | resolver and zone configuration |
Тек соңғы екі жол ғана әдеттегі мағынада VPN сұрақтары, тек соңғысы DNS мазмұны туралы. adb құжаттамасы сервер портын және осында аталған орта айнымалыларын қамтиды, бұл қалғанын тексергенде тасымалдау жағын адал ұстауға жетеді.