scutil --nc ഉപയോഗിച്ച് ടെർമിനലിൽ നിന്ന് സേവ് ചെയ്ത Mac VPN ആരംഭിക്കുക
സേവ് ചെയ്ത macOS VPN സേവനം ആരംഭിക്കാനും പരിശോധിക്കാനും നിർത്താനും scutil --nc ഉപയോഗിക്കുക, ക്രെഡൻഷ്യലുകൾ argv-ന് പുറത്ത് സൂക്ഷിക്കുക, ട്രാഫിക് യഥാർത്ഥത്തിൽ ടണൽ ഉപയോഗിക്കുന്നുവെന്ന് തെളിയിക്കുക.
സിസ്റ്റം ക്രമീകരണങ്ങളിൽ സേവ് ചെയ്ത VPN സേവനമുണ്ട്, ടെർമിനൽ അത് ആരംഭിക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്നു. macOS-ൽ പിന്തുണയ്ക്കുന്ന വഴി scutil --nc ആണ്, പക്ഷേ സിസ്റ്റത്തിന്റെ സ്വന്തം നെറ്റ്വർക്ക് കണക്ഷൻ മാനേജർക്ക് ഉള്ള സേവനങ്ങൾക്ക് മാത്രം. മെനു ബാർ API അല്ല: തേർഡ് പാർട്ടി ക്ലയന്റുകൾക്ക് സാധാരണയായി സ്വന്തം ഓട്ടോമേഷൻ ഉണ്ട്, മാനേജ്മെന്റ് സേവനം അയച്ച പ്രൊഫൈൽ ലോക്കൽ ആരംഭം നിരസിച്ചേക്കാം. ഇതാണ് ഞാൻ പിന്തുടരുന്ന ചെക്ക്ലിസ്റ്റ്: കൃത്യമായ സേവനം കണ്ടെത്തുക, അതിന്റെ അവസ്ഥ വായിക്കുക, അത് ആരംഭിക്കുക, അവസ്ഥ മാറുന്നത് വരെ കാത്തിരിക്കുക, തുടർന്ന് ട്രാഫിക് യഥാർത്ഥത്തിൽ ടണൽ ഉപയോഗിക്കുന്നുവെന്ന് തെളിയിക്കുക. പൊരുത്തപ്പെടാത്ത ആദ്യ ഘട്ടത്തിൽ നിർത്തുക, കാരണം തുടർന്നുള്ള ഓരോ കമാൻഡും മുൻപത്തേത് വിജയിച്ചുവെന്ന് അനുമാനിക്കുന്നു.
ആരംഭിക്കാൻ ശ്രമിക്കുന്നതിന് മുൻപ് സേവനം കണ്ടെത്തുക
ഓർമ്മയിലുള്ള പ്രൊഫൈൽ നാമത്തിന് പകരം ഇൻവെന്ററിയിൽ നിന്ന് തുടങ്ങുക:
scutil --nc help
scutil --nc list
ഓരോ വരിയും ഒരു അവസ്ഥയെ സേവന ഐഡന്റിഫയർ, തരം, പ്രദർശന നാമം എന്നിവയുമായി ചേർക്കുന്നു. ഐഡന്റിഫയറാണ് സ്ക്രിപ്റ്റ് എഴുതാനുള്ള മൂല്യം, കാരണം പ്രദർശന നാമങ്ങൾ ആവർത്തിക്കുകയും തിരുത്താനും കഴിയും. Apple-ന്റെ scutil മാനുവൽ നെറ്റ്വർക്ക് കണക്ഷൻ മോഡ് വിവരിക്കുന്നു, അതേസമയം ഇൻസ്റ്റാൾ ചെയ്ത --nc help ആ Mac-ലെ ഉപകമാന്റുകളുടെ അധികാരമുള്ള പട്ടികയാണ്; പഴയ ഗൈഡിലെ ഫ്ലാഗ് നിങ്ങളുടെ macOS പതിപ്പിൽ ഇപ്പോഴും ഉണ്ടെന്ന് കരുതരുത്.
ശൂന്യമായ പട്ടിക ഒരു ഫലമാണ്, പിശകല്ല. വെണ്ടർ ക്ലയന്റോ മാനേജ്മെന്റ് പ്രൊഫൈലോ സൃഷ്ടിച്ച സേവനം ഇവിടെ കാണാതെ സജീവമായിരിക്കാം, അല്ലെങ്കിൽ നേറ്റീവ് കൺട്രോളർ കൈകാര്യം ചെയ്യാൻ കഴിയാത്ത തരത്തിൽ കാണാവുന്നതുമാകാം. ആ സാഹചര്യത്തിൽ, വെണ്ടറുടെ ടൂളോ പ്രൊഫൈൽ ഡോക്യുമെന്റേഷനോ ഉപയോഗിക്കുക. ആരംഭിക്കാൻ എന്തെങ്കിലും ഉണ്ടാകാൻ മാത്രം സമാന്തര നേറ്റീവ് പ്രൊഫൈൽ സൃഷ്ടിക്കുന്നത് മോശം ഇടപാടാണ്.
നിലവിലെ അവസ്ഥ വായിച്ച് സെലക്ടർ സ്ഥിരീകരിക്കുക
ആരംഭിക്കുന്നതിന് മുൻപ് സേവനത്തോട് അവസ്ഥ ചോദിക്കുക, വിജയകരമായ ആരംഭം എന്ത് മാറ്റണമെന്ന് അറിയാൻ:
scutil --nc status "Office VPN"
രണ്ട് സേവനങ്ങൾ ഒരേ പ്രദർശന നാമം പങ്കിട്ടാൽ, നാമം അവ്യക്തമാണ്. പകരം ഐഡന്റിഫയർ നൽകുക; കമാൻഡ് രണ്ടും സ്വീകരിക്കുന്നു, പക്ഷേ ഒരു സേവനം തിരഞ്ഞെടുക്കാൻ ഉറപ്പ് നൽകുന്നത് ഐഡന്റിഫയറിന് മാത്രം. സ്ക്രിപ്റ്റിൽ വിശകലനം ചെയ്യുന്നതിന് മുൻപ് അവസ്ഥാ വാക്ക് നിങ്ങൾക്ക് പരിചിതമാണോ എന്ന് പരിശോധിക്കുക — സാധാരണയായി Connected, Disconnected, Connecting അല്ലെങ്കിൽ Disconnecting. പ്രൊഫൈൽ മാനേജ് ചെയ്യപ്പെടുന്നുണ്ടോ എന്നും പരിശോധിക്കുക, കാരണം ലോക്ക് ചെയ്ത കോൺഫിഗറേഷൻ കമാൻഡ് സ്വീകരിച്ചിട്ടും അത് അവഗണിക്കുകയോ സ്ഥിരീകരണം ചോദിക്കുകയോ ചെയ്തേക്കാം.
ഈ അവസ്ഥാ കോൾ വിലകുറഞ്ഞതാണ്, അതിനാൽ ഓട്ടോമേഷനിൽ അത് കാവൽക്കാരനായി ഉപയോഗിക്കുക: അവസ്ഥ Disconnected ആയിരിക്കുമ്പോൾ മാത്രം ആരംഭിക്കുക, Connecting പരാജയമായി കരുതരുത്. സേവനം ഇതിനകം Connected ആണെങ്കിൽ, പ്രവർത്തിക്കുന്ന ടണൽ തടസ്സപ്പെടുത്തുന്നതിന് പകരം ആരംഭം ഒഴിവാക്കുക.
കണക്ഷൻ ആരംഭിച്ച് അവസ്ഥ സ്ഥിരതയാകുന്നത് വരെ കാത്തിരിക്കുക
ആരംഭ അഭ്യർത്ഥന അസിൻക്രണസ് ആണ്. അഭ്യർത്ഥന സ്വീകരിക്കുമ്പോൾ കമാൻഡ് മടങ്ങുന്നു, പ്രാമാണീകരണം അവസാനിക്കുമ്പോഴോ റൂട്ടുകൾ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോഴോ അല്ല. അത് പ്രവർത്തിപ്പിക്കുക, തുടർന്ന് പരിമിതമായ കാത്തിരിപ്പോടെ അവസ്ഥ ചോദിക്കുക, സേവനം Disconnected-ലേക്ക് മടങ്ങിയാൽ പുറത്തുകടക്കുക:
scutil --nc start "Office VPN"
n=0
while [ "$n" -lt 30 ]; do
state=$(scutil --nc status "Office VPN" | head -n 1)
[ "$state" = "Connected" ] && break
[ "$state" = "Disconnected" ] && { echo "start failed"; exit 1; }
sleep 2
n=$((n + 1))
done
ഒരിക്കലും പരിഹരിക്കാത്ത Connecting അവസ്ഥ സാധാരണയായി ക്രെഡൻഷ്യലുകൾ, MFA അല്ലെങ്കിൽ സെർവറിനെ സൂചിപ്പിക്കുന്നു, scutil-നെയല്ല. കമാൻഡിന് സംവേദനാത്മക ലോഗിൻ നൽകാനാകില്ല, അതിനാൽ ടോക്കൺ അല്ലെങ്കിൽ ഹാർഡ്വെയർ കീ പ്രതീക്ഷിക്കുന്ന പ്രൊഫൈൽ Connecting-ൽ നിൽക്കുകയും ഒടുവിൽ പിൻവാങ്ങുകയും ചെയ്യും. വീണ്ടും ശ്രമങ്ങൾ ചേർക്കുന്നതിന് മുൻപ് അവസ്ഥാ വാക്ക് വായിക്കുക; പ്രാമാണീകരണ പ്രോംപ്റ്റിനെതിരായ ലൂപ്പിന് വിജയിക്കാനാകില്ല.
ഷെല്ലിന്റെ എക്സിറ്റ് സ്റ്റാറ്റസ് തയ്യാറെടുപ്പായി കരുതരുത്. ഉപയോഗപ്രദമായ സിഗ്നൽ അവസ്ഥാ സ്ട്രിംഗാണ്, തുടർന്ന് ടണൽ ട്രാഫിക് വഹിക്കുന്നുവെന്ന തെളിവ്. നിശബ്ദമായി മടങ്ങുന്ന ആരംഭ കമാൻഡ് ഒരിക്കലും പ്രാമാണീകരിക്കാത്ത ഒരു കണക്ഷനുമായി നിങ്ങളെ വിട്ടേക്കാം.
ടണൽ ട്രാഫിക് വഹിക്കുന്നുവെന്ന് തെളിയിക്കുക, Connected എന്ന് പറയുന്നത് മാത്രമല്ല
Connected കണക്ഷനെ വിവരിക്കുന്നു, റൂട്ടിംഗ് തീരുമാനത്തെയല്ല. നേറ്റീവ് PPP, IKEv2 സേവനങ്ങൾ ppp അല്ലെങ്കിൽ utun ഇന്റർഫേസ് സൃഷ്ടിച്ച് റൂട്ടുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു, അതേസമയം വിഭജിത ടണൽ ഡിഫോൾട്ട് റൂട്ട് ബോധപൂർവ്വം തൊടാതെ വിടുന്നു. ഇന്റർഫേസുകളും രണ്ട് വിലാസ കുടുംബങ്ങളും പരിശോധിക്കുക:
ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns
നമ്പർ ഊഹിക്കുന്നതിന് പകരം സേവനം സൃഷ്ടിച്ച ഇന്റർഫേസ് കണ്ടെത്തുക, തുടർന്ന് ഒരു നിർദ്ദിഷ്ട ലക്ഷ്യം ഏത് ഇന്റർഫേസ് ഉപയോഗിക്കുന്നുവെന്ന് റൂട്ടിംഗ് പട്ടികയോട് ചോദിക്കുക: route -n get 10.0.0.10, അതിന് പകരം ആന്തരിക ഹോസ്റ്റ് ഇട്ട്. അത് ഭൗതിക ഇന്റർഫേസ് റിപ്പോർട്ട് ചെയ്താൽ, ടണൽ ഓണാണ് പക്ഷേ ആ പ്രവാഹം വഹിക്കുന്നില്ല. വിഭജിത ടണൽ റൂട്ടുകൾ, റിസോൾവർ ക്രമം, ടണൽ ഇന്റർഫേസിന് അനുമതി നൽകി പ്രക്രിയയ്ക്ക് നൽകാത്ത ഏതെങ്കിലും ലോക്കൽ ഫയർവാൾ നിയമം എന്നിവ പരിശോധിക്കുക.
നാമ പരിഹാരം സാധാരണ തെറ്റായ നിഷേധമാണ്. ടണൽ തികച്ചും ആരോഗ്യകരമായിരിക്കുമ്പോഴും ആന്തരിക നാമങ്ങൾ തെറ്റായ റിസോൾവർ വഴി പരിഹരിക്കപ്പെടാം, അത് VPN തകരാറായി തോന്നും, എന്നാൽ അതല്ല. scutil --dns macOS ഉപയോഗിക്കുന്ന ക്രമം കാണിക്കുന്നു; റിസോൾവർ മാറ്റിയതിന് ശേഷം dscacheutil -flushcache, sudo killall -HUP mDNSResponder എന്നിവ ഉപയോഗിച്ച് കാഷെ ശൂന്യമാക്കുക.
ക്രെഡൻഷ്യലുകളും പ്രത്യേകാവകാശങ്ങളും കമാൻഡ് ലൈനിന് പുറത്ത് സൂക്ഷിക്കുക
പാസ്വേഡ്, മുൻകൂട്ടി പങ്കിട്ട കീ, ടോക്കൺ എന്നിവ ഒരിക്കലും ആർഗ്യുമെന്റുകളിൽ ഇടരുത്. ആർഗ്യുമെന്റുകൾ പ്രോസസ് പട്ടികകളിൽ കാണാം, ഷെൽ ചരിത്രത്തിൽ രേഖപ്പെടുന്നു, പകർത്തിയ സപ്പോർട്ട് ട്രാൻസ്ക്രിപ്റ്റ് അവ ചോർത്തിയേക്കാം. പ്രൊഫൈലിന്റെ സ്വന്തം ക്രെഡൻഷ്യൽ കൈകാര്യം — Keychain ഇനം, സിസ്റ്റം പ്രോംപ്റ്റ്, ക്ലയന്റിന്റെ പ്രാമാണീകരണ പ്രവാഹം — രഹസ്യങ്ങൾക്കുള്ള സ്ഥലമാണ്.
sudo ഉപയോഗിച്ച് കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നത് സംവേദനാത്മക ലോഗിൻ മേൽനോട്ടമില്ലാത്തതാക്കുന്നില്ല. അത് ഫലപ്രദമായ ഉപയോക്താവിനെ മാറ്റുന്നു, GUI പ്രോംപ്റ്റിന്റെയോ ഹാർഡ്വെയർ ടോക്കണിന്റെയോ ലോഗിൻ കീചെയിനിന്റെയോ ലഭ്യതയെയല്ല. ഉപയോക്താവ് ലോഗിൻ ചെയ്ത് കീചെയിൻ തുറന്നതിന് ശേഷം LaunchAgent-ന് സേവനം ആരംഭിക്കാം; LaunchDaemon സാധാരണയായി ഉപയോക്തൃ സെഷന്റെ ആ ഭാഗങ്ങളിൽ എത്തില്ല. ഒരു സ്ഥാപനം സേവനം കൈകാര്യം ചെയ്താൽ, അതിന്റെ ജീവിതചക്ര നിയമങ്ങൾ ഏതെങ്കിലും ലോക്കൽ സ്ക്രിപ്റ്റിനെ മറികടക്കും.
സേവനം നിർത്തുക, അത് നിർത്തിയതായി തുടരുന്നുവെന്ന് പരിശോധിക്കുക
ആരംഭിക്കാൻ ഉപയോഗിച്ച അതേ സെലക്ടർ ഉപയോഗിച്ച് നിർത്തുക, തുടർന്ന് ടണൽ പോയി എന്ന് കരുതുന്നതിന് പകരം അവസ്ഥ വീണ്ടും വായിക്കുക:
scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"
Disconnected-ലേക്ക് മടങ്ങുന്ന നിർത്തൽ ഇപ്പോഴും ഒരു കാര്യം പരിശോധിക്കാൻ വിടുന്നു: പ്രൊഫൈൽ ആവശ്യാനുസരണം ബന്ധിപ്പിക്കാൻ ക്രമീകരിച്ചിട്ടുണ്ടോ എന്ന്, അത് നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ഇല്ലാതെ അതിനെ തിരികെ കൊണ്ടുവരാം. അതേ Mac-ൽ മറ്റൊരു ക്ലയന്റിന് റൂട്ടുകളുണ്ടെങ്കിൽ, ആ റൂട്ടുകൾ നേറ്റീവ് നിർത്തലിനെ അതിജീവിച്ചേക്കാം. യന്ത്രം VPN-ന് പുറത്താണെന്ന് തീരുമാനിക്കുന്നതിന് മുൻപ് റൂട്ട് പരിശോധന വീണ്ടും നടത്തുക.
കൈകൊണ്ട് പ്രവർത്തിപ്പിക്കുന്ന റാപ്പറിന് ക്രമം സ്ഥിരമായി സൂക്ഷിക്കുക: പട്ടിക, അവസ്ഥ, ആരംഭം, അന്വേഷണം, റൂട്ട് പരീക്ഷ, നിർത്തൽ, പരിശോധന. ഐഡന്റിഫയർ ലഭ്യമായിരിക്കുമ്പോൾ സ്വതന്ത്ര ഫോർമാറ്റ് ഔട്ട്പുട്ടിൽ നിന്ന് സൗഹൃദ നാമം വിശകലനം ചെയ്യരുത്, ആരംഭ കമാൻഡിന്റെ എക്സിറ്റ് തയ്യാറെടുപ്പായി കരുതരുത്. കണക്ഷൻ മാനേജർ അവസ്ഥ റിപ്പോർട്ട് ചെയ്യുന്നു; നിങ്ങളുടെ തെളിവ് അവസ്ഥയും ടണലിലേക്ക് ചൂണ്ടുന്ന റൂട്ടുമാണ്.