Vi konektas la oficejan VPN kaj Android Studio perdas la kurantan emulatoron, adb start-server haltas, kaj fizika telefono en Wi-Fi falas el la aparatlisto. Ŝajnas, ke unu tunelo blokas unu produkton. Fakte tri apartaj vojoj malsukcesas triamaniere: ADB-aparata malkovro, la virtuala reto de la emulatoro kaj la solvilo de la gastiganto. La tunelo kutime posedas nur la lastan, kaj ofte nur parton de ĝi.

Tri ingoj, tri posedantoj

La adb-servilo aŭskultas sur pordo 5037 ĉe la gastiganto kaj parolas kun aparatoj per USB aŭ TCP, kun mDNS por reta malkovro. La emulatoro funkcias malantaŭ propra virtuala enkursigilo: la gasto estas 10.0.2.15, ĝia enirejo estas 10.0.2.2 kaj ĝia DNS-servilo estas 10.0.2.3, kaj la emulatora procezo tradukas ĉion al ingoj de la gastiganto. La solvilo de la gastiganto estas la loko, kie la VPN-kliento instalas DNS kaj serĉajn domajnojn.

Tiu disigo klarigas, kial riparo ŝajne funkcias por unu ilo kaj ne por alia. Kliento, kiu ŝanĝas la solvilon de la gastiganto, lasas la kurantan emulatoran procezon kun la solvila stato, kiun ĝi legis ĉe lanĉo. Kliento, kiu filtras multicast, rompas la malkovron sen tuŝi DNS. Kliento, kiu filtras virtualajn adaptilojn, rifuzas la emulatoron dum la retumilo de la gastiganto daŭre funkcias. Ĉiu simptomo havas alian kaŭzon, do identigu la malsukcesantan vojon antaŭ ol ŝanĝi ajnan agordon.

Komencu per tio, kion adb povas vidi

Rulu adb devices antaŭ ol tuŝi la VPN. Malplena listo estas transporta problemo, ne enkursiga, kaj neniu tunela agordo riparos aparaton, kiun la servilo neniam listigis. Restartigu la servilon pure: unue adb kill-server poste adb start-server, kaj legu la eligon por vidi, kiun pordon ĝi okupis. Se la lanĉo mem haltas, mDNS-malkovro estas la kutima suspektato en reto, kiu filtras multicast; la dokumentita solvo estas lanĉi la servilon kun malkovro malŝaltita:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Por fizika aparato USB estas la plej mallonga vojo. Se vi bezonas TCP, metu la aparaton en aŭskultan reĝimon per adb tcpip 5555 kaj konektu al la aparata adreso kaj pordo, adb connect 192.0.2.10:5555. Pordo 5037 estas la servila pordo de la gastiganto, ne la pordo, sur kiu aparato aŭskultas.

Testu la emulatoron de interne

La emulatoro respondas DNS el 10.0.2.3, kaj tiun solvilon nutras la procezo de la gastiganto. Kiam la VPN-kliento ŝanĝas la solvilon de la gastiganto, la emulatoro povas heredi ĝin; kiam la kliento filtras la emulatoran procezon aŭ la adaptila listo de la gastiganto ŝanĝiĝas post la lanĉo, ĝi ne povas. Apartigu la du per numera celo kaj nomo el la sama ŝelo. adb shell ping -c 2 10.0.2.2 pruvas, ke la virtuala reto atingas la flankon de la gastiganto. Nomserĉo poste montras, ĉu la solvo transiris la limon.

Poste rulu la saman nomserĉon ĉe la gastiganto. Ke la gastiganto solvas kaj la emulatoro ne signifas, ke la rompo estas inter la solvilo de la gastiganto kaj la virtuala reto de la emulatoro, ne en la tunelo. Ke ambaŭ malsukcesas signifas, ke la solvilo estas la loko por rigardi. Restartigi la emulatoron post konekto de VPN indas unu provon, ĉar iuj klientoj instalas solvilan staton, kiun kuranta emulatora procezo neniam prenas.

Kontrolu la solvilon de la gastiganto kaj la klientajn filtrilojn

Plentunela kliento anstataŭigas la solvilon de la gastiganto per sia propra, kaj split-DNS-kliento aldonas serĉajn domajnojn kaj kondiĉajn plusendilojn. Internaj nomoj ofte dependas de tiu split-DNS-agordo, do rigardu, kion la gastiganto uzas dum konekto: la solvilan adreson, la serĉan domajnon kaj ĉu la interna zono estas enkursigita al la entreprena DNS. Solvilo, kiu respondas publikajn sed ne internajn nomojn, estas politika demando, ne rompita tunelo.

Iuj entreprenaj klientoj ankaŭ blokas trafikon de virtualaj adaptiloj. Por filtra pelilo la emulatoro aspektas kiel virtuala adaptilo, do la gastiganto povas funkcii perfekte dum la emulatoro estas rifuzata de politiko. Tiu politiko ne videblas de la laborejo, kaj divenado de proksimumaj agordoj ne malkovros ĝin. Se la gastiganto solvas kaj la emulatoro restas blokita sendepende de solvilaj agordoj, la ĝusta eskalo estas al la teamo, kiu posedas la klientan politikon.

Ordo de kontroloj kaj kion signifas ĉiu rezulto

Laboru de supre malsupren kaj haltu ĉe la unua malsukcesa vico. Ĉiu rezulto montras al alia posedanto, kaj neniu estas riparita per reinstalo de Android Studio.

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

Nur la lastaj du vicoj estas VPN-demandoj en la kutima senco, kaj nur la lasta temas pri DNS-enhavo. La adb-dokumentaro kovras la servilan pordon kaj la ĉi tie nomitajn mediovariablojn, sufiĉe por teni la transportan flankon honesta dum vi testas la ceteron.

Rilataj artikoloj