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

दो तंत्र उस लूप को रोकते हैं। एक राउटिंग तालिका में दिखाई देता है, दूसरा एप्लिकेशन के भीतर रहता है।

आंतरिक और बाहरी ट्रैफ़िक अलग-अलग निर्णय हैं

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

दोनों राउटिंग निर्णय हैं, और केवल पहला टनल का है। जब क्लाइंट ऐसा डिफ़ॉल्ट रूट इंस्टॉल करता है जो सर्वर को भी कवर करता है, तो बाहरी पैकेट भी पकड़ लिया जाता है।

लक्षण तत्काल और पूर्ण हैं। हैंडशेक पूरा होता है और फिर कुछ भी प्रवाहित नहीं होता, या रूट इंस्टॉल होने के क्षण ही कनेक्शन गिर जाता है। दोनों हालत में keepalive अब बाहर नहीं जा सकता।

विकल्प एक: एंडपॉइंट के लिए होस्ट रूट

सीधा दृष्टिकोण मूल गेटवे के माध्यम से सर्वर के पते के लिए रूट जोड़ता है। इसमें एक पंक्ति लगती है। तालिका पढ़ने वाला हर कोई इसे देख सकता है। परिवर्तन रिकॉर्ड में समझाना भी आसान है।

उसकी कमज़ोरी तब दिखती है जब अंतर्निहित पथ बदलता है. सहेजा गया रूट पुराने नेटवर्क का गेटवे और इंटरफ़ेस नाम देता है। Wi-Fi बदलने के बाद वह गेटवे न भी हो, और रूट पीछे रह जाता है, सही दिखता है और कुछ नहीं करता।

# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7

# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0

# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7

होस्टनाम इसे कठिन बनाता है। अगर एंडपॉइंट ऐसा नाम है जो कई पतों में हल होता है, तो अपवाद को वास्तव में प्रयुक्त पते को कवर करना होगा। बाद की लुकअप ऐसा कुछ लौटा सकती है जिसे रूट ने कभी कवर नहीं किया।

विकल्प दो: सॉकेट की सुरक्षा

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

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

लागत दृश्यता है। राउटिंग तालिका में कुछ भी अपवाद नहीं दिखाता, इसलिए होस्ट रूट खोजने वाले समीक्षक को कुछ नहीं मिलता और वे निष्कर्ष निकाल सकते हैं कि डिज़ाइन असुरक्षित है। सुरक्षा क्लाइंट के कोड में और उस कोड द्वारा इंस्टॉल किए गए नीति नियमों में रहती है।

दोनों के बीच चयन

सॉकेट-स्तर का तंत्र चुनें जब क्लाइंट उसका समर्थन करता है, क्योंकि वह उन नेटवर्क परिवर्तनों को झेलता है जो पिन किए गए रूट को तोड़ते हैं। होस्ट रूट तब चुनें जब अपवाद को अन्य उपकरणों के लिए दृश्यमान होना चाहिए, या जब क्लाइंट कुछ बेहतर न दे।

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

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

संबंधित लेख