Anda menyambung VPN pejabat dan Android Studio kehilangan emulator yang sedang berjalan, adb start-server tergantung, dan telefon fizikal pada Wi-Fi tercicir daripada senarai peranti. Nampak seperti satu terowong menyekat satu produk. Sebenarnya tiga laluan berasingan gagal dengan tiga cara: penemuan peranti adb, rangkaian maya emulator dan penyelesai hos. Terowong biasanya hanya memiliki yang terakhir, dan selalunya hanya sebahagian daripadanya.

Tiga soket, tiga pemilik

Pelayan adb mendengar pada port 5037 pada hos dan bercakap dengan peranti melalui USB atau TCP, dengan mDNS untuk penemuan rangkaian. Emulator berjalan di belakang penghala mayanya sendiri: tetamu ialah 10.0.2.15, get laluan ialah 10.0.2.2 dan pelayan DNS ialah 10.0.2.3, dan proses emulator menterjemah semuanya kepada soket hos. Penyelesai hos ialah tempat klien VPN memasang DNS dan domain carian.

Pemisahan itu menjelaskan mengapa satu pembetulan kelihatan berkesan untuk satu alat dan tidak untuk yang lain. Klien yang menukar penyelesai hos meninggalkan proses emulator yang sedang berjalan dengan keadaan penyelesai yang dibacanya semasa mula. Klien yang menapis multicast merosakkan penemuan tanpa menyentuh DNS. Klien yang menapis penyesuai maya menolak emulator sementara pelayar hos terus berfungsi. Setiap gejala ada punca berbeza, jadi kenal pasti laluan yang gagal sebelum menukar apa-apa tetapan.

Mulakan dengan apa yang adb boleh lihat

Jalankan adb devices sebelum menyentuh VPN. Senarai kosong ialah masalah pengangkutan, bukan penghalaan, dan tiada tetapan terowong akan membaiki peranti yang pelayan tidak pernah senaraikan. Mulakan semula pelayan dengan bersih: dahulu adb kill-server kemudian adb start-server, dan baca output untuk melihat port yang diikatnya. Jika permulaan itu sendiri tergantung, penemuan mDNS ialah suspek biasa pada rangkaian yang menapis multicast; penyelesaian yang didokumenkan ialah memulakan pelayan dengan penemuan dimatikan:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Untuk peranti fizikal, USB ialah laluan terpendek. Jika perlu TCP, letakkan peranti dalam mod mendengar dengan adb tcpip 5555 dan sambung ke alamat dan port peranti, adb connect 192.0.2.10:5555. Port 5037 ialah port pelayan hos, bukan port yang peranti dengar.

Uji emulator dari dalam

Emulator menjawab DNS dari 10.0.2.3, dan penyelesai itu dibekalkan oleh proses hos. Apabila klien VPN menukar penyelesai hos, emulator boleh mewarisinya; apabila klien menapis proses emulator atau senarai penyesuai hos berubah selepas permulaan, ia tidak boleh. Pisahkan kedua-duanya dengan sasaran berangka dan nama dari shell yang sama. adb shell ping -c 2 10.0.2.2 membuktikan rangkaian maya sampai ke sisi hos. Carian nama selepas itu menunjukkan sama ada penyelesaian melintasi sempadan.

Kemudian jalankan carian nama yang sama pada hos. Hos menyelesaikan dan emulator tidak bermakna pecahnya antara penyelesai hos dan rangkaian maya emulator, bukan di dalam terowong. Kedua-duanya gagal bermakna penyelesai hos ialah tempat untuk dilihat. Memulakan semula emulator selepas VPN disambung berbaloi satu percubaan, kerana sesetengah klien memasang keadaan penyelesai yang tidak diambil oleh proses emulator yang berjalan.

Periksa penyelesai hos dan penapis klien

Klien terowong penuh menggantikan penyelesai hos dengan miliknya, dan klien split-DNS menambah domain carian serta pemaju bersyarat. Nama dalaman selalunya bergantung pada konfigurasi split-DNS itu, jadi lihat apa yang hos gunakan semasa bersambung: alamat penyelesai, domain carian dan sama ada zon dalaman dihalakan ke DNS korporat. Penyelesai yang menjawab nama awam tetapi tidak nama dalaman ialah soal dasar, bukan terowong rosak.

Sesetengah klien korporat juga menyekat trafik daripada penyesuai maya. Bagi pemacu penapis, emulator kelihatan seperti penyesuai maya, jadi hos boleh berfungsi dengan sempurna sementara dasar menolak emulator. Dasar itu tidak kelihatan dari stesen kerja, dan meneka tetapan proksi tidak akan mendedahkannya. Jika hos menyelesaikan dan emulator disekat tanpa mengira tetapan penyelesai, eskalasi yang betul ialah kepada pasukan yang memiliki dasar klien.

Urutan pemeriksaan dan maksud setiap hasil

Bekerja dari atas ke bawah dan berhenti pada baris pertama yang gagal. Setiap hasil menunjuk pemilik berbeza, dan tiada satu pun diperbaiki dengan memasang semula 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

Hanya dua baris terakhir ialah soalan VPN dalam erti biasa, dan hanya yang terakhir tentang kandungan DNS. Dokumentasi adb merangkumi port pelayan dan pemboleh ubah persekitaran yang disebut di sini, cukup untuk memastikan sisi pengangkutan jujur semasa anda menguji selebihnya.

Artikel berkaitan