स्क्रिप्टहरू 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 नभएको च्यानल हुन्छ, प्रतीक्षा सर्त समयसीमासहित अवस्था जाँच हो, र एक प्रक्रिया जीवनचक्रको मालिक हुन्छ।

सम्बन्धित लेखहरू