VPN ക്ലയന്റ് സ്ക്രിപ്റ്റിംഗ്: പാസ്വേഡിന് മുമ്പ് പാളി തിരഞ്ഞെടുക്കുക
വെണ്ടർ CLI, rasdial, ആപ്പ് ഉദ്ദേശ്യം അല്ലെങ്കിൽ UI ഓട്ടോമേഷൻ ഓരോന്നും വ്യത്യസ്തമായി പരാജയപ്പെടുന്നു. പാളി തിരഞ്ഞെടുക്കുക, രഹസ്യം argv-ന് പുറത്ത് സൂക്ഷിക്കുക, കൂടാതെ അവസ്ഥയ്ക്കായി കാത്തിരിക്കുക, എക്സിറ്റ് കോഡുകൾക്കല്ല.
സ്ക്രിപ്റ്റുകൾ VPN ക്ലയന്റുകളെ രചയിതാവ് തിരഞ്ഞെടുത്ത പാളിയിൽ ആരംഭിക്കുന്നു, ആ പാളി ജോലിക്ക് ആവശ്യമായിരുന്ന പാളി അപൂർവമായിരിക്കും. വെണ്ടറുടെ കമാൻഡ് ലൈൻ, ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഡയലർ, മൊബൈൽ ആപ്പ് ഉദ്ദേശ്യം എന്നിവയെല്ലാം കണക്ഷന്റെ ജീവിതത്തിലെ വ്യത്യസ്ത ഘട്ടങ്ങളിൽ മടങ്ങുന്നു. അവ രഹസ്യത്തെയും വ്യത്യസ്തമായി കൈകാര്യം ചെയ്യുന്നു, ആ വ്യത്യാസമാണ് പാസ്വേഡ് യന്ത്രത്തിലെ ഓരോ ഉപയോക്താവിനും കാണുന്നുണ്ടോ എന്ന് തീരുമാനിക്കുന്നത്. സ്ക്രിപ്റ്റിന്റെ ആദ്യ വരി എഴുതുന്നതിന് മുമ്പ് പാളി തിരഞ്ഞെടുക്കുക.
പാളി 1: വെണ്ടറുടെ കമാൻഡ് ലൈൻ
മിക്ക ഡെസ്ക്ടോപ്പ് ക്ലയന്റുകളും പ്രൊഫൈൽ പേരും, പലപ്പോഴും, പാസ്വേഡും സ്വീകരിക്കുന്ന കമാൻഡ് ലൈൻ നൽകുന്നു. Ciscoയുടെ പഴയ ക്ലയന്റ് ഉപയോക്താവും പാസ്വേഡും ആർഗ്യുമെന്റുകളുമായി connect ക്രിയ സ്വീകരിച്ചിരുന്നു; macOS ഉൾനിർമ്മിത സേവനം networksetup വഴി വെളിപ്പെടുത്തുന്നു; NetworkManager nmcliയോട് പ്രതികരിക്കുന്നു. ഈ വിളികൾ കമാൻഡ് അവസാനിക്കുമ്പോൾ മടങ്ങുന്നു, അത് ടണൽ ഉപയോഗയോഗ്യമാകുന്ന നിമിഷമല്ല. നിങ്ങൾ വിന്യസിക്കുന്ന പതിപ്പിനായി വെണ്ടറുടെ സ്വന്തം ഡോക്യുമെന്റേഷൻ വായിക്കുക, കാരണം ഈ ഇന്റർഫേസുകൾ മാറുന്നു, ചിലത് പൂർണ്ണമായി നീക്കം ചെയ്യപ്പെടുന്നു.
nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"
നേട്ടം എന്തെന്നാൽ വെണ്ടർക്ക് സ്വന്തം പ്രൊഫൈൽ സ്റ്റോർ അറിയാം, അതിനാൽ വിളി GUI ഉപയോഗിക്കുന്ന അതേ കോൺഫിഗറേഷൻ ഉപയോഗിക്കുന്നു. കുറവ് എന്തെന്നാൽ ഓരോ വെണ്ടറും സ്വന്തം ക്രിയകൾ കണ്ടുപിടിക്കുന്നു, ഒരു ക്ലയന്റിനായി എഴുതിയ സ്ക്രിപ്റ്റ് മറ്റൊന്നിലേക്ക് പോകുന്നില്ല. ക്ലയന്റ് സ്ഥിരവും പതിപ്പ് പിൻ ചെയ്തതുമാകുമ്പോൾ ഈ പാളിയെ ഏറ്റവും ചെറിയ വഴിയായി കാണുക.
പാളി 2: ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ സ്വന്തം സേവനം
Windows-ൽ ഡയലർ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഭാഗമാണ്, അത് വെണ്ടറുടെ പ്രൊഫൈൽ സ്റ്റോറിന് പകരം ഫോൺബുക്ക് എൻട്രിക്കെതിരെ പ്രവർത്തിക്കുന്നു. ഇത് ക്ലയന്റുകൾക്കിടയിൽ കൂടുതൽ പോർട്ടബിളാക്കുകയും സേവന അക്കൗണ്ടിൽ നിന്ന് സ്ക്രിപ്റ്റ് ചെയ്യാൻ എളുപ്പമാക്കുകയും ചെയ്യുന്നു. കണക്ഷൻ ഒരിടത്ത് നിലനിൽക്കാം മറ്റൊരിടത്ത് ഇല്ലാതിരിക്കാം എന്നും ഇതിനർത്ഥമുണ്ട്, അത് തെറ്റായ പട്ടികയിൽ നോക്കുന്നവരെ ആശയക്കുഴപ്പത്തിലാക്കുന്നു.
rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus
എൻട്രി സൃഷ്ടിക്കേണ്ടതോ നീക്കം ചെയ്യേണ്ടതോ ആകുമ്പോൾ അത് ഡയൽ ചെയ്യുന്നതിന് പകരം PowerShell ഉപരിതലം ഉപയോഗിക്കുക. WMI, cmdlet പാളികൾ അതേ വസ്തുക്കൾ വ്യത്യസ്ത പേരുകളിൽ വെളിപ്പെടുത്തുന്നു, നീക്കം ചെയ്യൽ വിച്ഛേദനത്തിൽ നിന്ന് വേറിട്ട പ്രവർത്തനമാണ്. ഡയൽ മാത്രം ചെയ്യുന്ന സ്ക്രിപ്റ്റ് മൈഗ്രേഷന് ശേഷം പഴയ എൻട്രികൾ വിട്ടേക്കും. വൃത്തിയാക്കൽ നടക്കുമെന്ന് വാഗ്ദാനം ചെയ്യുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഓട്ടോമേഷൻ ഏത് സ്റ്റോറിലാണ് എഴുതുന്നതെന്ന് പരിശോധിക്കുക.
Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection
macOS-ൽ തുല്യമായത് നെറ്റ്വർക്ക് സേവനങ്ങളുടെ പട്ടികയാണ്, അവിടെ നിലവിലുള്ള സേവനം പേരിലൂടെ ബന്ധിപ്പിക്കുന്നു, സ്ഥലത്തുതന്നെ സൃഷ്ടിക്കപ്പെടുന്നില്ല.
ക്രെഡൻഷ്യലുകൾ ഓരോ പാളിയിലും ചോരുന്നു, അതിനാൽ ചാനൽ തിരഞ്ഞെടുക്കുക
കമാൻഡ് ലൈനിൽ നിങ്ങൾ കൈമാറുന്നതെല്ലാം ഓരോ പ്രാദേശിക ഉപയോക്താവിനും പ്രോസസ് പട്ടികയിൽ കാണാം, സാധാരണയായി ഷെൽ ചരിത്രത്തിലും അത് നിലനിൽക്കും. OpenVPN-ന്റെ പിന്തുണയുള്ള ബദൽ ഇതാണ് രഹസ്യം ഫയലിൽ നിന്ന് വായിക്കുക --askpass സഹിതം, കൂടാതെ ഫയലിന് തന്നെ അതിൽ വയ്ക്കുന്ന വിശ്വാസത്തിന് യോജിക്കുന്ന അനുമതികൾ വേണം. പേരിട്ട പൈപ്പ് രഹസ്യം ഡിസ്കിൽ എഴുതുന്നത് ഒഴിവാക്കുന്നു പക്ഷേ അത് തുറക്കാനാകുന്ന ഏത് പ്രോസസ്സിനും അവിടെ എഴുതാൻ അനുവദിക്കുന്നു. Windows-ൽ രഹസ്യം ക്രെഡൻഷ്യൽ മാനേജറിലോ സേവന അക്കൗണ്ടിന് മാത്രം വായിക്കാനാകുന്ന ഫയലിലോ സൂക്ഷിക്കുക, ഒരിക്കലും ബാച്ച് ഫയലിൽ അക്ഷരാർത്ഥത്തിൽ വയ്ക്കരുത്.
openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret
അതേ നിയമം ടോക്കണുകൾക്കും ഒറ്റത്തവണ കോഡുകൾക്കും ബാധകമാണ്: ഓട്ടോമേഷന് അവ ആവശ്യമെങ്കിൽ, ഓട്ടോമേഷന് കമാൻഡ് ലൈൻ ആർഗ്യുമെന്റ് അല്ലാത്ത ചാനൽ വേണം. സംവിധാനം മാറ്റുമ്പോൾ രഹസ്യം തിരിക്കുക, കാരണം പഴയ മൂല്യം എവിടെയോ ലോഗിൽ കിടന്നിരുന്നു. പ്രവർത്തിക്കുകയും ചോരുകയും ചെയ്യുന്ന സ്ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്ന സ്ക്രിപ്റ്റല്ല.
അവസ്ഥയ്ക്കായി കാത്തിരിക്കുക, പിന്നീട് ഒരു ഉടമയെ മാത്രം മേൽനോട്ടം ചെയ്യുക
ഈ വിളികൾ ഓരോന്നും ടണൽ തയ്യാറാകുന്നതിന് മുമ്പ് മടങ്ങുന്നു, അതിനാൽ ക്ലയന്റ് വെളിപ്പെടുത്തുന്ന അവസ്ഥ ചോദിക്കുക അല്ലെങ്കിൽ അതിനുള്ളിലെ ലക്ഷ്യസ്ഥാനം സമയപരിധിയോടെ പരിശോധിക്കുക. കണക്ഷൻ വിളിക്ക് ശേഷം ഉടൻ ഫയലുകൾ പകർത്തുകയോ ഡാറ്റാബേസ് കണക്ഷൻ തുറക്കുകയോ ചെയ്യുന്നത് ഒരു മത്സരമാണ്, അത് നെറ്റ്വർക്ക് തകരാറിനോട് സാമ്യമുള്ള രീതിയിൽ ഇടയ്ക്കിടെ പരാജയപ്പെടുന്നു.
ip link show tun0
nmcli -t -f GENERAL.STATE connection show "Work VPN"
curl -sS --max-time 5 https://app.internal.example/health -o /dev/null
വിച്ഛേദനത്തിന് എതിർദിശയിൽ അതേ പ്രശ്നമുണ്ട്: പ്രോസസ്സ് റൂട്ടുകൾ പോകുന്നതിന് മുമ്പ് പുറത്തുപോകാം. ക്ലയന്റിന്റെ ഹൂക്കുകൾ ഉള്ളിടത്ത് ഉപയോഗിക്കുക, ഉദാഹരണത്തിന് OpenVPN ന്റെ up, down സ്ക്രിപ്റ്റുകൾ അല്ലെങ്കിൽ systemd യൂണിറ്റിന്റെ ExecStartPost, കാരണം അവ യഥാർത്ഥത്തിൽ നിങ്ങൾക്ക് പ്രധാനമായ ഘട്ടത്തിൽ പ്രവർത്തിക്കുന്നു. ഹൂക്കുകൾ അവയെ വിളിച്ചവയുടെ പ്രത്യേകാവകാശങ്ങളോടെ പ്രവർത്തിക്കുന്നു, അതിനാൽ നെറ്റ്വർക്ക് പുനരാരംഭിക്കുന്ന ഹൂക്കിന് അനുമാനത്തിന് പകരം വ്യക്തമായ നിയമം വേണം. കണക്ഷന്റെ മുഴുവൻ ആയുസ്സിലും കൃത്യമായി ഒരു ഉടമ സൂക്ഷിക്കുക.
രണ്ട് സൂപ്പർവൈസർമാർ ഒരേ പ്രൊഫൈൽ ആരംഭിച്ച് നിർത്തുമ്പോൾ, ഫലം ദാതാവിന്റെ തടസ്സമായി വായിക്കപ്പെടുന്ന പുനഃകണക്ഷൻ ലൂപ്പാണ്. പാളി രേഖപ്പെടുത്തിയിരിക്കുമ്പോൾ, രഹസ്യത്തിന് argv അല്ലാത്ത ചാനൽ ഉള്ളപ്പോൾ, കാത്തിരിപ്പ് വ്യവസ്ഥ സമയപരിധിയോടെ അവസ്ഥ പരിശോധനയാകുമ്പോൾ, ഒരു പ്രോസസ്സ് ജീവിത ചക്രത്തിന്റെ ഉടമയാകുമ്പോൾ റൺബുക്ക് അവസാനിക്കുന്നു.