System Settings තුළ ඔබට සුරකින ලද VPN සේවාවක් ඇත, එය ටර්මිනලයෙන් අරඹන්නට ඔබට අවශ්‍යයි. macOS තුළ ආධාරක මාර්ගය scutil --nc වේ, නමුත් පද්ධතියේම network connection manager එකට අයත් සේවා සඳහා පමණි. Menu bar එක API එක නොවේ: තෙවන පාර්ශ්‍රවය clients ට බොහෝ විට තමන්ගේ automation ඇත, සහ management service එකක් තල්ලු කරන profile එකක් දේශීය ආරම්භය ප්‍රතික්ෂේප කළ හැක. මෙය මා අනුගමනය කරන checklist එකයි: නිශ්චිත සේවාව සොයන්න, එහි තත්ත්වය කියවන්න, එය අරඹන්න, තත්ත්වය වෙනස් වන තෙක් රැඳී සිටින්න, පසුව traffic ඇත්තටම tunnel එක භාවිත කරන බව ඔප්පු කරන්න. නොගැළපෙන පළමු පියවරේදී නවතින්න, මන්ද සෑම ඊළඟ විධානයක්ම පෙර එක සාර්ථක වූ බව උපකල්පනය කරයි.

අරඹීමට උත්සාහ කිරීමට පෙර සේවාව සොයන්න

මතක ඇති profile නාමය වෙනුවට ලැයිස්තුවෙන් අරඹන්න:

scutil --nc help
scutil --nc list

සෑම පේළියක්ම තත්ත්වයක් සේවා හඳුනාගැනීම, වර්ගය සහ පෙන්වන නාමය සමඟ යුගල කරයි. හඳුනාගැනීම යනු script ලියන අගයයි, මන්ද පෙන්වන නාම පුනරාවර්තනය වන අතර සංස්කරණය කළ හැක. Apple හි scutil අත්පොත network connection mode එක විස්තර කරයි, නමුත් ස්ථාපිත --nc help එම Mac එකේ උපවිධානවල බලයලත් ලැයිස්තුවයි; පැරණි මාර්ගෝපදේශයක flag එකක් තවමත් ඔබේ macOS version එකේ ඇතැයි නොසිතන්න.

හිස් ලැයිස්තුවක් ප්‍රතිඵලයකි, දෝෂයක් නොවේ. vendor client එකක් හෝ management profile එකක් සාදන ලද සේවාවක් මෙහි නොපෙනී සක්‍රීය විය හැක, නැතහොත් native controller එකට මෙහෙයවිය නොහැකි වර්ගයක් සමඟ පෙනිය හැක. එවිට vendor ගේ මෙවලම හෝ profile ලේඛන භාවිත කරන්න. අරඹීමට යමක් තිබීම සඳහා පමණක් සමාන්තර native profile එකක් සෑදීම නරක ගනුදෙනුවකි.

වත්මන් තත්ත්වය කියවා තේරීම්කරු තහවුරු කරන්න

අරඹීමට පෙර සේවාවෙන් තත්ත්වය අසන්න, සාර්ථක ආරම්භයක් කුමක් වෙනස් කළ යුතුදැයි දැනගැනීමට:

scutil --nc status "Office VPN"

සේවා දෙකක් එකම පෙන්වන නාමය බෙදාගන්නේ නම්, නාමය අපැහැදිලිය. ඒ වෙනුවට හඳුනාගැනීම ලබා දෙන්න; විධානය දෙකම පිළිගනී, නමුත් එක් සේවාවක් තේරීමට සහතික වන්නේ හඳුනාගැනීමට පමණි. script එකක විශ්ලේෂණය කිරීමට පෙර තත්ත්ව වචනය ඔබ දන්නා එකක් දැයි පරීක්ෂා කරන්න — සාමාන්‍යයෙන් Connected, Disconnected, Connecting හෝ Disconnecting. profile එක managed දැයි ද පරීක්ෂා කරන්න, මන්ද අගුළු දමන ලද වින්‍යාසයක් විධානය පිළිගෙන එය නොසලකා හැර හෝ තහවුරු කිරීමක් ඉල්ලා සිටිය හැක.

මෙම තත්ත්ව ඇමතුම ලාභදායීය, එබැවින් automation තුළ එය ආරක්ෂකයා ලෙස භාවිත කරන්න: තත්ත්වය Disconnected විට පමණක් අරඹන්න, සහ Connecting අසාර්ථකත්වයක් ලෙස නොසලකන්න. සේවාව දැනටමත් Connected නම්, ක්‍රියාත්මක tunnel එකකට බාධා කරනවාට වඩා ආරම්භය මඟ හරින්න.

සම්බන්ධතාවය අරඹා තත්ත්වය ස්ථාවර වන තෙක් රැඳී සිටින්න

ආරම්භ ඉල්ලීම අසමමුහුර්ත වේ. ඉල්ලීම පිළිගත් විට විධානය නැවත පැමිණේ, authentication අවසන් වූ විට හෝ routes ස්ථාපනය වූ විට නොවේ. එය ධාවනය කරන්න, පසුව සීමිත රැඳීමක් සමඟ තත්ත්වය අසන්න, සහ සේවාව 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 තත්ත්වයක් සාමාන්‍යයෙන් credentials, MFA හෝ server එක දෙසට යොමු කරයි, scutil දෙසට නොවේ. විධානයට interactive login එකක් ලබා දිය නොහැක, එබැවින් token එකක් හෝ hardware key එකක් බලාපොරොත්තු වන profile එකක් Connecting තුළ රැඳී පසුව පසුබට වේ. නැවත උත්සාහ එකතු කිරීමට පෙර තත්ත්ව වචනය කියවන්න; authentication විමසුමට එරෙහි loop එකක් සාර්ථක විය නොහැක.

