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

उन दो प्रवाहों से शुरू करें जिन्हें आप अलग करना चाहते हैं

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

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

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

लिफ़ाफ़े को ढोने वाले सॉकेट को चिह्नित करें

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

mark 42
route-noexec
disable-dco

दशमलव 42 हेक्साडेसिमल 0x2a है, और हेक्स रूप वही है जिससे रूटिंग नियम मेल खाएँगे। link-options का संदर्भ mark को Linux पर एन्क्रिप्टेड आउटगोइंग पैकेट पर लागू होने वाली चीज़ बताता है, यानी ठीक वही सॉकेट जिसका मार्ग आपको नियंत्रित करना है। डेटा चैनल का ऑफ़लोड बंद करने से यह उदाहरण उपयोगकर्ता-स्पेस मार्ग पर रहता है, जहाँ चिह्न का व्यवहार बताया गया वाला ही है।

route-noexec OpenVPN द्वारा मार्गों के स्वचालित जोड़ने और हटाने को दबा देता है। यह उनकी जगह कुछ भी स्थापित नहीं करता, इसलिए इस क्षण से मार्गों के स्वामी को टनल के लिए आवश्यक हर मार्ग बनाए रखना होता है। यदि बदलाव के बाद कोई निजी गंतव्य गायब हो जाए, तो वह अनुपस्थित प्रतिस्थापन नीति है, चिह्न का दोष नहीं।

ऐसा करते समय 198.51.100.25 के लिए मुख्य तालिका में होस्ट मार्ग न रखें। ऐसा मार्ग ठीक उसी छूट को फिर ले आता है जिसे डिज़ाइन सीमित करना चाहता है, और नीचे की किसी भी नीति से पूछे जाने से पहले यह HTTPS प्रवाह के लिए जीत जाएगा।

बाकी सब कुछ टनल तालिका में भेजें

जैसे ही टनल इंटरफ़ेस मौजूद होता है और अपना पता रखता है, नीति ऐसी दिखती है:

ip -4 route add default dev tun1 src 10.90.0.10 table 47100
ip -4 rule add priority 20000 lookup main suppress_prefixlength 0
ip -4 rule add priority 20001 not fwmark 0x2a lookup 47100
ip -4 rule add priority 20002 not fwmark 0x2a unreachable

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

बिना चिह्न वाला ट्रैफ़िक फिर टनल तालिका में गिरता है, टनल स्रोत लेता है और VPN से बाहर निकलता है। चिह्नित ट्रैफ़िक अगले दो नियमों पर fwmark परीक्षण में विफल होता है और सूची में नीचे की ओर सामान्य मुख्य खोज की ओर बढ़ता है, जहाँ अपलिंक का डिफ़ॉल्ट मार्ग अब भी है। अंतिम unreachable नियम वही है जो टनल मार्ग न होने पर बिना चिह्न वाले प्रवाह को चुपचाप अपलिंक पर लौटने से रोकता है। चयनकर्ता शुरू से अंत तक चिह्न है, और गंतव्य पता कभी निर्णय में नहीं आता।

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

वापसी मार्ग को वही चिह्न दिखने दें

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

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

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

इसे दो मार्ग खोजों से सिद्ध करें

तुलना करें कि कर्नेल दो संदर्भों के लिए क्या तय करता है, और निकास स्थिति के बजाय dev और src फ़ील्ड पढ़ें:

ip -4 route get 198.51.100.25
ip -4 route get 198.51.100.25 mark 0x2a

पहली खोज टनल स्रोत के साथ tun1 पर हल होनी चाहिए, और दूसरी अपलिंक पर। ये कृत्रिम खोजें हैं, इसलिए ये नीति सिद्ध करती हैं, चल रही प्रक्रिया नहीं: चल रहे क्लाइंट का वास्तविक परिवहन मार्ग अलग से पुष्टि करें, फिर प्रमाणपत्र सत्यापन चालू रखते हुए असली HTTPS अनुरोध करें।

समाप्त घोषित करने से पहले लिखें कि डिज़ाइन क्या कवर नहीं करता। DNS, IPv6 और नियमों का जीवनचक्र हर एक के अपने निर्णय की माँग करते हैं, और यह IPv4 रूटिंग का उदाहरण है, पूरा गोपनीयता कॉन्फ़िगरेशन नहीं। इसका मूल्य चयनकर्ता है: लिफ़ाफ़े को अपलिंक की छूट मिलती है, और उसी पते पर साधारण सेवा को उसे विरासत में लेने की ज़रूरत नहीं।

संबंधित लेख