Du kobler til kontorets VPN, og Android Studio mister den kjørende emulatoren, adb start-server henger, og en fysisk telefon på Wi-Fi faller ut av enhetslisten. Det ser ut som om én tunnel blokkerer ett produkt. I praksis feiler tre separate veier på tre ulike måter: ADB-enhetsoppdagelse, emulatorens virtuelle nettverk og vertens resolver. Tunnelen eier vanligvis bare den siste, og ofte bare en del av den.

Tre sockets, tre eiere

adb-tjeneren lytter på port 5037 på verten og snakker med enheter over USB eller TCP, med mDNS for 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 oversetter alt til vertens sockets. Vertens resolver er stedet der VPN-klienten installerer DNS og søkedomener.

Den delingen forklarer hvorfor en rettelse ser ut til å virke for ett verktøy og 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 vertens nettleser fortsatt virker. Hvert symptom har sin egen årsak, så identifiser den feilende veien før du endrer en innstilling.

Start med det adb kan se

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

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

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

Test emulatoren innenfra

Emulatoren svarer på DNS fra 10.0.2.3, og den resolveren fôres av vertens prosess. Når VPN-klienten endrer vertens resolver, kan emulatoren arve den; når klienten filtrerer emulatorprosessen eller vertens adapterliste 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 beviser at det virtuelle nettverket når vertssiden. Et navneoppslag etterpå viser om oppslaget krysset grensen.

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

Kontroller vertens resolver og klientfiltre

En fulltunnelklient erstatter vertens resolver med sin egen, og en split-DNS-klient legger til søkedomener og betingede videresendere. Interne navn avhenger ofte av nettopp den 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 policy-spø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