Поврзувате канцелариски 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.

ResultLikely ownerNext check
adb devices is empty with USB attachedUSB, driver or adb servercable, authorization prompt, adb kill-server
adb start-server hangsmDNS discoveryADB_MDNS_OPENSCREEN=0
Emulator reaches 10.0.2.2, names failHost resolver to emulator boundaryhost lookup of the same name
Host resolves, emulator still failsEmulator process or client filterrestart emulator, ask IT about virtual adapters
Both fail for internal names onlySplit DNS or search domainresolver and zone configuration

Само последните два реда се VPN прашања во вообичаена смисла, а само последниот е за содржината на DNS. Документацијата на adb ја покрива портата на серверот и променливите на околината споменати овде, доволно за да ја одржите транспортната страна чесна додека го тестирате остатокот.

Поврзани статии