OpenVPN क्लायंट पुन्हा जोडणे: तीन नियंत्रणे, तीन व्याप्ती
एक सत्र सोडणे, प्रत्येक UDP क्लायंटला कळवणे आणि डेमन पुन्हा सुरू करणे या वेगवेगळ्या क्रिया आहेत. आधी व्याप्ती ठरवा, नंतर नवीन सत्र पडताळा.
कोणीतरी VPN क्लायंट पुन्हा जोडायची विनंती करतो, आणि या विनंतीचा अर्थ तीन वेगळ्या गोष्टी असू शकतो। त्याचा अर्थ एक प्रमाणित सत्र सोडणे, प्रत्येक क्लायंटला UDP सर्व्हर जात आहे हे कळवणे, किंवा डेमनलाच पुन्हा सुरू करणे असू शकतो। प्रत्येकाचा प्रभाव-त्रिज्या वेगळा असतो, आणि चुकीची निवड एका वापरकर्त्यासाठीची दुरुस्ती संपूर्ण सेवा खंडात बदलते। व्याप्ती हाच निर्णय आहे, आणि आदेश त्यातून येतो।
कोणते नियंत्रण वापरायचे हे विचारण्यापूर्वी कोणावर परिणाम व्हायला हवा हे विचारा।
एक इन्स्टन्स: व्यवस्थापन इंटरफेस
संरचित व्यवस्थापन इंटरफेस जोडलेल्या इन्स्टन्सची यादी करू शकतो आणि त्यांपैकी नेमका एक सोडू शकतो। प्रत्येक सत्र एक क्लायंट ओळखपत्र घेऊन जाते, आणि client-kill CID सामान्य नावाऐवजी त्याच ओळखपत्राला लक्ष्य करते। सध्याच्या स्थिती आउटपुटमधून जिवंत ओळखपत्र वाचा, कारण जुन्या लॉगमधून कॉपी केलेले मूल्य अशा सत्राचा संदर्भ देते जे आता अस्तित्वात नाही। इन्स्टन्स सोडल्याने तेच कनेक्शन संपते, दुसरे काही नाही।
यामुळे नवीन कनेक्शनची हमी मिळत नाही। क्लायंट परत येईल का, हे त्याच्या पुनर्प्रयत्न सेटिंग्ज, उरलेल्या दूरस्थ नोंदी, त्याच्या प्रमाणीकरण आवश्यकता आणि देखरेख करणारे अनुप्रयोग अजून चालू आहे का यावर अवलंबून असते। परत येणाऱ्या क्लायंटला नवे ओळखपत्र मिळते, म्हणूनच ओळखपत्रांची तुलना हाच जुने आणि नवे वेगळे करण्याचा एकमेव विश्वासार्ह मार्ग।
UDP निर्गमन सूचना प्रति-क्लायंट आदेश नाही
explicit-exit-notify निर्गमन आणि पुन्हा सुरू होण्याच्या घटनांबद्दलची संरचना सूचना आहे। UDP क्लायंटवर ती दुसऱ्या बाजूला सत्र संपत आहे हे सांगते, आणि संख्यात्मक वितर्क सूचना किती वेळा पुनरावृत्ती होईल हे नियंत्रित करते। सर्व्हर UDP वर चालतो तेव्हा तो जोडलेल्या क्लायंटना पुन्हा सुरू करण्याचा नियंत्रण संदेश पाठवतो, आणि नोंदवलेली मूल्ये त्याच सर्व्हरशी पुन्हा जोडणे आणि दुसऱ्या दूरस्थ नोंदीकडे जाणे यात फरक करतात। हा विस्तृत प्रेक्षकवर्ग असलेला जीवनचक्र संकेत आहे।
त्यात काहीही कोणत्याही क्षणी कोणत्याही अनियंत्रित क्लायंटची निवड करत नाही। त्याला पुन्हा जोडण्याचे बटण मानल्यास एकाच वेळी प्रत्येक जोडलेल्या सत्रापर्यंत पोहोचते।
संकेत सत्रावर नाही, प्रक्रियेवर काम करतात
SIGUSR1 चालू प्रक्रियेला संरचना पुन्हा न वाचता आपले कनेक्शन पुन्हा सुरू करण्यास सांगते, आणि टिकाऊपणाचे पर्याय त्या पुन्हा सुरुवातीतून काय टिकेल हे ठरवतात। SIGHUP अधिक पुढे जाते: ती संरचना फाइल पुन्हा वाचते आणि आपली संसाधने पुन्हा उघडते। SIGTERM आणि SIGINT सुव्यवस्थित बंदीची विनंती करतात। हे प्रक्रिया-स्तराच्या क्रिया आहेत: बहु-क्लायंट सर्व्हरवर त्या प्रक्रियेने वाहून नेलेल्या प्रत्येक सत्रावर परिणाम करतात, तिकिटात नमूद केलेल्या सत्रावर नाही।
प्रक्रिया सेवा व्यवस्थापकाखाली चालत असेल तर प्रक्रिया यादीत सापडलेल्या PID ला संकेत पाठवण्याऐवजी व्यवस्थापकाचे स्वतःचे नियंत्रण वापरा। व्यवस्थापक कोणता संकेत पाठवतो हे पाहण्यासाठी युनिट वाचा, कारण पुन्हा सुरू करणे आणि पुन्हा लोड करणे एकाच डेमनवर वेगवेगळ्या गोष्टी करतात।
नियंत्रण निवडण्यापूर्वी व्याप्ती ठरवा
तीन प्रश्न हे ठरवतात। कोणावर परिणाम व्हायला हवा: एक वापरकर्ता, एका सर्व्हरचे प्रत्येक क्लायंट, किंवा डेमन आणि ते वाहून नेते ते सर्व। काय टिकले पाहिजे: संरचना, बोगद्याची स्थिती, किंवा यापैकी काहीही नाही। कोणाला याचा अधिकार आहे: व्यवस्थापन एकत्रीकरण, सेवेचा मालक, किंवा निर्गमन सूचना नियंत्रित करणारा नेटवर्क ऑपरेटर। यांना उत्तर द्या आणि फक्त एकच नियंत्रण बसते।
पुन्हा जोडण्याचे बटण मिळवण्यासाठी प्रमाणीकरणाशिवाय नियंत्रण श्रोता जोडणे पोर्टपर्यंत पोहोचू शकणाऱ्या प्रत्येकाला त्या बटणापेक्षा खूप जास्त देते।
नवीन सत्र पडताळा, डिस्कनेक्शन नाही
डिस्कनेक्शन घटना सिद्ध करते की जुने सत्र संपले। नवीन सत्र प्रमाणित होत आहे, पत्ता मिळवत आहे, मार्ग स्थापित करत आहे किंवा वापरकर्त्याला आवश्यक असलेल्या संसाधनापर्यंत पोहोचत आहे याबद्दल ती काहीही सांगत नाही। नवे ओळखपत्र तपासा, नंतर बोगद्याची स्थिती, नंतर एक वास्तविक संसाधन। तेच तीन टप्पे पुन्हा जोडणे आणि कार्यरत कनेक्शन यातील फरक आहेत।
बदल नोंदीत व्याप्ती लिहा। 'मी क्लायंट पुन्हा जोडला' हे वर्णन नाही जेव्हा क्लायंट सामायिक सर्व्हरवर चाळीसपैकी एक होता।