Povežete uredski VPN i Android Studio izgubi pokrenuti emulator, adb start-server se zaglavi, a fizički telefon na Wi-Fi-ju ispadne iz popisa uređaja. Izgleda kao da jedan tunel blokira jedan proizvod. U praksi padaju tri odvojena puta na tri načina: ADB otkrivanje uređaja, virtualna mreža emulatora i resolver hosta. Tunel obično posjeduje samo zadnji, i to često tek dio njega.

Tri socketa, tri vlasnika

adb server sluša na portu 5037 na hostu i razgovara s uređajima preko USB-a ili TCP-a, a za mrežno otkrivanje koristi mDNS. Emulator radi iza vlastitog virtualnog usmjerivača: gost je 10.0.2.15, gateway je 10.0.2.2, a DNS server 10.0.2.3, i sve to proces emulatora prevodi u sockete hosta. Resolver hosta je mjesto gdje VPN klijent instalira DNS i domene pretraživanja.

To razdvajanje objašnjava zašto ispravak radi za jedan alat, a ne za drugi. Klijent koji mijenja resolver hosta ostavlja pokrenuti proces emulatora sa stanjem resolvera koje je pročitao pri pokretanju. Klijent koji filtrira multicast kvari otkrivanje bez diranja DNS-a. Klijent koji filtrira virtualne adaptere odbija emulator dok preglednik hosta nastavlja raditi. Svaki simptom ima drugi uzrok, zato identificirajte put koji pada prije nego promijenite bilo koju postavku.

Počnite s onim što adb vidi

Pokrenite adb devices prije nego dirate VPN. Prazan popis je problem prijenosa, ne usmjeravanja, i nijedna postavka tunela neće popraviti uređaj koji server nikad nije naveo. Restartajte server čisto: prvo adb kill-server zatim adb start-server, i pročitajte izlaz da vidite koji je port zauzeo. Ako se samo pokretanje blokira, mDNS otkrivanje je uobičajeni osumnjičenik na mreži koja filtrira multicast; dokumentirani zaobilazni put je pokrenuti server s isključenim otkrivanjem:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Za fizički uređaj USB je najkraći put. Ako treba TCP, stavite uređaj u način slušanja s adb tcpip 5555 i povežite se na adresu i port uređaja, adb connect 192.0.2.10:5555. Port 5037 je port servera na hostu, a ne port na kojem uređaj sluša.

Testirajte emulator iznutra

Emulator odgovara na DNS s 10.0.2.3, a taj resolver hrani proces hosta. Kad VPN klijent promijeni resolver hosta, emulator ga može naslijediti; kad klijent filtrira proces emulatora ili se popis adaptera hosta promijeni nakon pokretanja emulatora, ne može. Razdvojite to numeričkim ciljem i imenom iz iste ljuske. adb shell ping -c 2 10.0.2.2 dokazuje da virtualna mreža može doći do strane hosta. Pretraga imena nakon toga pokazuje je li razrješenje prešlo granicu.

Zatim pokrenite istu pretragu imena na hostu. Host razrješava, a emulator ne znači da je prekid između resolvera hosta i virtualne mreže emulatora, a ne u tunelu. Oba padaju znači da treba gledati resolver hosta. Restart emulatora nakon povezivanja VPN-a vrijedi jednog pokušaja, jer neki klijenti instaliraju stanje resolvera koje pokrenuti proces emulatora ne preuzima.

Provjerite resolver hosta i filtre klijenta

Klijent punog tunela zamjenjuje resolver hosta svojim, a split-DNS klijent dodaje domene pretraživanja i uvjetne prosljeđivače. Interna imena često ovise o toj split-DNS konfiguraciji, zato pogledajte što host koristi dok je povezan: adresu resolvera, domenu pretraživanja i je li interna zona usmjerena na korporativni DNS. Resolver koji odgovara na javna, ali ne na interna imena pitanje je politike, a ne pokvaren tunel.

Neki korporativni klijenti blokiraju i promet s virtualnih adaptera. Za filtarskog pokretača emulator izgleda kao virtualni adapter, pa host može raditi besprijekorno dok je emulator odbijen politikom. Ta politika nije vidljiva s radne stanice, a nagađanje o proxy postavkama je neće otkriti. Ako host razrješava, a emulator je blokiran bez obzira na postavke resolvera, ispravna eskalacija je timu koji posjeduje politiku klijenta.

Redoslijed provjera i što znači svaki rezultat

Radite odozgo prema dolje i zaustavite se na prvom retku koji padne. Svaki rezultat pokazuje na drugog vlasnika i nijedan se ne rješava ponovnom instalacijom Android Studija.

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 su zadnja dva retka VPN pitanja u uobičajenom smislu, a samo zadnji govori o sadržaju DNS-a. adb dokumentacija pokriva port servera i ovdje navedene varijable okruženja, što je dovoljno da strana prijenosa ostane iskrena dok testirate ostalo.

Povezani članci