ADB र Android इमुलेटर VPN पछाडि असफल: तीन बाटा
ADB खोज, इमुलेटरको भर्चुअल नेटवर्क कार्ड र होस्ट रिजोल्भर VPN पछाडि छुट्टाछुट्टै असफल हुन्छन्। टनेललाई दोष दिनुअघि हरेक बाटो क्रममा परीक्षण गर्नुहोस्।
तपाईं कार्यालयको VPN जोड्नुहुन्छ र Android Studio ले चलिरहेको इमुलेटर गुमाउँछ, adb start-server अड्किन्छ, र Wi-Fi मा रहेको वास्तविक फोन उपकरण सूचीबाट हराउँछ। एउटा टनेलले एउटा उत्पादन रोकिरहेको जस्तो देखिन्छ। वास्तवमा तीन छुट्टै बाटा तीन तरिकाले असफल हुन्छन्: adb उपकरण खोज, इमुलेटरको भर्चुअल नेटवर्क र होस्ट रिजोल्भर। टनेलसँग सामान्यतया अन्तिम मात्र हुन्छ, र प्रायः त्यसको एउटा भाग मात्र।
तीन सकेट, तीन मालिक
adb सर्भर होस्टको पोर्ट 5037 मा सुन्छ र उपकरणहरूसँग USB वा TCP मार्फत कुरा गर्छ, नेटवर्क खोजका लागि mDNS प्रयोग गर्छ। इमुलेटर आफ्नै भर्चुअल राउटरपछाडि चल्छ: गेस्ट 10.0.2.15 हो, गेटवे 10.0.2.2 र DNS सर्भर 10.0.2.3 हो, र इमुलेटर प्रक्रियाले यी सबैलाई होस्ट सकेटमा अनुवाद गर्छ। होस्ट रिजोल्भर त्यो ठाउँ हो जहाँ VPN क्लाइन्टले DNS र खोज डोमेन स्थापना गर्छ।
त्यो विभाजनले एउटा सुधार एउटा उपकरणमा काम गरेर अर्कोमा नगर्ने कारण बताउँछ। होस्ट रिजोल्भर बदल्ने क्लाइन्टले चलिरहेको इमुलेटर प्रक्रियालाई सुरुमा पढेको रिजोल्भर अवस्थासहित छोड्छ। multicast फिल्टर गर्ने क्लाइन्टले DNS नछोइकन खोज भत्काउँछ। भर्चुअल एडाप्टर फिल्टर गर्ने क्लाइन्टले होस्ट ब्राउजर चलिरहेकै बेला इमुलेटरलाई अस्वीकार गर्छ। हरेक लक्षणको कारण फरक छ, त्यसैले कुनै पनि सेटिङ बदल्नुअघि असफल बाटो पहिचान गर्नुहोस्।
adb ले देख्न सक्ने कुराबाट सुरु गर्नुहोस्
VPN छुनुअघि adb devices चलाउनुहोस्। खाली सूची यातायातको समस्या हो, रुटिङको होइन, र सर्भरले कहिल्यै सूचीबद्ध नगरेको उपकरण कुनै टनेल सेटिङले सुधार्दैन। सर्भर सफासँग पुनः सुरु गर्नुहोस्: पहिले adb kill-server त्यसपछि adb start-server, र कुन पोर्ट लियो भनी जान्न आउटपुट पढ्नुहोस्। सुरुवात आफै अड्किएमा multicast फिल्टर गर्ने नेटवर्कमा mDNS खोज सामान्य शंकास्पद हो; अभिलेखित समाधान भनेको खोज बन्द गरेर सर्भर सुरु गर्नु हो:
ADB_MDNS_OPENSCREEN=0 adb start-server
adb devicesवास्तविक उपकरणका लागि USB सबैभन्दा छोटो बाटो हो। TCP चाहिएमा उपकरणलाई adb tcpip 5555 द्वारा सुन्ने मोडमा राख्नुहोस् र उपकरणको ठेगाना र पोर्टमा जोड्नुहोस्, adb connect 192.0.2.10:5555। पोर्ट 5037 होस्ट सर्भरको पोर्ट हो, उपकरणले सुन्ने पोर्ट होइन।
इमुलेटरलाई भित्रबाट परीक्षण गर्नुहोस्
इमुलेटरले 10.0.2.3 बाट DNS को जवाफ दिन्छ, र त्यो रिजोल्भरलाई होस्ट प्रक्रियाले खुवाउँछ। VPN क्लाइन्टले होस्ट रिजोल्भर बदल्दा इमुलेटरले त्यो उत्तराधिकारमा पाउन सक्छ; क्लाइन्टले इमुलेटर प्रक्रिया फिल्टर गर्दा वा सुरु भएपछि होस्ट एडाप्टर सूची बदलिँदा पाउन सक्दैन। दुवैलाई एउटै shell बाट सङ्ख्यात्मक लक्ष्य र नामद्वारा छुट्याउनुहोस्। adb shell ping -c 2 10.0.2.2 ले भर्चुअल नेटवर्क होस्टतर्फ पुग्ने प्रमाण दिन्छ। त्यसपछिको नाम खोजले समाधान सीमा नाघ्यो कि नाघेन भन्छ।
त्यसपछि त्यही नाम खोज होस्टमा चलाउनुहोस्। होस्टले समाधान गर्छ र इमुलेटरले गर्दैन भनेको टुटाइ होस्ट रिजोल्भर र इमुलेटरको भर्चुअल नेटवर्कबीच छ, टनेलमा होइन। दुवै असफल भनेको होस्ट रिजोल्भर हेर्ने ठाउँ हो। VPN जोडिएपछि इमुलेटर पुनः सुरु गर्नु एक प्रयासको लायक छ, किनकि केही क्लाइन्टले चलिरहेको इमुलेटर प्रक्रियाले नलिने रिजोल्भर अवस्था स्थापना गर्छन्।
होस्ट रिजोल्भर र क्लाइन्ट फिल्टर जाँच्नुहोस्
पूर्ण टनेल क्लाइन्टले होस्ट रिजोल्भरलाई आफ्नै रिजोल्भरले प्रतिस्थापन गर्छ, र split-DNS क्लाइन्टले खोज डोमेन र सशर्त फर्वार्डर थप्छ। आन्तरिक नाम प्रायः त्यही split-DNS कन्फिगरेसनमा निर्भर हुन्छन्, त्यसैले जोडिएको बेला होस्टले के प्रयोग गर्छ हेर्नुहोस्: रिजोल्भरको ठेगाना, खोज डोमेन र आन्तरिक जोन कर्पोरेट DNS मा रुट हुन्छ कि हुँदैन। सार्वजनिक नामको जवाफ दिने तर आन्तरिक नामको नदिने रिजोल्भर नीतिको प्रश्न हो, भाँचिएको टनेल होइन।
केही कर्पोरेट क्लाइन्टले भर्चुअल एडाप्टरबाट आउने ट्राफिक पनि रोक्छन्। फिल्टर ड्राइभरका लागि इमुलेटर भर्चुअल एडाप्टरजस्तो देखिन्छ, त्यसैले होस्ट राम्ररी चलिरहँदा नीतिले इमुलेटरलाई अस्वीकार गर्न सक्छ। त्यो नीति कार्यस्थलबाट देखिँदैन, र प्रोक्सी सेटिङको अनुमानले त्यो खोल्दैन। होस्टले समाधान गर्छ र रिजोल्भर सेटिङ जे भए पनि इमुलेटर अवरुद्ध छ भने, सही एस्कलेसन क्लाइन्ट नीति भएको टोलीलाई हो।
जाँचको क्रम र हरेक नतिजाको अर्थ
माथिबाट तल काम गर्नुहोस् र पहिलो असफल पङ्क्तिमा रोक्नुहोस्। हरेक नतिजाले फरक मालिकतर्फ सङ्केत गर्छ, र Android Studio पुनः स्थापना गरेर कुनै पनि ठीक हुँदैन।
| Result | Likely owner | Next check |
|---|---|---|
| adb devices is empty with USB attached | USB, driver or adb server | cable, authorization prompt, adb kill-server |
| adb start-server hangs | mDNS discovery | ADB_MDNS_OPENSCREEN=0 |
| Emulator reaches 10.0.2.2, names fail | Host resolver to emulator boundary | host lookup of the same name |
| Host resolves, emulator still fails | Emulator process or client filter | restart emulator, ask IT about virtual adapters |
| Both fail for internal names only | Split DNS or search domain | resolver and zone configuration |
सामान्य अर्थमा अन्तिम दुई पङ्क्ति मात्र VPN प्रश्न हुन्, र अन्तिमले मात्र DNS सामग्रीको बारेमा भन्छ। adb कागजात ले सर्भर पोर्ट र यहाँ उल्लेख गरिएका वातावरण चर समेट्छ, जो बाँकी परीक्षण गर्दा यातायात पक्ष इमानदार राख्न पर्याप्त छ।