Kumokonekta ka sa VPN ng opisina at nawawala ng Android Studio ang tumatakbong emulator, bumabara ang adb start-server, at ang pisikal na telepono sa Wi-Fi ay nahuhulog sa listahan ng mga device. Mukhang isang tunel ang humaharang sa isang produkto. Sa totoo, tatlong magkakaibang landas ang nabibigo sa tatlong paraan: ang pagtuklas ng device ng adb, ang virtual na network ng emulator at ang resolver ng host. Karaniwang ang tunel lang ang may-ari ng huli, at madalas bahagi lang nito.

Tatlong socket, tatlong may-ari

Nakikinig ang adb server sa port 5037 ng host at nakikipag-usap sa mga device sa USB o TCP, gamit ang mDNS para sa pagtuklas sa network. Tumatakbo ang emulator sa likod ng sarili nitong virtual router: ang guest ay 10.0.2.15, ang gateway ay 10.0.2.2 at ang DNS server ay 10.0.2.3, at isinasalin ng proseso ng emulator ang lahat sa socket ng host. Ang resolver ng host ang lugar kung saan nag-i-install ang VPN client ng DNS at mga domain sa paghahanap.

Ipinapaliwanag ng paghahating iyon kung bakit may tila gumaganang pagwawasto sa isang tool at wala sa iba. Ang client na nagbabago ng resolver ng host ay nag-iiwan ng tumatakbong proseso ng emulator na may estado ng resolver na binasa nito sa pagsisimula. Ang client na nag-filter ng multicast ay sumisira sa pagtuklas nang hindi hinahawakan ang DNS. Ang client na nag-filter ng virtual adapter ay tumatanggi sa emulator habang gumagana pa rin ang browser ng host. May iba’t ibang dahilan ang bawat sintomas, kaya tukuyin ang nabibigong landas bago baguhin ang anumang setting.

Magsimula sa nakikita ng adb

Patakbuhin ang adb devices bago hawakan ang VPN. Ang walang laman na listahan ay problema sa transportasyon, hindi sa routing, at walang setting ng tunel ang makakapagpatino ng device na hindi kailanman inilista ng server. I-restart ang server nang malinis: una adb kill-server pagkatapos adb start-server, at basahin ang output upang makita kung aling port ang kinuha nito. Kung ang pagsisimula mismo ay bumabara, ang pagtuklas ng mDNS ang karaniwang pinaghihinalaan sa network na nag-filter ng multicast; ang nakadokumentong solusyon ay simulan ang server na patay ang pagtuklas:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Para sa pisikal na device, ang USB ang pinakamaikling landas. Kung kailangan mo ng TCP, ilagay ang device sa listening mode gamit ang adb tcpip 5555 at kumonekta sa address at port ng device, adb connect 192.0.2.10:5555. Ang port 5037 ay port ng server ng host, hindi ang port na pinakikinggan ng device.

Subukan ang emulator mula sa loob

Sumasagot ang emulator sa DNS mula sa 10.0.2.3, at ang resolver na iyon ay pinapakain ng proseso ng host. Kapag binago ng VPN client ang resolver ng host, maaaring mamana ito ng emulator; kapag ang client ay nag-filter sa proseso ng emulator o nagbago ang listahan ng adapter ng host pagkatapos magsimula, hindi nito kaya. Paghiwalayin ang dalawa gamit ang numeric na target at pangalan mula sa parehong shell. adb shell ping -c 2 10.0.2.2 pinatutunayan na naaabot ng virtual na network ang panig ng host. Ang paghahanap ng pangalan pagkatapos ay nagsasabi kung tumawid ang resolution sa hangganan.

Pagkatapos patakbuhin ang parehong paghahanap ng pangalan sa host. Nalulutas ng host at hindi ng emulator ay nangangahulugang ang pagkaputol ay nasa pagitan ng resolver ng host at ng virtual na network ng emulator, hindi sa tunel. Parehong nabigo ay nangangahulugang ang resolver ng host ang lugar na titingnan. Sulit ang isang pagsubok na i-restart ang emulator pagkatapos kumonekta ang VPN, dahil may mga client na nag-i-install ng estado ng resolver na hindi nakukuha ng tumatakbong proseso ng emulator.

Suriin ang resolver ng host at ang mga filter ng client

Pinapalitan ng full-tunnel client ang resolver ng host ng sarili nito, at ang split-DNS client ay nagdadagdag ng mga domain sa paghahanap at conditional forwarder. Madalas nakadepende ang mga panloob na pangalan sa configuration na iyon ng split-DNS, kaya tingnan kung ano ang ginagamit ng host habang konektado: ang address ng resolver, ang domain sa paghahanap at kung ang panloob na zone ay naka-route sa corporate DNS. Ang resolver na sumasagot sa pampublikong pangalan ngunit hindi sa panloob ay usapin ng patakaran, hindi sirang tunel.

May mga corporate client na humaharang din sa trapiko mula sa virtual adapter. Para sa filter driver, mukhang virtual adapter ang emulator, kaya maaaring gumana nang perpekto ang host habang tinatanggihan ng patakaran ang emulator. Hindi nakikita ang patakarang iyon mula sa workstation, at hindi ito ilalantad ng paghula sa mga setting ng proxy. Kung nagre-resolve ang host at naka-block ang emulator anuman ang mga setting, ang tamang escalation ay sa team na may-ari ng patakaran ng client.

Pagkakasunod-sunod ng mga pagsusuri at kahulugan ng bawat resulta

Magtrabaho mula sa itaas pababa at huminto sa unang hanay na nabigo. Bawat resulta ay tumuturo sa ibang may-ari, at wala sa kanila ang naaayos sa pamamagitan ng muling pag-install ng 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

Ang huling dalawang hanay lang ang mga tanong tungkol sa VPN sa karaniwang kahulugan, at ang huli lang ang tungkol sa nilalaman ng DNS. Ang dokumentasyon ng adb ay sumasaklaw sa port ng server at sa mga environment variable na binanggit dito, sapat upang panatilihing tapat ang panig ng transportasyon habang sinusubukan mo ang iba.

Kaugnay na mga artikulo