OpenVPN redirect-gateway: हर फ़्लैग रूट के साथ क्या करता है
यह निर्देश अपने फ़्लैग के अनुसार आपके डिफ़ॉल्ट रूट को टनल से बदल देता है। इस पर भरोसा करने से पहले इंस्टॉल किए गए रूट और IPv6 तालिका जाँचें।
प्रोफ़ाइल में redirect-gateway के साथ कनेक्ट करें, और आपकी मशीन का डिफ़ॉल्ट रूट गायब हो सकता है, दो हिस्सों में बँट सकता है, या ठीक वहीं रह सकता है जहाँ था, ऐसे फ़्लैग के आधार पर जिन्हें कोई दो बार नहीं पढ़ता। यह विकल्प केवल रूटिंग स्थिति बदलता है और कुछ नहीं, इसलिए इसने क्या किया इसका एकमात्र भरोसेमंद प्रमाण वह तालिका है जो क्लाइंट ने बाद में इंस्टॉल की। आगे वह तालिका है जो कनेक्शन के बाद होती है, वह रूट जो टनल को ही जीवित रखता है, और वह IPv6 ट्रैफ़िक जिसे कवर करने का दावा यह निर्देश कभी नहीं करता। हर चरण एक कमांड है जिसे आप टनल चालू रहने के दौरान क्लाइंट पर चला सकते हैं।
हर फ़्लैग डिफ़ॉल्ट रूट के साथ क्या करता है
बिना किसी फ़्लैग के, विकल्प सामान्य डिफ़ॉल्ट रूट हटा देता है और उसकी जगह टनल रख देता है, इसलिए कनेक्शन चालू रहने के दौरान पुराना गेटवे तालिका से गायब हो जाता है। def1 जोड़ें और वह डिफ़ॉल्ट सूची में बना रहता है, दो संकरे रूट काम करते हैं। bypass-dhcp जोड़ें और DHCP रूट भी बचा रहता है, जो ऐसे नेटवर्क में मायने रखता है जहाँ क्लाइंट को अभी भी स्थानीय DHCP सर्वर तक पहुँचना है। OpenVPN 2.6 मैनुअल पृष्ठ की फ़्लैग सूची एक बार पढ़ने के लिए काफ़ी छोटी है, और हर प्रविष्टि बदलती है कि कौन-से रूट तालिका में पहुँचेंगे।
धकेला गया विकल्प पहुँचते ही वैसा ही व्यवहार करता है, इसलिए क्लाइंट प्रोफ़ाइल में कुछ भी न हो सकता है जबकि तालिका पूरी तरह पुनर्निर्देशित दिखती है। यह सामान्य है: सर्वर ने फ़्लैग भेजे, क्लाइंट ने उन्हें लागू किया, और स्थानीय फ़ाइल ने निर्देश का कभी ज़िक्र नहीं किया। जब कोई पुश कुछ न करता दिखे, क्लाइंट-पक्षीय फ़िल्टर जाँचें जो खींचे गए विकल्पों को स्वीकार या अस्वीकार करता है, क्योंकि अस्वीकृत विकल्प किसी भी छोर पर त्रुटि नहीं देता।
def1 आपके डिफ़ॉल्ट को छुए बिना विशिष्टता से जीतता है
दो अर्ध-डिफ़ॉल्ट रूट मिलकर IPv4 स्थान को ढकते हैं, 0.0.0.0/1 और 128.0.0.0/1। हर एक 0.0.0.0/0 से अधिक विशिष्ट है, इसलिए खोज उन्हें प्राथमिकता देती है जबकि असली डिफ़ॉल्ट तालिका में रहता है हर उस चीज़ के लिए जो सबसे कम विशिष्ट मिल माँगती है।
प्रोफ़ाइल नहीं, तालिका पढ़ें, क्योंकि केवल तालिका दिखाती है कि आप उनमें से किस स्थिति में हैं। उन्हें अलग करने के लिए दो पंक्तियाँ काफ़ी हैं:
ip route show default
ip route show | grep -E '^(0\.0\.0\.0/1|128\.0\.0\.0/1)'
हर पंक्ति पर इंटरफ़ेस और मीट्रिक पर ध्यान दें, केवल गंतव्य पर नहीं। टनल की ओर इशारा करता डिफ़ॉल्ट और टनल की ओर इशारा करती अर्ध-डिफ़ॉल्ट की जोड़ी एक ही इरादा बताती है और टनल गिरने पर अलग तरह से विफल होती है, क्योंकि एक स्थिति में फ़ॉलबैक अभी भी मौजूद है। दोनों फ़ील्ड बदलाव नोट में लिखें। बचा हुआ फ़ॉलबैक कभी-कभी दूरस्थ सत्र को टनल ठीक करने के लिए पर्याप्त समय तक जीवित रखता है, और इरादा पूरी टनल होने पर ट्रैफ़िक लीक करने वाला भी वही है।
टनल के अंतिम सिरे को पहुँच योग्य रखें
क्लाइंट को टनल के दूर वाले सिरे तक ऐसा रूट चाहिए जो खुद टनल से न गुज़रे। OpenVPN कुछ और बदलने से पहले वह होस्ट रूट इंस्टॉल करता है, और हाथ से रूट संपादन या दूसरा VPN क्लाइंट उसे हटा सकता है। इसके बाद लक्षण ऐसा कनेक्शन है जो कहता है कि जुड़ा हुआ है और फिर कुछ पास नहीं करता।
टनल चालू रहने के दौरान कर्नेल से पूछें कि वह अंतिम बिंदु के पते के लिए कौन-सा इंटरफ़ेस इस्तेमाल करेगा। उत्तर में भौतिक इंटरफ़ेस और उसका गेटवे होना चाहिए, कभी tun0 नहीं:
ip route get 198.51.100.20
अगर वह खोज टनल डिवाइस लौटाती है, तो टनल अपना परिवहन खुद ढो रही है और जैसे ही किसी पैकेट को बाहर जाना होगा वह ढह जाएगी। स्थानीय प्रीफ़िक्स, दूसरा एडाप्टर और नीति-आधारित रूटिंग यहाँ अभी भी मायने रखते हैं, इसलिए साफ़ लैपटॉप पर काम करने वाला पुनर्निर्देशन प्रबंधन इंटरफ़ेस और दो डिफ़ॉल्ट वाले होस्ट पर विफल हो सकता है। आमतौर पर प्रोफ़ाइल को दोष दिया जाता है जबकि काम पता योजना ने किया होता है।
IPv6 ट्रैफ़िक अपनी ही तालिका का उपयोग जारी रखता है
IPv4 को पुनर्निर्देशित करना IPv6 को अछूता छोड़ देता है, और दोनों परिवार अलग-अलग फ़्लैग से बदलते हैं। काम करते v6 डिफ़ॉल्ट वाले दोहरे-स्टैक होस्ट पर, v4 ट्रैफ़िक पूरी तरह टनल के अंदर रह सकता है जबकि v6-सक्षम हर गंतव्य भौतिक लिंक से बाहर जाता है। जो होस्ट एक तालिका में सही दिखता है वह दूसरी में लीक करता है।
कनेक्ट करने के बाद v6 तालिका जाँचें, यह मानने के बजाय कि टनल ने उसे ढक लिया। निर्देश ठीक इसी कारण पता-परिवार के फ़्लैग रखता है, और जो प्रोफ़ाइल उन्हें छोड़ देता है वह प्लेटफ़ॉर्म के डिफ़ॉल्ट व्यवहार को विरासत में पाता है:
ip -6 route show default
ip -6 route get 2001:db8::10
साबित करें कि कोई अनुप्रयोग कौन-सा इंटरफ़ेस इस्तेमाल करता है
जुड़ी हुई स्थिति कोई अवरोध नहीं है, और रूट बदलाव कोई किल स्विच नहीं है। अगर टनल विफल होने पर सीधा ट्रैफ़िक रुकना चाहिए, तो वह नीति फ़ायरवॉल में रहती है और उसे अपना परीक्षण चाहिए।
अनुप्रयोग वास्तव में जो रास्ता लेता है उसका परीक्षण करें, प्रोफ़ाइल जो रास्ता बताता है उसका नहीं। पहले रूट माँगें, फिर बारी-बारी से हर इंटरफ़ेस से अनुरोध बाँधें और तुलना करें कि दूर वाला पक्ष क्या बताता है:
ip route get 203.0.113.10
curl -s --interface tun0 https://ifconfig.me
curl -s --interface eth0 https://ifconfig.me
अगर दोनों अनुरोध एक ही पता लौटाते हैं, तो अनुप्रयोग टनल का उपयोग नहीं कर रहा, भले ही रूटिंग तालिका कहे कि उसे करना चाहिए। अगर केवल टनल से बँधा अनुरोध सफल होता है, तो उस गंतव्य के लिए भौतिक रास्ता फ़िल्टर है और टनल वही कर रही है जो आपने माँगा। फ़्लैग, इंस्टॉल किए गए रूट, अंतिम बिंदु की खोज और दोनों निकास परिणाम बदलाव रिकॉर्ड में लिखें, ताकि अगला व्यक्ति स्क्रीनशॉट के बजाय तथ्य विरासत में पाए।