स्प्लिट टनलिंग आमतौर पर दो तरीकों में से एक में विफल होती है। या तो वह ट्रैफ़िक जो टनल के अंदर होना चाहिए उससे बचकर निकल जाता है, या वह ट्रैफ़िक जो बाहर रहना चाहिए अंदर खींच लिया जाता है। पुराने नियम की विफलता पहला प्रकार है, और यह अधिक भ्रमित करने वाला है, क्योंकि नियम ठीक वैसे ही लागू होता है जैसे लिखा गया है। जो बदला है वह गंतव्य है: सेवा अब ऐसे पते पर जवाब देती है जिसका नाम नियम ने कभी नहीं रखा, और टनल में कुछ भी गलत नहीं है।

नियम क्या पिन करता है और DNS क्या लौटाता है

स्प्लिट-टनल नियम गंतव्यों के बारे में एक स्थिर कथन है, जिसे आमतौर पर प्रीफ़िक्स, रूट या पते की सूची के रूप में व्यक्त किया जाता है। इसका मूल्यांकन भेजने के समय पैकेट के गंतव्य के विरुद्ध होता है। होस्टनेम एक लुकअप है जो जीवनकाल और कैश के साथ पतों का एक समूह लौटाता है, और उत्तर resolver, क्वेरी प्रकार और मिनट के अनुसार भिन्न हो सकता है।

वे दो वस्तुएँ कभी एक-दूसरे से बातचीत नहीं करतीं। नियम उस प्रीफ़िक्स से मेल खाता रहता है जो उसे दिया गया था, सेवा वह पता बदलती रहती है जो वह देती है, और उनके बीच का अंतर चुपचाप बढ़ता जाता है। इसीलिए लक्षण प्रदाता के स्थानांतरण या प्रमाणपत्र नवीनीकरण के बाद दिखता है, कॉन्फ़िगरेशन बदलने के बाद नहीं। किसी ने टनल को संपादित नहीं किया, इसलिए कोई टनल की ओर नहीं देखता, और निदान नीति की ओर नहीं बल्कि ऐप की ओर बहक जाता है।

मेल टूटने के तीन तरीके

स्पष्ट मामला स्थानांतरित सेवा है: ऑपरेटर ने उसे नया पता दिया, DNS उसके पीछे चला, और अपवाद नहीं चला। दूसरा पता परिवार है जिसे नियम ने कभी कवर नहीं किया, जो तब होता है जब कोई नाम ऐसे AAAA रिकॉर्ड लौटाने लगे जिन्हें केवल IPv4 के लिए बना अपवाद अनदेखा कर देता है। तीसरा resolver का अंतर है: आंतरिक दृश्य और सार्वजनिक दृश्य एक ही नाम के लिए अलग पते लौटा सकते हैं, इसलिए आपका ऐप जो पता उपयोग करता है वह वह नहीं है जिससे आपने परीक्षण किया।

कैश किया गया कनेक्शन चौथा प्रकार है और इसे चूकना आसान है। ऐप अभी भी ऐसे पते से बात कर रहा हो सकता है जिसे उसने एक घंटे पहले हल किया था, जिसका अर्थ है कि आपका ताज़ा लुकअप और उसका खुला सॉकेट इस पर सहमत नहीं हैं कि सेवा कहाँ रहती है।

वह गंतव्य पढ़ें जो ऐप वास्तव में उपयोग करता है

ऑपरेटिंग सिस्टम और सॉकेट तालिका से पूछें, ब्राउज़र टैब से नहीं। लुकअप बताता है कि नाम अभी किस ओर हल होता है, और सॉकेट तालिका वह पता दिखाती है जिससे प्रक्रिया जुड़ी है, जो पुराना हो सकता है। कोई सिद्धांत बनाने से पहले दोनों चलाएँ, क्योंकि उनके बीच का अंतर लगभग आधे मामलों में स्वयं उत्तर है।

getent ahosts api.example.com
dig +short api.example.com A
dig +short api.example.com AAAA
ss -tnp | grep -F api
ip route get 203.0.113.40

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

तंत्र की मरम्मत करें, लक्षण की नहीं

यदि उत्पाद अनुरक्षित डोमेन-आधारित स्टीयरिंग का समर्थन करता है, तो उसका उपयोग करें और उसके दस्तावेज़ित रीफ़्रेश और दायरे के व्यवहार का पालन करें। यह एक स्थिर अनुमान को अनुरक्षित उत्तर से बदल देता है, इस कीमत पर कि सुविधा दस्तावेज़ के अनुसार काम करे।

यदि डिज़ाइन स्थिर सूची पर निर्भर है, तो उसे एक स्वामी और अद्यतन योजना दें। योजना में बताना चाहिए कि पता कैसे खोजा जाता है, परिवर्तन कौन स्वीकृत करता है और सूची से प्रदाता के स्थानांतरण का पालन कितनी तेज़ी से अपेक्षित है। स्वामी के बिना सूची ज्ञात कारण वाली भविष्य की रुकावट है।

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

इरादे के दोनों हिस्सों को सत्यापित करें

स्प्लिट-टनल डिज़ाइन के दो इरादे होते हैं, और मरम्मत को दोनों को बनाए रखना चाहिए। संरक्षित सेवा को टनल से जाना चाहिए, और बहिष्कृत श्रेणियों को उसके चारों ओर जाना जारी रखना चाहिए। मरम्मत किए गए गंतव्य से एक ताज़ा कनेक्शन परीक्षण करें, फिर किसी ऐसी चीज़ का परीक्षण करें जिसे बाहर रहना चाहिए।

curl -sv --max-time 5 https://api.example.com/ -o /dev/null 2>&1 | grep -E 'Trying|Connected to'
curl -sS --max-time 5 https://public.example/ -o /dev/null -w '%{http_code}\n'

नया पता, चुना गया तंत्र और तारीख दर्ज करें। यही नोट अगले व्यक्ति को यह निष्कर्ष निकालने से रोकता है कि VPN ने अपने ही कॉन्फ़िगरेशन को बेतरतीब ढंग से नज़रअंदाज़ किया।

संबंधित लेख