shell එකේ පිටවීමේ තත්ත්වය සූදානමක් ලෙස නොසලකන්න. ප්‍රයෝජනවත් සංඥාව තත්ත්ව string එකයි, ඉන්පසු tunnel එක traffic ගෙන යන බවට සාක්ෂියයි. නිහඬව නැවත පැමිණෙන ආරම්භක විධානයක් තවමත් කිසිදා authentication නොවන සම්බන්ධතාවයක් සමඟ ඔබ තැබිය හැක.

tunnel එක traffic ගෙන යන බව ඔප්පු කරන්න, Connected කීම පමණක් නොවේ

Connected සම්බන්ධතාවය විස්තර කරයි, routing තීරණය නොවේ. native PPP සහ IKEv2 සේවා ppp හෝ utun interface එකක් සාදා routes ස්ථාපනය කරයි, නමුත් split tunnel එකක් default route එක හිතාමතාම නොස්පර්ශ කර තබයි. interfaces සහ address පවුල් දෙකම පරීක්ෂා කරන්න:

ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns

අංකයක් අනුමාන කරනවාට වඩා සේවාව සාදන ලද interface එක සොයන්න, පසුව නිශ්චිත ගමනාන්තයක් භාවිත කරන interface එක routing table එකෙන් අසන්න: route -n get 10.0.0.10, එහි තැනට අභ්‍යන්තර host එකක් යොදන්න. එය භෞතික interface එක වාර්තා කරන්නේ නම්, tunnel එක ක්‍රියාත්මකයි නමුත් එම ප්‍රවාහය ගෙන යන්නේ නැත. split tunnel routes, resolver අනුපිළිවෙල, සහ tunnel interface එකට ඉඩ දී process එකට නොදෙන ඕනෑම දේශීය firewall නියමයක් පරීක්ෂා කරන්න.

නාම විභේදනය සාමාන්‍ය අසත්‍ය ඍණාත්මකයයි. tunnel එක සම්පූර්ණයෙන් සුවපත් වුවද අභ්‍යන්තර නාම වැරදි resolver එකක් හරහා විසඳිය හැක, එය VPN දෝෂයක් ලෙස පෙනේ, නමුත් එය එසේ නොවේ. scutil --dns macOS භාවිත කරන අනුපිළිවෙල පෙන්වයි; resolver වෙනසකින් පසු dscacheutil -flushcache සහ sudo killall -HUP mDNSResponder සමඟ cache හිස් කරන්න.

credentials සහ වරප්‍රසාද විධාන පේළියෙන් පිටත තබන්න

password, pre-shared key හෝ token කිසිදා arguments තුළ නොතබන්න. arguments process ලැයිස්තුවල පෙනෙන අතර shell ඉතිහාසයට ඇතුළත් වේ, සහ පිටපත් කළ support transcript එකක් ඒවා හෙළි කළ හැක. profile එකේම credentials හැසිරවීම — Keychain අයිතමයක්, system prompt එකක් හෝ client ගේ authentication ප්‍රවාහයක් — රහස් සඳහා ස්ථානයයි.

sudo සමඟ විධානය ධාවනය කිරීම interactive login එකක් අධීක්ෂණයකින් තොර නොකරයි. එය ඵලදායී පරිශීලකයා වෙනස් කරයි, GUI prompt, hardware token හෝ login keychain එකේ ලබා ගැනීමේ හැකියාව නොවේ. පරිශීලකයා login වී keychain එක විවෘත වූ පසු LaunchAgent එකකට සේවාවක් අරඹිය හැක; LaunchDaemon එකක් සාමාන්‍යයෙන් පරිශීලක සැසියේ එම කොටස් වෙත ළඟා නොවේ. සංවිධානයක් සේවාව කළමනාකරණය කරන්නේ නම්, එහි ජීවන චක්‍ර නියම ඕනෑම දේශීය script එකකට වඩා ඉහළින් පවතී.

සේවාව නවතා එය නවතා තිබුණේ දැයි තහවුරු කරන්න

අරඹීමට භාවිත කළ එම තේරීම්කරු සමඟ නවතන්න, පසුව tunnel එක ගියා යැයි උපකල්පනය කරනවාට වඩා තත්ත්වය නැවත කියවන්න:

scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"

Disconnected වෙත පසුබට වන නැවැත්වීමක් තවමත් එක් දෙයක් පරීක්ෂා කිරීමට තබයි: profile එක ඉල්ලුම මත සම්බන්ධ වීමට සකසා ඇත්ද, එය ඔබේ script එකකින් තොරව එය නැවත ගෙන ආ හැක. එම Mac එකේ තවත් client එකකට routes තිබේ නම්, එම routes native නැවැත්වීමකින් පවතින්නට පුළුවන. යන්ත්‍රය VPN එකෙන් පිටත බව නිගමනය කිරීමට පෙර route පරීක්ෂාව නැවත ධාවනය කරන්න.

අතින් ධාවනය කරන wrapper එකකට අනුපිළිවෙල ස්ථිරව තබන්න: ලැයිස්තුව, තත්ත්වය, ආරම්භය, විමසුම, route පරීක්ෂණය, නැවැත්වීම, තහවුරු කිරීම. හඳුනාගැනීම ලබා ගත හැකි විට නිදහස් ආකෘති output එකකින් මිත්‍රශීලී නාමය විශ්ලේෂණය නොකරන්න, සහ ආරම්භක විධානයේ පිටවීම සූදානමක් ලෙස නොසලකන්න. සම්බන්ධතා කළමනාකරු තත්ත්වය වාර්තා කරයි; ඔබේ සාක්ෂිය තත්ත්වය සහ tunnel එක දෙසට යොමු වන route එකයි.

අදාළ ලිපි