सिस्टम सेटिंग्जमध्ये तुमच्याकडे जतन केलेली 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 बाहेर आहे असा निष्कर्ष काढण्यापूर्वी मार्ग तपासणी पुन्हा करा।

हाताने चालवल्या जाणाऱ्या रॅपरसाठी क्रम स्थिर ठेवा: यादी, स्थिती, सुरुवात, चौकशी, मार्ग चाचणी, थांबवणे, पडताळणी। ओळखकर्ता उपलब्ध असताना मुक्त-स्वरूप आउटपुटमधून मैत्रीपूर्ण नावाचे विश्लेषण करू नका, आणि सुरुवात आदेशाचे निर्गमन तयारी मानू नका। कनेक्शन मॅनेजर स्थिती सांगतो; तुमचा पुरावा म्हणजे स्थिती आणि टनेलकडे निर्देश करणारा मार्ग।

संबंधित लेख