प्रत्येक प्रोफाइलसाठी वेगळ्या तपासणीसह अनेक vpnc टनेल सुरू ठेवा
पॅकेजसोबत येणारी पुन्हा-जोडणी स्क्रिप्ट एकच टनेल गृहीत धरते. प्रत्येक vpnc प्रोफाइलला स्वतःचा पोर्ट द्या, खरी सेवा तपासा आणि तपासण्या एका ठराविक क्रमाने जोडा.
एक vpnc प्रोफाइल रोमिंगनंतर स्वच्छपणे पुन्हा जोडले जाते; तीन पर्यायाने एकमेकांचे सॉकेट, रूट आणि रिझॉल्व्हरची स्थिती तोडतात। पॅकेजसोबत येणारी पुन्हा-जोडणी स्क्रिप्ट एका टनेलसाठी लिहिलेली आहे, त्यामुळे त्यापैकी कोणतेही बंद असताना ती प्रत्येक प्रोफाइल पुन्हा सुरू करते। हे दुरुस्त करण्यासाठी तीन गोष्टी लागतात: वेगळे स्थानिक पोर्ट, प्रत्येक प्रोफाइलसाठी खरी सेवा तपासणारी तपासणी, आणि एक क्रमबद्ध साखळी जी कधीही दोन जोडण्या एकत्र चालवत नाही।
प्रत्येक प्रोफाइलला स्वतःचा स्थानिक पोर्ट द्या
डीफॉल्ट स्थानिक पोर्टवर सोडलेले vpnc प्रोफाइल आधीच चालू असलेल्या प्रोफाइलशी स्पर्धा करते। पहिले पोर्ट धरून असताना दुसरी जोडणी अयशस्वी होते, आणि लॉगची ओळ स्थानिक संघर्षाऐवजी गेटवे समस्येसारखी दिसते। त्याऐवजी प्रत्येक प्रोफाइल फाइलसाठी एक ओळ ठेवा:
Local Port 0शून्य कर्नेलला तात्पुरता पोर्ट निवडू देते, त्यामुळे दोन प्रोफाइल एकाच वेळी उभारता येतात। प्रत्येक फाइलला ती सेवा देते त्या गेटवे आणि गटाच्या नावाने नाव द्या, ती केवळ root साठी वाचनीय ठेवा, आणि नेहमी सामायिक डीफॉल्टऐवजी जुळणाऱ्या प्रोफाइलने जोडा। कोणी प्रोफाइलचे नाव बदलल्यानंतर स्क्रिप्ट चुकीचे टनेल पुन्हा जोडते तो मार्ग म्हणजे सामायिक डीफॉल्ट फाइल।
प्रोफाइल फाइलींमध्ये ओळखपत्रे असतात, त्यामुळे परवानग्या रचनेचा भाग आहेत, घरकामाचा नाही। /etc/vpnc खालील सर्वांना वाचनीय फाइल गटाचे रहस्य प्रत्येक स्थानिक वापरकर्त्याला देते। मोड 0600 ठेवा आणि मालक root ठेवा, आणि स्क्रिप्टांनी रहस्ये आर्ग्युमेंटमध्ये कॉपी करण्याऐवजी फाइल root म्हणून वाचू द्या। म्हणूनच तपासणी स्क्रिप्टने कधीही फाइलचा मजकूर लॉगमध्ये छापू नये।
प्रत्येक प्रोफाइलसाठी एक सेवा तपासा, टनेलचा पत्ता नाही
टनेलच्या स्वतःच्या पत्त्यावर पाठवलेली इको विनंती मुख्यतः इंटरफेस अस्तित्वात आहे हेच सिद्ध करते। तिच्या मागील होस्ट अजूनही टनेलला न्याय देणाऱ्या अनुप्रयोगापर्यंत पोहोचतो का याबद्दल ती काहीही सांगत नाही। इंटरफेस वर असू शकतो जेव्हा त्याच्या पुढील रूट आधीच गेला असतो।
प्रत्येक प्रोफाइलसाठी एक सेवा छोट्या TCP कालमर्यादेसह तपासा आणि केवळ ज्या प्रोफाइलची तपासणी अयशस्वी झाली ती पुन्हा जोडा। दोन सेकंद मृत मार्गाला संथ मार्गापासून वेगळे करतात, आणि TCP तपासणी मार्गात कुठेही ICMPला परवानगी आहे की नाही यावर अवलंबून नाही। प्रोफाइलांमध्ये फक्त लक्ष्य आणि कॉन्फिगचे नाव बदला:
#!/bin/bash
set -eu
if ! nc -z -w 2 10.63.7.20 8443; then
/usr/sbin/vpnc-connect ops.conf
fiते /usr/local/bin/ensure-vpn-ops.sh म्हणून जतन करा, ते कार्यान्वित करण्यायोग्य करा, आणि फक्त तपासणीचे लक्ष्य आणि कॉन्फिगचे नाव बदलून प्रत्येक प्रोफाइलसाठी पुन्हा करा। प्रोटोकॉलच्या प्रश्नाचे उत्तर देणारी तपासणी अशा गेटवेमधून टिकून राहते जे इको टाकून देतात पण वापरकर्त्यांना महत्त्वाच्या सेवा अजूनही पुढे पाठवतात।
तपासण्या कधीही स्पर्धा करू नयेत म्हणून त्यांना साखळीत जोडा
पॅकेजसोबतची पुन्हा-जोडणी स्क्रिप्ट तुमच्या तपासण्या क्रमाने बोलावू शकते, आणि क्रम हाच संपूर्ण मुद्दा आहे। एकत्र चालणारे दोन vpnc-connect कॉल राउटिंग तक्ता अशा क्रमाने पुन्हा लिहितात जो कोणी नियंत्रित करत नाही, आणि अशाच प्रकारे निरोगी प्रोफाइल आपला रूट गमावते।
कॉल अग्रभागी ठेवा, खालील इंटरफेससाठी थोडा स्थिरता विलंब जोडा, आणि साखळी root च्या cron तक्त्यातून नियोजित करा, कारण टनेलचे रूट पुन्हा लिहू शकतो तो केवळ root:
#!/bin/bash
sleep 20
/usr/local/bin/ensure-vpn-ops.sh
/usr/local/bin/ensure-vpn-lab.shबूट स्क्रिप्ट आणि cron नोंदीमध्ये क्रम समान ठेवा, कारण बूटच्या वेळी वेगळ्या क्रमाने चालणारी साखळी प्रत्यक्षात दुसरा प्रोग्राम असते। जेव्हा एक प्रोफाइल दुसऱ्याच्या रूटवर अवलंबून असते, तेव्हा अवलंबित्व आधी ठेवा आणि आधीचे टनेल अजून वर येत असताना नंतरच्या तपासणीला निरुपद्रवीपणे अयशस्वी होऊ द्या।
लॉग पाहा, नंतर जाणूनबुजून एक तोडा
प्रत्येक फेरीसाठी एक ओळ नोंदवा — प्रोफाइल, तपासणीचे लक्ष्य, निकाल आणि घेतलेले पाऊल। त्याशिवाय दर मिनिटाला डगमगणारे टनेल कधीही न पडलेल्या टनेलसारखेच दिसते, आणि तपासणीतील बिघाड गेटवेच्या खंडातून वेगळा ओळखता येत नाही। साखळीने केवळ अयशस्वी प्रोफाइलला स्पर्श केला हेही लॉग सिद्ध करते। रीबूटनंतर टिकणाऱ्या जागी ते लिहा, अन्यथा पुरावा प्रक्रियेसोबत निघून जातो।
नंतर जाणूनबुजून एक टनेल तोडा आणि काय होते ते पाहा। एकच प्रोफाइल थांबवा आणि कोणत्या प्रक्रिया व रूट अजून आहेत याची खात्री करा:
pgrep -a vpnc
ip -4 route show | grep -E '10[.]63|10[.]90'
tail -n 5 /var/log/ensure-vpn.logथांबवलेले प्रोफाइलच पुन्हा जोडले जावे, आणि इतर सत्रांनी त्यांच्या प्रक्रिया व रूट दोन्ही राखावेत। जर दोन प्रोफाइल पुन्हा सुरू झाली, तर तुमची साखळी तुम्ही अपेक्षा न केलेल्या ठिकाणी समांतर चालू आहे।
पहारेकऱ्याने काय करू नये
काहीही अयशस्वी होताच सर्व पुन्हा सुरू करणारा पहारेकरी चाचणीत निरोगी दिसतो आणि देखभाल विंडोमध्ये खंड निर्माण करतो। प्रोफाइलनुसार पुन्हा सुरू करा, कधीही जागतिक पातळीवर नाही।
जेव्हा गेटवे त्याच प्रोटोकॉलसाठी देखभाल केलेला क्लायंट देतो तेव्हा तो निवडा, आणि स्क्रिप्टमध्ये पासवर्ड कधीही हार्डकोड करू नका किंवा कमांड लाइनवर देऊ नका, कारण प्रोफाइल फाइल आधीच रहस्य ठेवते। टनेल वर आल्यावर एखादे काम सामान्य वापरकर्ता म्हणून चालवायचे असल्यास, संपूर्ण साखळी त्या खात्याखाली चालवण्याऐवजी स्क्रिप्टच्या आतूनच विशेषाधिकार कमी करा। शेवटी, पुन्हा जोडल्यानंतर रूट पुन्हा वाचा, कारण प्रोफाइल वेगळ्या नेमून दिलेल्या पत्त्यासह परत येऊ शकते आणि टनेलच्या पत्त्याकडे निर्देशित कोणत्याही तपासणीला कधीही न दिसणारा जुना रूट सोडू शकते।