Du koplar til kontor-VPN-en, og Android Studio mistar den køyrande emulatoren, adb start-server heng, og ein fysisk telefon på Wi-Fi fell ut av eininglista. Det ser ut som om éin tunnel blokkerer eitt produkt. I praksis sviktar tre skilde vegar på tre ulike måtar: ADB-einingsoppdaging, det virtuelle nettverket til emulatoren og resolvaren til verten. Tunnelen eig vanlegvis berre den siste, og ofte berre ein del av han.

Tre socketar, tre eigarar

adb-tenaren lyttar på port 5037 på verten og snakkar med einingar over USB eller TCP, med mDNS for nettverksoppdaging. Emulatoren køyrer bak sin eigen virtuelle rutar: gjesten er 10.0.2.15, gatewayen er 10.0.2.2 og DNS-tenaren er 10.0.2.3, og emulatorprosessen omset alt til socketar hos verten. Resolvaren til verten er staden der VPN-klienten installerer DNS og søkjedomene.

Den delinga forklarar kvifor ei retting ser ut til å verke for eitt verktøy og ikkje for eit anna. Ein klient som endrar resolvaren til verten, lèt ein køyrande emulatorprosess behalde resolvertilstanden han las ved oppstart. Ein klient som filtrerer multicast, øydelegg oppdaginga utan å røre DNS. Ein klient som filtrerer virtuelle adapterar, avviser emulatoren medan nettlesaren til verten held fram. Kvart symptom har si eiga årsak, så identifiser den sviktande vegen før du endrar ei innstilling.

Start med det adb kan sjå

Køyr adb devices før du rører VPN-en. Ei tom liste er eit transportproblem, ikkje eit ruteproblem, og inga tunnelinnstilling reparerer ei eining tenaren aldri har lista. Start tenaren reint på nytt: først adb kill-server deretter adb start-server, og les utdata for å sjå kva port han tok. Om sjølve oppstarten heng, er mDNS-oppdaging den vanlege mistenkte på eit nettverk som filtrerer multicast; den dokumenterte løysinga er å starte tenaren med oppdaging slått av:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

For ei fysisk eining er USB den kortaste vegen. Treng du TCP, set eininga i lyttemodus med adb tcpip 5555 og kople til adressa og porten til eininga, adb connect 192.0.2.10:5555. Port 5037 er tenarporten til verten og ikkje porten ei eining lyttar på.

Test emulatoren innanfrå

Emulatoren svarar på DNS frå 10.0.2.3, og den resolvaren blir fødd av prosessen til verten. Når VPN-klienten endrar resolvaren til verten, kan emulatoren arve han; når klienten filtrerer emulatorprosessen eller adapterlista til verten endrar seg etter oppstart, kan han ikkje. Skil dei to med eit numerisk mål og eit namn frå same shell. adb shell ping -c 2 10.0.2.2 provar at det virtuelle nettverket når vertssida. Eit namneoppslag etterpå viser om oppslaget kryssa grensa.

Deretter køyrer du det same namneoppslaget på verten. Verten løyser opp og emulatoren ikkje betyr at brotet er mellom resolvaren til verten og det virtuelle nettverket til emulatoren, ikkje i tunnelen. Begge sviktar betyr at resolvaren til verten er staden å sjå. Å starte emulatoren på nytt etter VPN-tilkoplinga er eitt forsøk verd, fordi nokre klientar installerar ein resolvertilstand som ein køyrande emulatorprosess ikkje tek opp.

Kontroller resolvaren til verten og klientfiltra

Ein fulltunnelklient byter ut resolvaren til verten med sin eigen, og ein split-DNS-klient legg til søkjedomene og vilkårsvidaresendingar. Interne namn heng ofte av nettopp den split-DNS-konfigurasjonen, så sjå kva verten brukar medan du er tilkopla: resolveradressa, søkjedomenet og om den interne sona blir rutra til DNS-en til verksemda. Ein resolver som svarar på offentlege men ikkje interne namn, er eit policy-spørsmål, ikkje ein øydelagd tunnel.

Nokre verksemdklientar blokkerer òg trafikk frå virtuelle adapterar. For ein filterdrivar ser emulatoren ut som ein virtuell adapter, så verten kan fungere perfekt medan policyen avviser emulatoren. Den policyen er ikkje synleg frå arbeidsstasjonen, og gissing om proxyinnstillingar avdekkjer han ikkje. Om verten løyser opp og emulatoren er blokkert uansett resolverinnstillingar, er rett eskalering til teamet som eig klientpolicyen.

Rekkjefølgja av kontrollar og kva kvart resultat betyr

Arbeid ovanfrå og ned og stopp ved første rad som sviktar. Kvart resultat peikar på ein annan eigar, og ingen av dei blir løyste ved å installere Android Studio på nytt.

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

Berre dei to siste radene er VPN-spørsmål i vanleg tyding, og berre den siste handlar om DNS-innhald. adb-dokumentasjonen dekkjer tenarporten og miljøvariablane som er nemnde her, nok til å halde transportsida ærleg medan du testar resten.

Relaterte artiklar