ADB i Android emulator ne rade iza VPN-a: tri puta
ADB otkrivanje, virtuelna mrežna kartica emulatora i host resolver padaju odvojeno iza VPN-a. Testirajte svaki put po redu prije nego okrivite tunel.
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 devicesZa 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.
| Result | Likely owner | Next check |
|---|---|---|
| adb devices is empty with USB attached | USB, driver or adb server | cable, authorization prompt, adb kill-server |
| adb start-server hangs | mDNS discovery | ADB_MDNS_OPENSCREEN=0 |
| Emulator reaches 10.0.2.2, names fail | Host resolver to emulator boundary | host lookup of the same name |
| Host resolves, emulator still fails | Emulator process or client filter | restart emulator, ask IT about virtual adapters |
| Both fail for internal names only | Split DNS or search domain | resolver 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.