തികച്ചും വ്യത്യസ്തമായ രണ്ട് ജോലികൾ പ്രോഗ്രാമാറ്റിക് VPN എന്ന പേരിൽ വരുന്നു, അവയിൽ ഒന്ന് മാത്രമാണ് രണ്ട് മൊബൈൽ പ്ലാറ്റ്ഫോമുകളിലും സാധാരണ ആപ്പിന് ലഭ്യമായിരിക്കുന്നത്. ആദ്യത്തേത് ഉപയോക്താവ് നേരത്തെ സേവ് ചെയ്ത പ്രൊഫൈൽ ഓൺ ചെയ്യുന്നതാണ്; രണ്ടാമത്തേത് നിങ്ങളുടെ സ്വന്തം പ്രോസസ്സിനുള്ളിൽ ടണൽ നിർമ്മിക്കുന്നതാണ്. Android രണ്ടാമത്തേത് VpnService വഴി നൽകുന്നു, iOS രണ്ടാമത്തേത് Network Extension അവകാശം വഴി നൽകുന്നു, ആദ്യത്തേത് സിസ്റ്റം, ഉപകരണ ഉടമ അല്ലെങ്കിൽ MDM സെർവറിന് അടുത്ത് നിൽക്കുന്നു. യഥാർത്ഥത്തിൽ ഏതാണ് വേണ്ടതെന്ന് കണ്ടെത്തുന്നത് സാധാരണയായി പ്രോജക്റ്റ് ചെറുതാക്കുന്നു.

ഒരേ പേര് പങ്കിടുന്ന രണ്ട് ജോലികൾ

സേവ് ചെയ്ത പ്രൊഫൈൽ സജീവമാക്കുക എന്നത് നിലവിലുള്ള ഒരു ടണലിനോട് ഉയരാൻ പറയുകയാണ്: ഹോസ്റ്റ്, ക്രെഡൻഷ്യൽ, പ്രോട്ടോക്കോൾ, എല്ലാം ഉപയോക്താവിന് കാണാൻ കഴിയുന്ന ഇടത്ത് ഇതിനകം കോൺഫിഗർ ചെയ്തിരിക്കുന്നു. ടണൽ നിർമ്മിക്കുക എന്നത് നിങ്ങളുടെ കോഡ് ഇന്റർഫേസും പാക്കറ്റ് ലൂപ്പും പ്രോട്ടോക്കോളും സ്വന്തമാക്കുന്നു എന്നാണ്. ഉൽപ്പന്ന ബാക്ക്ലോഗിൽ അവ സമാനമായി കാണപ്പെടുന്നു, ഏതാണ്ട് ഒരു നടപ്പാക്കലും പങ്കിടുന്നുമില്ല.

ഏതൊരു മൊബൈൽ പ്ലാറ്റ്ഫോമും ആദ്യത്തേത് SDK ആപ്പിന് തുറന്നുകൊടുക്കുന്നില്ല. ഉപയോക്താവ് ഒന്നും ചെയ്യാതെ പ്രത്യക്ഷപ്പെടുന്ന കണക്ഷൻ മാൽവെയറിൽ നിന്ന് വേർതിരിച്ചറിയാൻ കഴിയില്ല, അതിനാൽ രണ്ട് സിസ്റ്റങ്ങളും ട്രാഫിക് കൊണ്ടുപോകുന്ന ഏതൊരു ആപ്പിനും മുന്നിൽ സമ്മത ഗേറ്റ് വയ്ക്കുന്നു.

Android: ഒരു സമ്മത ഗേറ്റും പ്രൊഫൈൽ API ഇല്ല

VpnService Android 4.0 മുതൽ നിലവിലുണ്ട്, ആപ്പിന് tun ഇന്റർഫേസ് സൃഷ്ടിക്കാനും പിന്നീട് പാക്കറ്റുകൾ വായിക്കാനും എഴുതാനും അനുവദിക്കുന്നു. സേവനം BIND_VPN_SERVICE ഉപയോഗിച്ച് പ്രഖ്യാപിക്കണം, VpnService.prepare() ഉപയോക്താവിനോട് അനുമതി ചോദിക്കുന്ന സിസ്റ്റം ഡയലോഗ് സൃഷ്ടിക്കുന്നു. പ്ലാറ്റ്ഫോം സാമ്പിളായ ToyVpn ഉദ്ദേശിച്ച രൂപത്തിന്റെ ഏറ്റവും വ്യക്തമായ പ്രസ്താവനയാണ്: നിങ്ങളുടെ കോഡ് ഇന്റർഫേസും അതിലൂടെ ഒഴുകുന്ന എല്ലാത്തിന്റെയും ഉടമയാണ്.

