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

Tri soketa, 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 virtuelnog rutera: 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 sokete hosta. Host resolver je mjesto gdje VPN klijent instalira DNS i domene pretrage.

To razdvajanje objašnjava zašto ispravka radi za jedan alat, a ne za drugi. Klijent koji mijenja host resolver 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 virtuelne 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. Prazna lista je problem prijenosa, ne rutiranja, i nijedna postavka tunela neće popraviti uređaj koji server nikad nije nabrojao. Restartujte 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čeni na mreži koja filtrira multicast; dokumentovani 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 host resolver, emulator ga može naslijediti; kad klijent filtrira proces emulatora ili se lista 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 virtuelna 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 host resolvera i virtuelne mreže emulatora, a ne u tunelu. Oba padaju znači da treba gledati host resolver. Restartovanje emulatora nakon povezivanja VPN-a vrijedi jednog pokušaja, jer neki klijenti instaliraju stanje resolvera koje pokrenuti proces emulatora ne preuzima.

Provjerite host resolver i filtere klijenta

Klijent punog tunela zamjenjuje host resolver svojim, a split-DNS klijent dodaje domene pretrage i uslovne prosljeđivače. Interna imena često zavise od te split-DNS konfiguracije, zato pogledajte što host koristi dok je povezan: adresu resolvera, domen pretrage i da li je interna zona rutirana na korporativni DNS. Resolver koji odgovara na javna, ali ne na interna imena je pitanje politike, a ne pokvaren tunel.

Neki korporativni klijenti blokiraju i saobraćaj s virtuelnih adaptera. Za filtarski drajver emulator izgleda kao virtuelni 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.

Red provjera i šta svaki rezultat znači

Radite odozgo prema dolje i zaustavite se na prvom redu koji padne. Svaki rezultat pokazuje na drugog vlasnika i nijedan se ne rješava reinstalacijom 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 reda 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