टनेलबाट डिफल्ट रुट थप्नुहोस्, र टनेलका आफ्नै प्याकेटहरूले त्यसैलाई पछ्याउनेछन्। अनि तालिकामा आफैंलाई पराजित गर्ने नियम हुन्छ। सर्भरसँगको इन्क्रिप्टेड जडान आफूले स्थापना गर्न खोजिरहेको जडानभित्रै जान खोज्छ।

दुई संयन्त्रले त्यो लूप रोक्छन्। एउटा राउटिङ तालिकामा देखिन्छ, अर्को अनुप्रयोगभित्र बस्छ।

भित्री र बाहिरी ट्राफिक फरक निर्णय हुन्

अनुप्रयोग प्याकेट भर्चुअल इन्टरफेसमा प्रवेश गर्छ र इन्क्याप्सुलेट हुन्छ। नतिजा सर्भरको सार्वजनिक ठेगानामा ठेगाना गरिएको नयाँ प्याकेट हो। त्यो प्याकेटलाई भौतिक नेटवर्कमा रुट चाहिन्छ, किनकि यसको कुनै पनि भाग टनेलमा प्रवेश गर्नु हुँदैन।

दुवै राउटिङ निर्णय हुन्, र पहिलो मात्र टनेलको हो। जब क्लाइन्टले सर्भर पनि समेट्ने डिफल्ट रुट स्थापना गर्छ, बाहिरी प्याकेट पनि समातिन्छ।

लक्षणहरू तत्काल र पूर्ण हुन्छन्। ह्यान्डसेक पूरा हुन्छ र त्यसपछि केही बहँदैन, वा रुट स्थापना हुने क्षणमै जडान टुट्छ। दुवै अवस्थामा 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 अनुप्रयोगहरूलाई दिन्छ। डेस्कटप क्लाइन्टहरूले फायरवाल मार्क वा यन्त्रसँग बाँध्ने कलद्वारा समान कार्यान्वयन गर्छन्।

फाइदा यो हो कि अपवादले सुरक्षित गेटवेको सट्टा जडानलाई पछ्याउँछ। नेटवर्क परिवर्तनले अन्तर्निहित मार्ग पुनर्लेखन गर्छ, र सुरक्षित सकेट त्यससँगै सर्छ किनकि यो कहिल्यै ठेगानामा पिन गरिएको थिएन। रुट तालिका सफा रहन्छ।

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

दुईबीच छनोट

क्लाइन्टले समर्थन गरेमा सकेट-स्तरीय संयन्त्र छान्नुहोस्, किनकि यसले पिन गरिएको रुट तोड्ने नेटवर्क परिवर्तन सहन्छ। अपवाद अन्य उपकरणलाई देखिनुपर्ने भएमा, वा क्लाइन्टले राम्रो केही नदिएमा होस्ट रुट छान्नुहोस्।

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

जे रोज्नुभए पनि, त्यसलाई टनेलको स्वामित्व भएको कम्पोनेन्टसँगै राख्नुहोस्। हातले थपिएको भौंतारिने होस्ट रुट अर्को नेटवर्कसम्म काम गर्छ, अनि त्यो भोलिको रहस्यमय अवरोध बन्छ।

सम्बन्धित लेखहरू