Ühendate kontori VPN-i ja Android Studio kaotab töötava emulaatori, adb start-server jääb kinni ning Wi-Fi-s olev füüsiline telefon kaob seadmete loendist. Tundub, et üks tunnel blokeerib ühte toodet. Tegelikult ebaõnnestuvad kolm eraldi teed kolmel erineval viisil: adb seadmete avastamine, emulaatori virtuaalne võrk ja hosti resolver. Tunnelil on tavaliselt ainult viimane, ja sageli ainult osa sellest.

Kolm soklit, kolm omanikku

adb server kuulab hostis porti 5037 ja räägib seadmetega USB või TCP kaudu, võrguavastuseks kasutab mDNS-i. Emulaator töötab oma virtuaalse ruuteri taga: külaline on 10.0.2.15, lüüs 10.0.2.2 ja DNS-server 10.0.2.3 ning emulaatori protsess tõlgib selle kõik hosti sokliteks. Hosti resolver on koht, kuhu VPN-klient paigaldab DNS-i ja otsingudomeenid.

See eraldus selgitab, miks parandus näib ühe tööriista puhul toimivat ja teise puhul mitte. Hosti resolverit muutev klient jätab töötava emulaatori protsessi alguses loetud resolveri olekuga. Multicasti filtreeriv klient rikub avastamise ilma DNS-i puutumata. Virtuaalseid adaptereid filtreeriv klient keelab emulaatori, samal ajal kui hosti brauser töötab edasi. Igal sümptomil on eri põhjus, seega tuvastage nurjuv tee enne mis tahes sätte muutmist.

Alustage sellest, mida adb näeb

Käivitage adb devices enne VPN-i puutumist. Tühi loend on transpordi, mitte marsruutimise probleem, ja ükski tunneli säte ei paranda seadet, mida server kunagi loetlenud pole. Taaskäivitage server puhtalt: esmalt adb kill-server seejärel adb start-server, ja lugege väljundist, millise pordi see hõivas. Kui käivitamine ise kinni jääb, on multicast-filtreerivas võrgus tavaline kahtlane mDNS-avastus; dokumenteeritud lahendus on käivitada server avastamine välja lülitatud:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Füüsilise seadme jaoks on USB lühim tee. Kui vajate TCP-d, lülitage seade kuulamisrežiimi käsuga adb tcpip 5555 ja ühenduge seadme aadressi ja pordiga, adb connect 192.0.2.10:5555. Port 5037 on hosti serveri port, mitte port, millel seade kuulab.

Testige emulaatorit seestpoolt

Emulaator vastab DNS-i 10.0.2.3-lt ja seda resolverit toidab hosti protsess. Kui VPN-klient muudab hosti resolverit, võib emulaator selle pärida; kui klient filtreerib emulaatori protsessi või hosti adapteriloend muutub pärast emulaatori käivitamist, ei saa. Eraldage need numbrilise sihtmärgi ja nimega samast shellist. adb shell ping -c 2 10.0.2.2 tõestab, et virtuaalne võrk jõuab hosti poolele. Järgnev nimeotsing näitab, kas lahendus ületas piiri.

Seejärel käivitage sama nimeotsing hostis. Host lahendab ja emulaator mitte tähendab, et katkestus on hosti resolveri ja emulaatori virtuaalvõrgu vahel, mitte tunnelis. Mõlemad ebaõnnestuvad tähendab, et vaadata tuleb hosti resolverit. Emulaatori taaskäivitamine pärast VPN-i ühendamist tasub ühte katset, sest mõned kliendid paigaldavad resolveri oleku, mida töötav emulaatoriprotsess ei võta.

Kontrollige hosti resolverit ja kliendi filtreid

Täistunneli klient asendab hosti resolveri omaga ja split-DNS klient lisab otsingudomeenid ja tingimuslikud edastajad. Sise nimed sõltuvad sageli just sellest split-DNS seadistusest, seega vaadake, mida host ühendatud olekus kasutab: resolveri aadress, otsingudomeen ja kas sisemine tsoon marsruutitakse ettevõtte DNS-i. Resolver, mis vastab avalikele, kuid mitte sisemistele nimedele, on poliitika küsimus, mitte katki tunnel.

Mõned ettevõtte kliendid blokeerivad ka virtuaalsete adapterite liiklust. Filtri draiveri jaoks näeb emulaator välja nagu virtuaalne adapter, seega võib host töötada laitmatult, samal ajal kui poliitika keelab emulaatori. See poliitika ei ole tööjaamast nähtav ja proxy seadete oletamine ei paljasta seda. Kui host lahendab ja emulaator on blokeeritud sõltumata resolveri seadetest, on õige eskaleerimine kliendipoliitika omanikule.

Kontrollide järjekord ja mida iga tulemus tähendab

Töötage ülalt alla ja peatuge esimesel nurjuval real. Iga tulemus osutab eri omanikule ja ükski ei parane Android Studio uuesti paigaldamisega.

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

Ainult kaks viimast rida on VPN-i küsimused tavapärases mõttes ja ainult viimane puudutab DNS-i sisu. adb dokumentatsioon katab serveri pordi ja siin nimetatud keskkonnamuutujad, millest piisab transpordipoole ausana hoidmiseks ülejäänu testimisel.

Seotud artiklid