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 ക്ലയന്റ് ഹോസ്റ്റ് റിസോൾവർ മാറ്റുമ്പോൾ എമുലേറ്ററിന് അത് പിന്തുടരാം; ക്ലയന്റ് എമുലേറ്റർ പ്രോസസ് ഫിൽട്ടർ ചെയ്യുകയോ ആരംഭത്തിന് ശേഷം ഹോസ്റ്റ് അഡാപ്റ്റർ പട്ടിക മാറുകയോ ചെയ്താൽ അതിന് കഴിയില്ല. ഒരേ ഷെല്ലിൽ നിന്ന് സംഖ്യാ ലക്ഷ്യവും പേരും ഉപയോഗിച്ച് രണ്ടിനെയും വേർതിരിക്കുക. 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 ഡോക്യുമെന്റേഷൻ സെർവർ പോർട്ടും ഇവിടെ പറയുന്ന പരിസ്ഥിതി ചരങ്ങളും ഉൾക്കൊള്ളുന്നു, ബാക്കിയുള്ളവ പരിശോധിക്കുമ്പോൾ ഗതാഗത വശം സത്യസന്ധമായി നിലനിർത്താൻ മതി.