लॉग में P_CONTROL_HARD_RESET_CLIENT_V2: क्या यह त्रुटि है?
hard-reset ऑपकोड एक सत्र खोलता है, यह खराबी नहीं है। आगे पढ़ें और वह प्रमाणपत्र, क्रेडेंशियल या रूटिंग विफलता खोजें जिसने आपको वास्तव में रोका।
यह पंक्ति हर कुछ सेकंड में दोहराई जाती है और सब कुछ का कारण लगती है: control hard reset नाम का एक पैकेट, ऐसे क्लाइंट से आता है जो कहीं नहीं पहुँचता। यह त्रुटि नहीं है। यह नए सत्र का पहला संदेश है, और दोहराव किसी और चीज़ के विफल होने का लक्षण है जो आगे चलकर होती है। लेबल क्या कहता है और कनेक्शन ने उसके बाद क्या किया, इन दोनों को अलग करना ही पूरा निदान है।
ऑपकोड प्रोटोकॉल में एक स्थान बताता है
OpenVPN एक ही सॉकेट पर कई तरह के पैकेट बहुसंकेतित करता है, और ऑपकोड प्राप्तकर्ता को बताता है कि उसके हाथ में कौन-सा प्रकार है। hard-reset पैकेट सत्र खोलते हैं, नियंत्रण पैकेट हैंडशेक सामग्री ले जाते हैं, पावतियाँ प्राप्ति की पुष्टि करती हैं और डेटा पैकेट टनल का भार ले जाते हैं। पहला बाइट पढ़ने से पता चलता है कि इस अदला-बदली में पैकेट कहाँ आता है, और स्रोत कोड में पैकेट परिभाषाएँ हर परिवार का नाम स्पष्ट रूप से बताती हैं।
यह बस इतना ही कहता है। प्रारंभिक क्लाइंट रीसेट के रूप में चिह्नित पैकेट सिद्ध करता है कि पैकेट आपके अवलोकन बिंदु तक पहुँचा और सहकर्मी सत्र शुरू करना चाहता है। यह सिद्ध नहीं करता कि क्लाइंट ने आपके प्रमाणपत्र पर भरोसा किया, उसके क्रेडेंशियल स्वीकार हुए, या डेटा चैनल कभी उपयोगी बना।
V2 प्रत्यय उस पैकेट परिवार के लिए प्रोटोकॉल पीढ़ी का चिह्न है, उत्पाद संस्करण नहीं और आप जो सेटिंग स्थापित करते हैं वह भी नहीं। नाम में कुछ भी टनल रीसेट करने, सेवा पुनः आरंभ करने या कैश साफ़ करने से संबंधित नहीं है।
उस क्षण क्लाइंट वास्तव में क्या कर रहा है
क्लाइंट एक सत्र पहचानकर्ता खोलता है जिससे दोनों पक्ष आगे का नियंत्रण ट्रैफ़िक जोड़ेंगे। नियंत्रण-चैनल सुरक्षा कॉन्फ़िगर होने पर वह पहला पैकेट पहले से HMAC ले जाता है जो प्राप्तकर्ता को तय करने देता है कि बाकी अदला-बदली पर श्रम करना उचित है या नहीं। जो प्राप्तकर्ता इसे सत्यापित नहीं कर सकता वह पैकेट चुपचाप गिरा देता है, इसलिए गलत साझा कुंजी ऐसे दिखती है जैसे क्लाइंट शून्य में बोल रहा हो।
उपयोगकर्ता को दिखने वाला कुछ भी अभी नहीं हुआ है। कोई प्रमाणपत्र मान्य नहीं हुआ, कोई उपयोगकर्ता नाम प्रस्तुत नहीं हुआ और कोई टनल पता नहीं दिया गया। रीसेट हैंडशेक की प्रस्तावना है, इसलिए इस क्षण कनेक्शन के बारे में कोई भी निर्णय समय से पहले है।
निष्क्रिय पुनः कनेक्शन लूप में दिलचस्प ब्योरा अंतराल है। जो क्लाइंट निश्चित चक्र में बिना प्रगति के फिर कोशिश करता है, उसे सामान्यतः आगे बढ़ने से पहले अस्वीकार कर दिया जाता है, और कारण सहकर्मी के लॉग में है, पैकेट के नाम में नहीं।
रीसेट के बाद असली विफलता कहाँ छिपी है
दोनों लॉग साथ-साथ पढ़ें और वह पहली घटना खोजें जो रीसेट न हो। क्लाइंट पर प्रमाणपत्र सत्यापन विफलता ठोस कारण के साथ बताई जाती है: समाप्त प्रमाणपत्र, नाम में असंगति या अज्ञात जारीकर्ता। सर्वर पर क्रेडेंशियल अस्वीकृति अपने कारण के साथ प्रमाणीकरण विफलता के रूप में बताई जाती है। दोनों सर्वर के नए प्रयासों पर दोहराए गए नज़रिए से कहीं अधिक ठोस हैं।
हर लॉग को अलग पढ़ने के बजाय एक प्रयास को समय-चिह्न से मिलाएँ, क्योंकि वही विफलता दोनों जगह अलग शब्दों और अलग गंभीरता के साथ दिखती है। जो सहकर्मी हार मानता है वह सामान्यतः कारण बताता है।
अगर कोई भी पक्ष अस्वीकृति नहीं बताता और अदला-बदली फिर भी अटक जाती है, तो सीमा पहुँच है, भरोसा नहीं। वापसी दिशा गिराने वाला फ़ायरवॉल, नेटवर्क पता अनुवाद उपकरण जिसका मैपिंग समाप्त हो जाता है, या MTU समस्या जो बड़े हैंडशेक पैकेट मार देती है, ये सभी बिना किसी प्रमाणीकरण त्रुटि के अटकी हुई अदला-बदली पैदा करते हैं।
grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log
यह खोज अपने आप में निदान नहीं है, पर यह एक ही कदम में आपको प्रोटोकॉल की शब्दावली से वास्तविक विफलता वर्ग तक ले जाती है।
सत्यापन हटाना गलत प्रतिक्रिया क्यों है
जब रीसेट दिखता रहता है, तो सबसे तेज़ दिखने वाला उपाय प्रमाणपत्र सत्यापन बंद करना या कुछ जुड़ जाए इसलिए नियंत्रण-चैनल सुरक्षा छोड़ देना है। यह एक निदान-योग्य विफलता को निदान-रहित विफलता से बदल देता है और तैनाती को ऐसे सहकर्मियों को स्वीकार करने पर छोड़ देता है जिन्हें अस्वीकार करने के लिए इसे बनाया गया था।
इसके बजाय उस सीमा को बदलें जो वास्तव में विफल हुई। भरोसे की समस्या प्रमाणपत्र प्राधिकरण और उसका उल्लेख करने वाली प्रोफ़ाइल की है। समय की समस्या घड़ी की है। क्रेडेंशियल की समस्या उस प्रमाणीकरण बैकएंड की है जिसने उन्हें अस्वीकार किया, और अगम्य सहकर्मी दोनों होस्टों के बीच के मार्ग का है।
सहायता बातचीत में ऑपकोड एक काम के लिए उपयोगी है: यह बताता है कि सहकर्मी कोशिश करने तक पहुँच गया। उसके बाद क्या हुआ, यही आपको जानना है, और यह उस लॉग में लिखा है जो पहली ठोस अस्वीकृति दर्ज करता है। वहीं से शुरू करें, फिर रीसेट पंक्ति कारण जैसी दिखना बंद कर देती है और समय-चिह्न जैसी दिखने लगती है।