അത് ചെയ്യാത്തത് സിസ്റ്റത്തിന്റെ VPN ക്രമീകരണ സ്ക്രീനിലേക്ക് ഒരു എൻട്രി ചേർക്കുന്നതാണ്. അതിന് പൊതു API ഇല്ല, ക്രമീകരണങ്ങൾ ആപ്പ് അതിന്റെ പ്രൊഫൈലുകൾ സാധാരണ ആപ്പിന് എത്താൻ കഴിയാത്ത സംഭരണിയിൽ സൂക്ഷിക്കുന്നു. സാധാരണ ആപ്ലിക്കേഷനിൽ നിന്ന് മറഞ്ഞിരിക്കുന്ന ക്ലാസുകളിലേക്കുള്ള വിളികൾ സിസ്റ്റം ഒരിക്കലും ലിസ്റ്റ് ചെയ്യാത്ത പ്രൊഫൈലുകൾ സൃഷ്ടിക്കുന്നു, അതിനാൽ ഒരു ബിൽഡിൽ പ്രവർത്തിക്കുന്നതായി തോന്നിയ കോഡ് അടുത്തതിൽ നിശ്ശബ്ദമായി പ്രവർത്തിക്കുന്നത് നിർത്തുന്നു.

നിയന്ത്രിത പാത വേറിട്ടതാണ്. ഉപകരണ ഉടമയ്ക്കോ പ്രൊഫൈൽ ഉടമയ്ക്കോ ഉപകരണ നയ API-കൾ വഴി എപ്പോഴും ഓണായ VPN പാക്കേജ് നിശ്ചയിക്കാം, എന്റർപ്രൈസ് ടൂളിന് ഉപയോക്താവ് പിന്നീട് അംഗീകരിക്കുന്ന പ്രൊഫൈൽ അയയ്ക്കാം. ഇത് ഉപകരണ നിർവ്വഹണ അധികാരമാണ്, ഇൻസ്റ്റാളേഷൻ സമയത്ത് ആപ്പ് ആവശ്യപ്പെടുന്ന അനുമതിയല്ല. നിങ്ങളുടെ ഉപഭോക്താവ് ഒരു സ്ഥാപനമാണെങ്കിൽ, ആസൂത്രണം ചെയ്യേണ്ട പാത ഇതാണ്; ഉപഭോക്താവ് സ്റ്റോറിൽ നിന്ന് ഇൻസ്റ്റാൾ ചെയ്യുന്ന വ്യക്തിയാണെങ്കിൽ, അത് ഒട്ടും ലഭ്യമല്ല.

iOS: അവകാശമാണ് അതിർത്തി

iOS അതേ ജോലി മറ്റൊരു രീതിയിൽ വിഭജിക്കുന്നു. VPN ക്ലയന്റ് Network Extension ചട്ടക്കൂടിന് കീഴിൽ പാക്കറ്റ് ടണൽ ദാതാവിനെയോ ആപ്പ് പ്രോക്സിയെയോ നടപ്പാക്കുന്നു, ബന്ധപ്പെട്ട അവകാശം ഡെവലപ്പർ അക്കൗണ്ടിന് നൽകണം. ലളിതമായ സാഹചര്യത്തിന് NEVPNManager വഴി വ്യക്തിഗത VPN കോൺഫിഗറേഷൻ ഉണ്ട്, അത് അതേ അനുമതി മാതൃകയ്ക്കുള്ളിൽ പ്രവർത്തിക്കുന്നു. Apple മുഴുവൻ ഉപരിതലവും Network Extension റഫറൻസിൽ രേഖപ്പെടുത്തുന്നു, ജോലിയുടെ പരിധി നിശ്ചയിക്കുന്നതിന് മുമ്പ് അത് വായിക്കുന്നത് ഉചിതമാണ്.

VPN ക്രമീകരണ സ്ക്രീൻ തുറക്കാനോ, ഉപയോക്താവിന്റെ സേവ് ചെയ്ത കോൺഫിഗറേഷനുകൾ വായിക്കാനോ, അവയിലൊന്ന് ആരംഭിക്കാനോ പിന്തുണയ്ക്കുന്ന വഴിയില്ല. ക്ലയന്റിന് ചെയ്യാൻ കഴിയുന്നത് ഇൻസ്റ്റാളേഷനായി ഒരു കോൺഫിഗറേഷൻ പ്രൊഫൈൽ അയയ്ക്കുകയും, തുടർന്ന് ഉണ്ടായ ടണൽ സാധാരണ നെറ്റ്വർക്കിംഗ് വിളികളിലൂടെ ഉപയോഗിക്കുകയുമാണ്. ഓരോ ആപ്പിനുമുള്ള ടണലിംഗ് MDM സെർവർ ആവശ്യാനുസരണം നിയമത്തിലൂടെ അനുവദിക്കുന്നു, റൺടൈമിൽ ആപ്പ് അത് തിരഞ്ഞെടുക്കുന്നില്ല.

