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 नसलेले चॅनेल असेल, प्रतीक्षा अट वेळमर्यादेसह स्थिती तपासणी असेल, आणि एक प्रक्रिया जीवनचक्राची मालक असेल।