ADB va Android emulyatori VPN ortida ishlamaydi: uchta yo‘l
ADB aniqlashi, emulyatorning virtual tarmoq kartasi va xostning yechuvchisi VPN ortida alohida ishlamay qoladi. Tunnelni ayblashdan oldin har bir yo‘lni tartib bilan sinab ko‘ring.
Ofis VPN iga ulanasiz va Android Studio ishlab turgan emulyatorni yo‘qotadi, adb start-server qotib qoladi, Wi-Fi dagi jismoniy telefon esa qurilmalar ro‘yxatidan tushib qoladi. Bitta tunnel bitta mahsulotni to‘sayotgandek ko‘rinadi. Aslida uchta alohida yo‘l uch xil tarzda ishlamay qoladi: adb qurilmalarini aniqlash, emulyatorning virtual tarmog‘i va xostning yechuvchisi. Tunnel odatda faqat oxirgisiga egalik qiladi, ko‘pincha uning bir qismiga.
Uchta soket, uchta egasi
adb serveri xostdagi 5037 portida tinglaydi va qurilmalar bilan USB yoki TCP orqali gaplashadi, tarmoqni aniqlash uchun mDNS ishlatadi. Emulyator o‘zining virtual marshrutizatori ortida ishlaydi: mehmon 10.0.2.15, shlyuz 10.0.2.2 va DNS serveri 10.0.2.3, va emulyator jarayoni bularning barchasini xost soketlariga aylantiradi. Xostning yechuvchisi VPN mijozi DNS va qidiruv domenlarini o‘rnatadigan joy.
Aynan shu ajratish bitta tuzatishning bir vositada ishlab, boshqasida ishlamasligini tushuntiradi. Xost yechuvchisini o‘zgartirgan mijoz ishlab turgan emulyator jarayonini boshlanishda o‘qigan yechuvchi holati bilan qoldiradi. multicast ni filtrlaydigan mijoz DNS ga tegmasdan aniqlashni buzadi. Virtual adapterlarni filtrlaydigan mijoz xost brauzeri ishlab turganda emulyatorni rad etadi. Har bir alomatning sababi boshqa, shuning uchun har qanday sozlamani o‘zgartirishdan oldin ishlamay qolgan yo‘lni aniqlang.
adb ko‘ra oladigan narsadan boshlang
VPN ga tegishdan oldin adb devices ni ishga tushiring. Bo‘sh ro‘yxat tashish muammosi, marshrutlash emas, va server hech qachon ro‘yxatga olmagan qurilmani hech qanday tunnel sozlamasi tuzatmaydi. Serverni toza qayta ishga tushiring: avval adb kill-server keyin adb start-server, va qaysi portni egallaganini bilish uchun chiqishni o‘qing. Agar ishga tushishning o‘zi qotib qolsa, multicast ni filtrlaydigan tarmoqda mDNS aniqlashi odatiy gumondor; hujjatlashtirilgan yechim serverni aniqlashni o‘chirib ishga tushirish:
ADB_MDNS_OPENSCREEN=0 adb start-server
adb devicesJismoniy qurilma uchun USB eng qisqa yo‘l. Agar TCP kerak bo‘lsa, qurilmani adb tcpip 5555 bilan tinglash rejimiga o‘tkazing va qurilma manzili va portiga ulanib, adb connect 192.0.2.10:5555. 5037 porti xost serverining porti, qurilma tinglaydigan port emas.
Emulyatorni ichkaridan sinang
Emulyator 10.0.2.3 dan DNS ga javob beradi, va bu yechuvchini xost jarayoni oziqlantiradi. VPN mijozi xost yechuvchisini o‘zgartirsa, emulyator uni meros olishi mumkin; mijoz emulyator jarayonini filtrlasa yoki ishga tushgandan keyin xost adapterlari ro‘yxati o‘zgarsa, ololmaydi. Ikkalasini bir shell dan raqamli nishon va nom bilan ajrating. adb shell ping -c 2 10.0.2.2 virtual tarmoqning xost tomoniga yetib borishini isbotlaydi. Keyingi nom qidiruvi yechim chegaradan o‘tganini ko‘rsatadi.
So‘ngra xuddi shu nom qidiruvini xostda bajaring. Xost yechadi, emulyator yechmasa, uzilish xost yechuvchisi bilan emulyatorning virtual tarmog‘i orasida, tunnelda emas. Ikkalasi ham ishlamasa, xost yechuvchisiga qarash kerak. VPN ulangandan keyin emulyatorni qayta ishga tushirish bitta urinishga arziydi, chunki ba’zi mijozlar ishlab turgan emulyator jarayoni olmaydigan yechuvchi holatini o‘rnatadi.
Xost yechuvchisi va mijoz filtrlarini tekshiring
To‘liq tunnel mijozi xost yechuvchisini o‘zinikiga almashtiradi, split-DNS mijozi esa qidiruv domenlari va shartli yo‘naltiruvchilarni qo‘shadi. Ichki nomlar ko‘pincha aynan shu split-DNS konfiguratsiyasiga bog‘liq, shuning uchun ulangan holda xost nima ishlatishini ko‘ring: yechuvchi manzili, qidiruv domeni va ichki zona korporativ DNS ga yo‘naltirilganmi. Ommaviy nomlarga javob berib, ichki nomlarga bermaydigan yechuvchi siyosat masalasi, buzilgan tunnel emas.
Ba’zi korporativ mijozlar virtual adapterlardan keladigan trafikni ham to‘sadi. Filtr drayveri uchun emulyator virtual adapterga o‘xshaydi, shuning uchun xost mukammal ishlab turishi mumkin, siyosat esa emulyatorni rad etadi. Bu siyosat ish stantsiyasidan ko‘rinmaydi, proksi sozlamalarini taxmin qilish uni oshkor qilmaydi. Xost yechsa-yu, sozlamalardan qat’i nazar emulyator to‘silgan bo‘lsa, to‘g‘ri eskalatsiya mijoz siyosatiga ega jamoaga.
Tekshirishlar tartibi va har bir natijaning ma’nosi
Yuqoridan pastga ishlang va birinchi muvaffaqiyatsiz qatorda to‘xtang. Har bir natija boshqa egaga ishora qiladi va hech biri Android Studio ni qayta o‘rnatish bilan tuzatilmaydi.
| 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 |
Oddiy ma’noda faqat oxirgi ikki qator VPN savollari, va faqat oxirgisi DNS mazmuni haqida. adb hujjatlari server porti va bu yerda tilga olingan muhit o‘zgaruvchilarini qamrab oladi, qolganini sinaganda tashish tomonini halol saqlash uchun yetarli.