Povežete pisarniški VPN in Android Studio izgubi delujoči emulator, adb start-server se ustavi, fizični telefon na Wi-Fi pa izpade s seznama naprav. Videti je, kot da en tunel blokira en izdelek. V resnici odpovedo tri ločene poti na tri načine: odkrivanje naprav prek adb, virtualno omrežje emulatorja in resolver gostitelja. Tunel običajno poseduje le zadnjo, in to pogosto le njen del.

Tri vtičnice, trije lastniki

Strežnik adb posluša na vratih 5037 na gostitelju in se pogovarja z napravami prek USB ali TCP, za omrežno odkrivanje uporablja mDNS. Emulator teče za svojim virtualnim usmerjevalnikom: gost je 10.0.2.15, prehod je 10.0.2.2 in strežnik DNS je 10.0.2.3, proces emulatorja pa vse to pretvori v vtičnice gostitelja. Resolver gostitelja je mesto, kjer odjemalec VPN namesti DNS in iskalne domene.

Ta ločitev pojasnjuje, zakaj popravek deluje pri enem orodju in ne pri drugem. Odjemalec, ki spremeni resolver gostitelja, pusti delujoč proces emulatorja s stanjem resolverja, ki ga je prebral ob zagonu. Odjemalec, ki filtrira multicast, pokvari odkrivanje, ne da bi se dotaknil DNS. Odjemalec, ki filtrira virtualne vmesnike, zavrne emulator, medtem ko brskalnik gostitelja še deluje. Vsak simptom ima svoj vzrok, zato pred spremembo nastavitve ugotovite, katera pot odpoveduje.

Začnite s tem, kar vidi adb

Zaženite adb devices preden se dotaknete VPN. Prazen seznam je težava prenosa, ne usmerjanja, in nobena nastavitev tunela ne bo popravila naprave, ki je strežnik nikoli ni naštel. Znova zaženite strežnik čisto: najprej adb kill-server nato adb start-server, in preberite izhod, da vidite, katera vrata je zasedel. Če se zatakne sam zagon, je odkrivanje mDNS običajni osumljenec v omrežju, ki filtrira multicast; dokumentirana rešitev je zagon strežnika z izklopljenim odkrivanjem:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Za fizično napravo je USB najkrajša pot. Če potrebujete TCP, prestavite napravo v način poslušanja z adb tcpip 5555 in se povežite na naslov in vrata naprave, adb connect 192.0.2.10:5555. Vrata 5037 so vrata strežnika gostitelja, ne vrata, na katerih posluša naprava.

Preizkusite emulator od znotraj

Emulator odgovarja na DNS z 10.0.2.3 in ta resolver napaja proces gostitelja. Ko odjemalec VPN spremeni resolver gostitelja, ga lahko emulator podeduje; ko odjemalec filtrira proces emulatorja ali se seznam vmesnikov gostitelja spremeni po zagonu, tega ne more. Ločite oba s številskim ciljem in imenom iz iste lupine. adb shell ping -c 2 10.0.2.2 dokazuje, da virtualno omrežje doseže stran gostitelja. Iskanje imena nato pokaže, ali je razrešitev prestopila mejo.

Nato zaženite isto iskanje imena na gostitelju. Gostitelj razreši in emulator ne pomeni, da je prelom med resolverjem gostitelja in virtualnim omrežjem emulatorja, ne v tunelu. Oba odpovedeta pomeni, da je treba pogledati resolver gostitelja. Ponovni zagon emulatorja po povezavi VPN je vreden enega poskusa, ker nekateri odjemalci namestijo stanje resolverja, ki ga delujoč proces emulatorja ne prevzame.

Preverite resolver gostitelja in filtre odjemalca

Odjemalec polnega tunela zamenja resolver gostitelja s svojim, odjemalec split-DNS pa doda iskalne domene in pogojne posredovalnike. Notranja imena so pogosto odvisna prav od te konfiguracije split-DNS, zato poglejte, kaj gostitelj uporablja med povezavo: naslov resolverja, iskalno domeno in ali je notranja cona usmerjena na korporativni DNS. Resolver, ki odgovarja na javna, ne pa na notranja imena, je vprašanje politike, ne pokvarjen tunel.

Nekateri korporativni odjemalci blokirajo tudi promet z virtualnih vmesnikov. Za filtrirni gonilnik je emulator videti kot virtualni vmesnik, zato lahko gostitelj deluje brezhibno, medtem ko politika zavrača emulator. Ta politika ni vidna z delovne postaje in ugibanje o nastavitvah posrednika je ne razkrije. Če gostitelj razreši in je emulator blokiran ne glede na nastavitve resolverja, je pravilna eskalacija ekipi, ki ima politiko odjemalca.

Vrstni red preverjanj in kaj pomeni vsak rezultat

Delajte od zgoraj navzdol in se ustavite pri prvi neuspešni vrstici. Vsak rezultat kaže na drugega lastnika in nobenega ne odpravi ponovna namestitev Android Studia.

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

Samo zadnji dve vrstici sta vprašanji o VPN v običajnem smislu, in samo zadnja o vsebini DNS. Dokumentacija adb pokriva vrata strežnika in tu navedene spremenljivke okolja, kar zadostuje, da prenosna stran ostane poštena, medtem ko preizkušate ostalo.

Sorodni članki