Når du kobler til kontorets VPN, mister Android Studio den kjørende emulatoren, adb start-server henger, og en fysisk telefon på Wi-Fi forsvinner fra enhetslisten. Det virker som om én tunnel blokkerer ett produkt. Egentlig feiler tre atskilte veier på tre måter: ADB-enhetsoppdagelse, emulatorens virtuelle nettverk og vertens resolver. Tunnelen eier som regel bare den siste, og ofte bare en del av den.

Tre socketer, tre eiere

adb-tjeneren lytter på port 5037 på verten og kommuniserer med enheter over USB eller TCP, og bruker mDNS til nettverksoppdagelse. Emulatoren kjører bak sin egen virtuelle ruter: gjesten er 10.0.2.15, gatewayen er 10.0.2.2 og DNS-tjeneren er 10.0.2.3, og emulatorprosessen gjør alt om til socketer på verten. Vertens resolver er der VPN-klienten installerer DNS og søkedomener.

Denne delingen forklarer hvorfor en retting ser ut til å virke for ett verktøy, men ikke for et annet. En klient som endrer vertens resolver, lar en kjørende emulatorprosess beholde resolvertilstanden den leste ved oppstart. En klient som filtrerer multicast, ødelegger oppdagelsen uten å røre DNS. En klient som filtrerer virtuelle adaptere, avviser emulatoren mens nettleseren på verten fortsatt virker. Hvert symptom har en egen årsak, så finn den feilende veien før du endrer en innstilling.

Begynn med det adb ser

Kjør adb devices før du berører VPN-en. En tom liste er et transportproblem, ikke et ruteproblem, og ingen tunnelinnstilling reparerer en enhet tjeneren aldri har listet opp. Start tjeneren rent på nytt: først adb kill-server så adb start-server, og les utdataene for å se hvilken port den tok. Henger selve oppstarten, er mDNS-oppdagelse den vanlige mistenkte på et nettverk som filtrerer multicast; den dokumenterte løsningen er å starte tjeneren med oppdagelse avslått:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

For en fysisk enhet er USB den korteste veien. Trenger du TCP, setter du enheten i lyttemodus med adb tcpip 5555 og kobler til enhetens adresse og port, adb connect 192.0.2.10:5555. Port 5037 er vertens tjenerport, ikke porten en enhet lytter på.

Test emulatoren fra innsiden

Emulatoren svarer på DNS fra 10.0.2.3, og den resolveren får svar fra prosessen på verten. Når VPN-klienten endrer vertens resolver, kan emulatoren arve den; når klienten filtrerer emulatorprosessen eller adapterlisten på verten endres etter oppstart, kan den ikke. Skill de to med et numerisk mål og et navn fra samme shell. adb shell ping -c 2 10.0.2.2 viser at det virtuelle nettverket når vertssiden. Et navneoppslag etterpå viser om oppslaget krysset grensen.

Deretter kjører du samme navneoppslag på verten. At verten løser opp og emulatoren ikke, betyr at bruddet ligger mellom vertens resolver og emulatorens virtuelle nettverk, ikke i tunnelen. Feiler begge, er vertens resolver stedet å se. Å starte emulatoren på nytt etter VPN-tilkobling er ett forsøk verdt, fordi noen klienter installerer en resolvertilstand som en kjørende emulatorprosess ikke fanger opp.

Sjekk vertens resolver og klientfiltrene

En fulltunnelklient erstatter vertens resolver med sin egen, og en split-DNS-klient legger til søkedomener og betingede videresendinger. Interne navn avhenger ofte av nettopp denne split-DNS-konfigurasjonen, så se hva verten bruker mens du er tilkoblet: resolveradressen, søkedomenet og om den interne sonen rutes til bedriftens DNS. En resolver som svarer på offentlige, men ikke interne navn, er et policyspørsmål, ikke en ødelagt tunnel.

Noen bedriftsklienter blokkerer også trafikk fra virtuelle adaptere. For en filterdriver ser emulatoren ut som en virtuell adapter, så verten kan fungere perfekt mens policyen avviser emulatoren. Den policyen er ikke synlig fra arbeidsstasjonen, og gjetting på proxyinnstillinger avdekker den ikke. Hvis verten løser opp og emulatoren er blokkert uansett resolverinnstillinger, er riktig eskalering til teamet som eier klientpolicyen.

Rekkefølgen av kontroller og hva hvert resultat betyr

Arbeid ovenfra og ned, og stopp ved første rad som feiler. Hvert resultat peker på en annen eier, og ingen av dem løses 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

Bare de to siste radene er VPN-spørsmål i vanlig forstand, og bare den siste handler om DNS-innhold. adb-dokumentasjonen dekker tjenerporten og miljøvariablene som nevnes her, nok til å holde transportsiden ærlig mens du tester resten.

Relaterte artikler