വലിയ വിതരണക്കാരന്റെ VPN ക്ലയന്റ് നിങ്ങളുടെ അക്കൗണ്ടിന് അതേ കാര്യം അയയ്ക്കാൻ കഴിയുമെന്നതിന്റെ തെളിവല്ല. ആ അവകാശങ്ങൾ ഓരോ ഡെവലപ്പർ അക്കൗണ്ടിനും ആവശ്യപ്പെടുകയും പരിശോധിക്കുകയും ചെയ്യുന്നു, അതിനാൽ ഷെഡ്യൂൾ അപകടസാധ്യത Apple-നിലാണ്, നിങ്ങളുടെ സ്പ്രിന്റ് പ്ലാനിലല്ല.

ഡെസ്ക്ടോപ്പ് കൂടുതൽ ദൂരം എത്തുന്നു, പക്ഷേ ഉടമസ്ഥത മാറുന്നില്ല

Windows അനുവദനീയമായ സാഹചര്യമാണ്. Add-VpnConnection ഉയർത്തിയ PowerShell സെഷനിൽ നിന്ന് ഒരു ടെലിഫോൺ ബുക്ക് എൻട്രി സൃഷ്ടിക്കുന്നു, rasdial സ്ക്രിപ്റ്റിൽ നിന്ന് അത് ബന്ധിപ്പിക്കുകയോ വിച്ഛേദിക്കുകയോ ചെയ്യുന്നു. ആപ്പിന് അതിന്റെ രേഖപ്പെടുത്തിയ കമാൻഡ് ലൈൻ വഴി വിതരണക്കാരന്റെ ക്ലയന്റും നിയന്ത്രിക്കാം. പ്രൊഫൈൽ സൃഷ്ടിക്കുന്നത് ഇപ്പോഴും ഭരണപരമായ പ്രവർത്തനമാണ്, കാരണം എൻട്രി മുഴുവൻ മെഷീന്റെ സംഭരണിയിൽ ജീവിക്കുന്നു.

macOS മറ്റ് ഉപകരണങ്ങളുമായി അതേ രീതിയിൽ പെരുമാറുന്നു. scutil --nc start, stop എന്നിവ നിലവിലുള്ള സേവനങ്ങളിൽ പ്രവർത്തിക്കുന്നു, ഒന്ന് സൃഷ്ടിക്കുന്നത് സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ജോലിയാണ്. ലാപ്ടോപ്പിൽ പ്രോസസ്സ് സ്വന്തമാക്കുന്നത് നിങ്ങളെ കോൺഫിഗറേഷന്റെ ഉടമയാക്കുന്നില്ല.

പകരം എന്ത് നിർമ്മിക്കണം

യഥാർത്ഥ ആവശ്യം നിങ്ങളുടെ ആപ്പ് ഒരു ആന്തരിക API-യിൽ എത്തുകയാണെങ്കിൽ, ഉപയോക്താവ് ഇതിനകം പ്രവർത്തിപ്പിക്കുന്ന ടണൽ മതി. സാധാരണ HTTPS അഭ്യർത്ഥനകൾ അയയ്ക്കുക, വഴി സിസ്റ്റം തിരഞ്ഞെടുക്കട്ടെ, ടണൽ നിയന്ത്രിക്കാൻ ശ്രമിക്കുന്നത് നിർത്തുക. ആവശ്യം നിങ്ങളുടെ ആപ്പിന്റെ ട്രാഫിക് മാത്രം ടണൽ ഉപയോഗിക്കുകയാണെങ്കിൽ, മാനേജ്മെന്റ് ചാനലിലൂടെ ഓരോ ആപ്പിനും VPN ആവശ്യപ്പെടുക, അല്ലെങ്കിൽ ആപ്പിനുള്ളിൽ അതില്ലാതെ എത്താവുന്ന ഒരു സേവനത്തിനെതിരെ TLS അവസാനിപ്പിക്കുക.

മറഞ്ഞിരിക്കുന്ന API-കൾ എടുക്കാൻ യോഗ്യമായ ഒരു ഷോർട്ട്കട്ട് അല്ല. അവ റിലീസുകൾക്കിടയിൽ മാറുന്നു, ആപ്പ് അവലോകനത്തിൽ പരാജയപ്പെടുന്നു, അവ സൃഷ്ടിക്കുന്ന തകരാറുകൾ കോഡ് അവകാശമായി ലഭിക്കുന്നവർക്ക് സാധാരണ നെറ്റ്വർക്ക് തകരാറുകളായി തോന്നുന്നു. താരതമ്യം Android vs iOS അല്ല; ടണൽ സ്വന്തമാക്കുന്നതും പ്ലാറ്റ്ഫോമിനോട് ട്രാഫിക് റൂട്ട് ചെയ്യാൻ ആവശ്യപ്പെടുന്നതും തമ്മിലാണ്, ആദ്യത്തേത് മാത്രമാണ് നിങ്ങൾ നിർമ്മിക്കേണ്ടത്.

അനുബന്ധ ലേഖനങ്ങൾ