ADB и емулатор Андроида не раде иза 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 види
Покрените adb devices пре него што дирате VPN. Празан списак је проблем преноса, не усмеравања, и ниједна поставка тунела неће поправити уређај који сервер никада није навео. Рестартујте сервер чисто: прво adb kill-server затим adb start-server, и прочитајте излаз да видите који је порт заузео. Ако се само покретање блокира, mDNS откривање је уобичајени осумњичени на мрежи која филтрира multicast; документовани заобилазни пут је покренути сервер са искљученим откривањем:
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 клијент промени резолвер хоста, емулатор га може наследити; кад клијент филтрира процес емулатора или се списак адаптера хоста промени после покретања емулатора, не може. Раздвојите то нумеричким циљем и именом из исте љуске. 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 документација покрива порт сервера и овде наведене променљиве окружења, што је довољно да страна преноса остане искрена док тестирате остало.