स्लिप हुकमा पुनः जडान आदेश राख्नुहोस्, समस्या समाधान भएको देखिन्छ। यो तब मात्र समाधान हुन्छ जब हुक नेटवर्क अस्तित्वमा आएपछि चल्छ, क्लाइन्टले चिन्ने पहिचानको रूपमा, र क्लाइन्टले साँच्चै लागू गर्ने मार्गबाट। पुनः सुरु भएपछिका अधिकांश असफलता ती तीनमध्ये एक हुन्छन्, र तीमध्ये कुनै पनि हुकमै त्रुटिका रूपमा देखिँदैन। हुकले जसरी भए पनि सफलता फर्काउँछ।

शून्यसहित बाहिर निस्कने स्क्रिप्टले तपाईंलाई टनेल फर्कियो कि फर्किएन भन्ने बारे केही भनेको छैन।

हुक चल्छ, अनि के?

#!/bin/sh
case "$1" in
  pre)
    vpn-client disconnect
    ;;
  post)
    vpn-client connect
    ;;
esac

प्रत्येक घटनाले हुकलाई दुई पटक बोलाउँछ — संक्रमणअघि र पछि — र यसलाई चरण र घटनाको नाम दिन्छ। यो न्यूनतम वातावरणमा root का रूपमा चल्छ, त्यसैले निरपेक्ष मार्ग आवश्यक छन् र डेस्कटप सत्रको कुनै चर अपेक्षा गर्नु हुँदैन। दुवै कल छिटो फर्किनुले स्क्रिप्ट चल्यो भन्ने मात्र बताउँछ। त्यसपछि प्रोफाइल माथि आयो कि आएन भन्ने अलग अवलोकन हो र लगमा यसको आफ्नै प्रमाण चाहिन्छ।

चरणको तर्कलाई डिजाइनको भाग मान्नुहोस्। pre चरणमा पुनः जडानको प्रयास तब हुन्छ जब मेसिन सबै गुमाउन लागेको हुन्छ, र यो सफल हुन सक्दैन।

Root, न्यूनतम वातावरण, गलत प्रयोगकर्ता

यदि क्लाइन्टले प्रत्येक प्रयोगकर्ताको लागि लगइन टोकन राख्छ भने, हुकलाई root का रूपमा चलाउँदा यसलाई प्रस्तुत गर्न केही बाँकी रहँदैन। हुकले वास्तवमा प्रयोग गर्ने पहिचानअन्तर्गत अवस्था जाँच्नुहोस्, डेस्कटप टर्मिनलबाट तपाईंले परीक्षण गरेको पहिचानअन्तर्गत होइन। केही बिल्डले डिस्कनेक्टपछि इन्टरफेस समातेर राख्ने डेमन पनि छोड्छन्, त्यसैले पुनः जडान पुरानो अवस्थामा पुग्छ, र पहिले प्रक्रिया सफा गर्दा यो अस्वच्छ बन्दको मूल्यमा पुनःस्थापित हुन्छ। यदि तपाईं केवल सुखद मार्ग परीक्षण गर्नुहुन्छ भने दुवै व्यवहार देखिँदैन।

हुकलाई निरपेक्ष मार्गसहित लेख्नुहोस्, यसलाई root को स्वामित्वमा र कार्यान्वयनयोग्य राख्नुहोस्, र यसले के गर्यो लग गर्नुहोस्। त्यो लगबिना अर्को अनुसन्धान शून्यबाट सुरु हुन्छ।

स्वतः जडान VPN को मार्ग होइन

NetworkManager ले दुई सक्रियण संयन्त्र दिन्छ: प्रोफाइलमा स्वतः जडान झन्डा, र प्राथमिक प्रोफाइल सक्रिय हुँदा सुरु हुने द्वितीयक जडानहरू। मूल उपकरण प्रकारले पहिलो लागू गर्छन्; VPN प्लगइनहरूले ऐतिहासिक रूपमा दोस्रो मात्र लागू गरेका छन्, त्यसैले OpenVPN प्रोफाइलमा स्वतः जडान टिक गर्दा कुनै प्रभाव नै नहुन सक्छ। दुवै गुण जाँच्नुहोस्, त्यसपछि VPN लाई Wi-Fi वा Ethernet प्रोफाइलको द्वितीयकका रूपमा जोड्नुहोस्।

[Unit]
PartOf=NetworkManager.service
Requires=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

systemd एकाइद्वारा व्यवस्थापित WireGuard इन्टरफेसलाई हुकको सट्टा त्यही ड्रप-इन चाहिन्छ, नेटवर्क अनलाइन भएपछि क्रमबद्ध।

नेटवर्कको प्रतीक्षा गर्नुहोस्, सीमासहित

timer=1
while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do
  sleep 1; timer=$((timer+1))
  [ $timer -ge 300 ] && exit 0
done
nmcli connection up "work-vpn"

पुनः सुरु हुँदा Wi-Fi अझै पुनः जोडिँदै गर्दा टनेल मागिन सक्छ, जसले कुनै पनि निश्चित स्लिपलाई अनुमान बनाउँछ। पुग्न सकिने ठेगानाको प्रतीक्षा गर्नुहोस्, त्यसपछि प्रोफाइल माथि उठाउनुहोस्, र प्रतीक्षा सीमित गर्नुहोस् ताकि हुकले पुनः सुरु हुने मार्ग अनिश्चितकालसम्म खुला राख्न नसकोस्। सङ्ख्यात्मक सूचकांकभन्दा प्रोफाइलको नाम रुचाउनुहोस्, र यदि सही प्रोफाइल नेटवर्कअनुसार फरक पर्छ भने, स्वस्थ टनेलले आफ्नो छनोट पहिले नै फाइलमा लेखोस्।

पुनः सुरु आँधीबाट पनि बच्नुहोस्, प्रयास गनेर र रोकिएर। हरेक असफल जाँचमा प्रतिक्रिया दिने वाचडगले एउटा अवरोधलाई लुपमा बदल्छ।

एक पटक सस्पेन्ड गर्नुहोस्, त्यसपछि हुकको आफ्नै आउटपुटका लागि जर्नल पढ्नुहोस्। क्रम प्रमाणित गर्ने त्यो मात्र परीक्षण हो।

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