Ofis VPN ine bağlanırsınız ve Android Studio çalışan emülatörü kaybeder, adb start-server askıda kalır, Wi-Fi daki fiziksel telefon cihaz listesinden düşer. Tek bir tünel tek bir ürünü engelliyor gibi görünür. Gerçekte üç ayrı yol üç farklı şekilde başarısız olur: adb cihaz keşfi, emülatörün sanal ağı ve ana makinenin çözümleyicisi. Tünel genellikle yalnızca sonuncusuna sahiptir ve çoğu zaman onun bir kısmına.

Üç soket, üç sahip

adb sunucusu ana makinede 5037 portunu dinler ve cihazlarla USB veya TCP üzerinden konuşur, ağ keşfi için mDNS kullanır. Emülatör kendi sanal yönlendiricisinin arkasında çalışır: konuk 10.0.2.15, ağ geçidi 10.0.2.2 ve DNS sunucusu 10.0.2.3 tür, emülatör süreci bunların hepsini ana makinenin soketlerine çevirir. Ana makinenin çözümleyicisi VPN istemcisinin DNS ve arama alan adlarını kurduğu yerdir.

Bu ayrım bir düzeltmenin bir araçta işe yarayıp diğerinde yaramamasını açıklar. Ana makinenin çözümleyicisini değiştiren istemci, çalışan emülatör sürecini başlangıçta okuduğu çözümleyici durumuyla bırakır. multicast filtreleyen istemci DNS e dokunmadan keşfi bozar. Sanal bağdaştırıcıları filtreleyen istemci, ana makinenin tarayıcısı çalışmaya devam ederken emülatörü reddeder. Her belirtinin nedeni farklıdır, bu yüzden herhangi bir ayarı değiştirmeden önce başarısız yolu belirleyin.

adb nin görebildiğiyle başlayın

VPN e dokunmadan önce adb devices çalıştırın. Boş liste bir taşıma sorunudur, yönlendirme değil, ve sunucunun hiç listelemediği bir cihazı hiçbir tünel ayarı düzeltmez. Sunucuyu temiz şekilde yeniden başlatın: önce adb kill-server sonra adb start-server, ve hangi portu tuttuğunu görmek için çıktıyı okuyun. Başlatmanın kendisi askıda kalırsa, multicast filtreleyen ağda mDNS keşfi olağan şüphelidir; belgelenen çözüm sunucuyu keşif kapalı başlatmaktır:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Fiziksel cihaz için USB en kısa yoldur. TCP gerekiyorsa cihazı adb tcpip 5555 ile dinleme kipine alın ve cihazın adresine ve portuna bağlanın, adb connect 192.0.2.10:5555. 5037 portu ana makinenin sunucu portudur, cihazın dinlediği port değil.

Emülatörü içeriden test edin

Emülatör DNS e 10.0.2.3 ten yanıt verir ve bu çözümleyiciyi ana makinenin süreci besler. VPN istemcisi ana makinenin çözümleyicisini değiştirdiğinde emülatör onu devralabilir; istemci emülatör sürecini filtrelediğinde veya başlangıçtan sonra ana makinenin bağdaştırıcı listesi değiştiğinde devralamaz. İkisini aynı shell den sayısal hedef ve adla ayırın. adb shell ping -c 2 10.0.2.2 sanal ağın ana makine tarafına ulaştığını kanıtlar. Sonraki ad araması çözümlemenin sınırı geçip geçmediğini gösterir.

Ardından aynı ad aramasını ana makinede çalıştırın. Ana makine çözer ve emülatör çözmezse kopukluk ana makinenin çözümleyicisi ile emülatörün sanal ağı arasındadır, tünelde değil. İkisi de başarısızsa bakılacak yer ana makinenin çözümleyicisidir. VPN bağlandıktan sonra emülatörü yeniden başlatmak bir denemeye değer, çünkü bazı istemciler çalışan emülatör sürecinin almadığı bir çözümleyici durumu kurar.

Ana makinenin çözümleyicisini ve istemci filtrelerini kontrol edin

Tam tünel istemcisi ana makinenin çözümleyicisini kendi çözümleyicisiyle değiştirir, split-DNS istemcisi arama alan adları ve koşullu yönlendiriciler ekler. İç adlar genellikle o split-DNS yapılandırmasına bağlıdır, bu yüzden bağlıyken ana makinenin ne kullandığına bakın: çözümleyici adresi, arama alan adı ve iç bölgenin kurumsal DNS e yönlendirilip yönlendirilmediği. Genel adlara yanıt verip iç adlara vermeyen çözümleyici bir ilke sorunudur, bozuk tünel değil.

Bazı kurumsal istemciler sanal bağdaştırıcılardan gelen trafiği de engeller. Filtre sürücüsü için emülatör sanal bağdaştırıcı gibi görünür, bu yüzden ana makine kusursuz çalışırken ilke emülatörü reddedebilir. Bu ilke iş istasyonundan görünmez ve proxy ayarlarını tahmin etmek onu açığa çıkarmaz. Ana makine çözüyor ve emülatör ayarlardan bağımsız olarak engelliyse doğru yükseltme istemci ilkesine sahip ekibedir.

Kontrollerin sırası ve her sonucun anlamı

Yukarıdan aşağı çalışın ve başarısız olan ilk satırda durun. Her sonuç farklı bir sahibi gösterir ve hiçbiri Android Studio yu yeniden kurmakla düzelmez.

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

Yalnızca son iki satır olağan anlamda VPN sorularıdır ve yalnızca sonuncusu DNS içeriğiyle ilgilidir. adb belgeleri sunucu portunu ve burada adı geçen ortam değişkenlerini kapsar; geri kalanı test ederken taşıma tarafını dürüst tutmaya yeter.

İlgili makaleler