Csatlakozik az irodai VPN-hez, és az Android Studio elveszíti a futó emulátort, az adb start-server lefagy, egy Wi-Fi-s fizikai telefon pedig kiesik az eszközlistából. Úgy tűnik, mintha egy alagút blokkolna egy terméket. A gyakorlatban három külön útvonal hibázik három módon: az adb eszközfelderítése, az emulátor virtuális hálózata és a gazdagép feloldója. Az alagút általában csak az utolsót birtokolja, és gyakran csak annak egy részét.

Három socket, három tulajdonos

Az adb-kiszolgáló az 5037-es porton figyel a gazdagépen, és USB-n vagy TCP-n keresztül beszél az eszközökkel, hálózati felderítésre mDNS-t használ. Az emulátor a saját virtuális routere mögött fut: a vendég 10.0.2.15, a gateway 10.0.2.2, a DNS-kiszolgáló pedig 10.0.2.3, és mindezt az emulátor folyamata a gazdagép socketjeivé fordítja. A gazdagép feloldója az a hely, ahol a VPN-kliens a DNS-t és a keresési tartományokat telepíti.

Ez a szétválasztás magyarázza, miért tűnik úgy, hogy egy javítás az egyik eszköznél működik, a másiknál nem. Az a kliens, amely megváltoztatja a gazdagép feloldóját, a futó emulátorfolyamatot az induláskor olvasott feloldóállapottal hagyja. Az multicastot szűrő kliens a DNS érintése nélkül töri el a felderítést. A virtuális adaptereket szűrő kliens megtagadja az emulátort, miközben a gazdagép böngészője tovább működik. Minden tünetnek más az oka, ezért azonosítsa a hibázó útvonalat, mielőtt bármit módosít.

Kezdje azzal, amit az adb lát

Futtassa a adb devices parancsot, mielőtt a VPN-hez nyúl. Az üres lista átviteli probléma, nem útvonalválasztási, és egyetlen alagút-beállítás sem javít meg egy eszközt, amelyet a kiszolgáló soha nem sorolt fel. Indítsa újra tisztán a kiszolgálót: először adb kill-server majd adb start-server, és olvassa ki, melyik portot foglalta el. Ha maga az indítás akad meg, multicastot szűrő hálózaton az mDNS-felderítés a szokásos gyanúsított; a dokumentált megoldás a kiszolgáló indítása kikapcsolt felderítéssel:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Fizikai eszköznél az USB a legrövidebb út. Ha TCP kell, tegye az eszközt figyelő módba ezzel: adb tcpip 5555, majd csatlakozzon az eszköz címéhez és portjához: adb connect 192.0.2.10:5555. Az 5037-es port a gazdagép kiszolgálóportja, nem az a port, amelyen egy eszköz figyel.

Vizsgálja az emulátort belülről

Az emulátor a 10.0.2.3-ról válaszol DNS-re, és azt a feloldót a gazdagép folyamata táplálja. Amikor a VPN-kliens megváltoztatja a gazdagép feloldóját, az emulátor örökölheti; amikor a kliens szűri az emulátorfolyamatot, vagy az indulás után megváltozik a gazdagép adapterlistája, nem tudja. Válassza szét a kettőt egy numerikus céllal és egy névvel, ugyanabból a shellből. adb shell ping -c 2 10.0.2.2 bizonyítja, hogy a virtuális hálózat eléri a gazdagép oldalát. Az utána végzett névfeloldás megmutatja, átlépte-e a feloldás a határt.

Ezután futtassa ugyanazt a névkeresést a gazdagépen. Ha a gazdagép feloldja és az emulátor nem, a törés a gazdagép feloldója és az emulátor virtuális hálózata között van, nem az alagútban. Ha mindkettő hibázik, a gazdagép feloldóját kell nézni. Az emulátor újraindítása a VPN csatlakozása után egy próbát megér, mert egyes kliensek olyan feloldóállapotot telepítenek, amelyet egy futó emulátorfolyamat nem vesz át.

Ellenőrizze a gazdagép feloldóját és a kliens szűrőit

A teljes alagút kliense a sajátjára cseréli a gazdagép feloldóját, a split-DNS kliens pedig keresési tartományokat és feltételes továbbítókat ad hozzá. A belső nevek gyakran épp ettől a split-DNS konfigurációtól függenek, ezért nézze meg, mit használ a gazdagép kapcsolódva: a feloldó címét, a keresési tartományt és azt, hogy a belső zóna a vállalati DNS felé van-e irányítva. Az a feloldó, amely nyilvános nevekre válaszol, belsőkre nem, házirend-kérdés, nem törött alagút.

Egyes vállalati kliensek a virtuális adapterek forgalmát is blokkolják. Egy szűrő-illesztőprogram számára az emulátor virtuális adapternek látszik, így a gazdagép tökéletesen működhet, miközben a házirend megtagadja az emulátort. Ez a házirend a munkaállomásról nem látható, és a proxybeállítások találgatása nem tárja fel. Ha a gazdagép felold, az emulátor pedig a feloldóbeállításoktól függetlenül blokkolt, a helyes eszkaláció a kliensházirendet birtokló csapathoz szól.

Az ellenőrzések sorrendje és mit jelent minden eredmény

Haladjon fentről lefelé, és álljon meg az első hibázó sornál. Minden eredmény más tulajdonosra mutat, és egyiket sem javítja meg az Android Studio újratelepítése.

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

Csak az utolsó két sor VPN-kérdés a szokásos értelemben, és csak az utolsó szól a DNS tartalmáról. Az adb dokumentációja lefedi a kiszolgáló portját és az itt említett környezeti változókat, ami elég ahhoz, hogy az átviteli oldal tisztességes maradjon a többi tesztelése közben.

Kapcsolódó cikkek