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

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

नेटवर्क आपको प्रभावित कर सकता है, दो तरीक़ों से

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

मार्ग पर मौजूद उपकरण को दूसरे मामले को प्रभावित करने के लिए आपकी कुंजियों की ज़रूरत नहीं। उसे बस इतना चाहिए कि आपका एंडपॉइंट कोई रूट, रिज़ॉल्वर या नीति-नियम स्वीकार करे जो एक बना दे।

expected:  app -> tunnel device -> encapsulation -> internet
observed:  app -> wlan0        -> plaintext     -> internet

टनल के अस्तित्व में आने से पहले रूट कहाँ से आ सकता है

DHCP सिर्फ़ पते का पट्टा नहीं बाँटता। क्लासलेस स्टैटिक रूट विकल्प गंतव्य प्रीफ़िक्स और अगले हॉप ले जा सकता है, और RFC 3442 गलत राउटर पते के सुरक्षा परिणामों पर चर्चा करता है: भटकाया गया ट्रैफ़िक, सेवा-अस्वीकृति, या मार्ग पर बैठा कोई प्रेक्षक। जो क्लाइंट टनल उठने से पहले ये रूट स्वीकार कर लेता है, वह ऐसे पसंदीदा मार्ग पर पहुँच सकता है जिसका आपके प्रदाता से कोई संबंध नहीं।

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

IPv6 अपनी अलग पारी का हक़दार है, क्योंकि राउटर घोषणाएँ डिफ़ॉल्ट रूट को DHCPv4 विकल्प से अलग कोड से ले जाती हैं। जो परीक्षण सिर्फ़ v4 तालिका देखता है, उसने इसे नहीं ढका।

जो मार्ग कर्नेल वास्तव में चुनता है, उसे जाँचें

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

ip route get 203.0.113.10
ip route show table all | grep -E '^(default|203\.0\.113)'
ip rule show
resolvectl query example.com

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

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

तय करें कि प्रवर्तन कहाँ रहना चाहिए

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

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

हर क्लाइंट अपग्रेड और हर नेटवर्क बदलाव के बाद लुकअप कमांड दोबारा चलाएँ, और पिछले दर्ज आउटपुट से तुलना करें। रूट तालिका ही प्रवर्तन की सीमा है, इसलिए इसे वैसे ही मानें।

संबंधित लेख