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

जाँच भनेको बाँकी सबै निर्धारण गर्ने भाग हो।

इन्टरनेटमा पिङले वास्तवमा के प्रमाणित गर्छ

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

त्रुटिको दुवै दिशामध्ये एउटा पनि निर्गमन कोडमा देखिँदैन। त्यो सङ्केतमा बनेको वाचडग भनेको cron तालिकासहितको सिक्का उफार्नु हो।

सुरुङको पछाडि बस्ने कुनै कुरा जाँच्नुहोस्

ip -brief addr show tun0
ip route get 10.100.20.10
nc -z -w3 10.100.20.10 443

भित्रबाट जाँच्नुहोस्, सबैभन्दा सस्तो जाँच पहिले। इन्टरफेस छ कि भन्नेले सुरुङ माथि छ भन्छ; ज्ञात आन्तरिक ठेगानामा मार्ग खोजले ट्राफिक त्यहाँ जान्छ भन्छ; अर्को छेउको होस्टमा TCP जाँचले साँच्चै केही जवाफ दिइरहेको छ भन्छ। केवल इको अनुरोधहरू भ्रमित गर्छन्: धेरै आन्तरिक होस्टहरू खुसीसाथ TCP मा जवाफ दिन्छन् तर ICMP फ्याँकिदिन्छन्, त्यसैले पिङमा बनेको वाचडग कहिल्यै काम गर्न नछाडेको सुरुङलाई बारम्बार पुनः जोड्छ।

जाँचलाई समयमा सीमित राख्नुहोस् र यसलाई छुट्टै निर्गमन स्थिति दिनुहोस्। तीस सेकेन्ड झुन्डिने जाँचले वाचडगलाई भित्री ढिलाइ भएको अवरोध पत्ता लगाउने यन्त्र बनाउँछ।

एक लाइन र लुपबीच छान्नुहोस्

* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect

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

failures=0
while sleep 30; do
  if nc -z -w5 10.100.20.10 443; then failures=0
  else failures=$((failures+1)); fi
  if [ $failures -ge 3 ]; then myvpn reconnect; failures=0; fi
done

त्यो लुपले विन्डोभरिको अनुपातको सट्टा लगातार असफलताहरू गन्छ। विन्डोलाई घडी र नमुनाहरूको स्मृति चाहिन्छ, र हातले बनाइएका वाचडगका अधिकांश बग त्यही गणितमा बस्छन्।

सर्भर परिवर्तन अर्को निर्णय हो

सर्भर बदल्नु पुनः जडानभन्दा फरक हुन्छ। पहिले पुरानो लिङ्क च्यात्नुहोस्, किनकि पहिलोले अझै ठेगाना समातिरहेको बेला सुरु हुने दोस्रो क्लाइन्ट ठोकिन्छ। बदल्नु अघि लगातार असफलताहरू गन्नुहोस्, प्रयासहरूमा सीमा राख्नुहोस्, र नयाँ लिङ्क माथि आएपछि फेरि जाँच्नुहोस्, connect आदेशको निर्गमन स्थितिमा भरोसा गर्नुको सट्टा। गलत कन्फिगरेसनले लुपमा हरेक सर्भर घुम्नु हुँदैन।

पूर्ण सुरुङभित्रबाट VPN सर्भरको आफ्नै सार्वजनिक ठेगाना जाँच्नु हुँदैन। त्यो जाँचले जुन कुरा परीक्षण गरिरहेको छ त्यसैमा निर्भर गर्छ, र जुन मार्ग प्रमाणित गर्नुपर्ने थियो त्यो गइसकेपछि पनि सफलता रिपोर्ट गर्छ।

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

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