कैसे एक स्थानीय SSH फ़ॉरवर्ड TCP OpenVPN सत्र ले जाता है
एक स्थानीय पोर्ट, दो प्रमाणित संबंध, तीन ट्रांसपोर्ट। SSH फ़ॉरवर्ड क्या ले जाता है, और लूप तथा प्रमाणपत्र जाँच कहाँ अब भी लागू होती हैं।
यहाँ तीन ट्रांसपोर्ट तहें जमा होती हैं, और हर एक का अपना फ़्रेमिंग है। VPN पेलोड TLS सत्र के भीतर जाता है, वह TLS सत्र लूपबैक पोर्ट तक TCP कनेक्शन के भीतर जाता है, और उस कनेक्शन के बाइट्स SSH के भीतर एक रिले होस्ट तक जाते हैं, जो VPN श्रोता तक असली TCP कनेक्शन खोलता है। इस व्यवस्था में कुछ भी नहीं बदलता कि OpenVPN क्या प्रमाणित करता है, और इससे कुछ भी UDP श्रोता को TCP से पहुँचने योग्य नहीं बनाता। बाकी को बाइट पथ का वर्णन पढ़ें, नेटवर्क नियंत्रण से बचने की विधि के रूप में नहीं।
स्थानीय फ़ॉरवर्ड वास्तव में क्या ले जाता है
SSH क्लाइंट स्थानीय पोर्ट पर सुनता है। जब कोई स्थानीय प्रक्रिया जुड़ती है, क्लाइंट बाइट्स को अपने एन्क्रिप्टेड चैनल में पैक करता है, और सर्वर पक्ष फ़ॉरवर्ड अनुरोध में नामित गंतव्य तक नया TCP कनेक्शन खोलता है।
उस गंतव्य को रिले हल करता है, आपकी मशीन नहीं, इसलिए वह नाम जो केवल दूरस्थ नेटवर्क के भीतर मौजूद है, फिर भी काम करता है। इसका यह भी अर्थ है कि रिले को VPN श्रोता तक पहुँचना और वहाँ वापसी मार्ग रखना चाहिए। आपके लैपटॉप पर हल होने वाला नाम रिले क्या देख सकता है, इसके बारे में कुछ नहीं बताता।
SSH सत्र शुरू करना केवल यह सिद्ध करता है कि रिले पहुँचने योग्य और प्रमाणित है। यह नहीं बताता कि अगला श्रोता चालू है या नहीं, रिले और श्रोता के बीच फ़ायरवॉल कनेक्शन स्वीकार करता है या नहीं, या VPN आपकी प्रोफ़ाइल स्वीकार करेगा या नहीं।
क्लाइंट को स्थानीय श्रोता की ओर लगाएँ
एक घोषित उदाहरण: रिले gw.internal.example:443 पर TCP श्रोता तक पहुँच सकता है, और एक ऊँचा स्थानीय पोर्ट उस पथ को केवल इसी मशीन के लिए खोलता है।
ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]OpenSSH मैनुअल स्थानीय फ़ॉरवर्ड को स्थानीय रूप से TCP कनेक्शन स्वीकार करने और दूरस्थ पक्ष से अगला कनेक्शन खोलने के रूप में वर्णित करता है। श्रोता को सभी इंटरफ़ेस के बजाय लूपबैक से बाँधें, क्योंकि नेटवर्क से पहुँचने योग्य फ़ॉरवर्ड आपके नाम वाला खुला रिले है। वाइल्डकार्ड बाइंड साझा मशीन पर किसी भी अन्य स्थानीय खाते के लिए भी पोर्ट खोल देता है।
फिर VPN क्लाइंट को उसके TCP मोड में रखें और उसे 127.0.0.1:24011 की ओर लगाएँ। अगर प्रोफ़ाइल UDP इस्तेमाल करती है, तो यह डिज़ाइन मदद नहीं कर सकता: फ़ॉरवर्ड बाइट स्ट्रीम ले जाता है, और उससे होकर डेटाग्राम का कोई पथ नहीं है।
दोनों प्रमाणीकरण अलग रखें
SSH रिले होस्ट को प्रमाणित करता है। OpenVPN अब भी VPN सहकर्मी को प्रमाणित करता है, और लूपबैक गंतव्य उस आवश्यकता को नहीं बदलता। सॉकेट अब localhost की ओर इशारा करता है इसलिए प्रमाणपत्र जाँच बंद करना इस डिज़ाइन में सबसे बुरा शॉर्टकट है। यह ट्रांसपोर्ट व्यवस्था को विश्वास व्यवस्था में बदल देता है, और दूसरी के लिए किसी ने सहमति नहीं दी।
प्रोफ़ाइल का विश्वास एंकर, सर्वर-भूमिका जाँच और नाम सत्यापन अक्षुण्ण रखें। अगर आपका क्लाइंट सर्वर के नाम की तुलना उस पते से करता है जिसे उसने डायल किया, तो लूपबैक को बंद जाँच के बजाय स्पष्ट नाम सेटिंग की ज़रूरत हो सकती है, और कौन-सा फ़ील्ड तुलना किया जाता है यह पुष्टि करने की जगह प्रोफ़ाइल दस्तावेज़ हैं।
रिले को विश्वास की कहानी में दूसरा पक्ष मानें: उसका प्रशासक कनेक्शन मेटाडेटा देख सकता है और कॉन्फ़िगरेशन बदलने पर फ़ॉरवर्ड मोड़ सकता है। इस व्यवस्था को रिले और VPN सेवा के मालिक दोनों की मंज़ूरी चाहिए, केवल उसकी नहीं जिसे आज इसकी ज़रूरत है।
सुरंग के नीचे लूप न बनाएँ
VPN के रूट स्थापित करने के बाद भी इसे ले जाने वाले SSH कनेक्शन को रिले तक ऐसा पथ चाहिए जो सुरंग से होकर न जाए। अगर डिफ़ॉल्ट रूट VPN की ओर चला जाए और रिले केवल उसी सुरंग से पहुँचने योग्य हो, तो ट्रांसपोर्ट ढह जाता है और VPN भी उसके साथ चला जाता है। विफलता रूटिंग गलती जैसी नहीं, बल्कि गिरी हुई सुरंग जैसी दिखती है, इसलिए उसका गलत निदान होता है।
सामान्य समाधान है सुरंग ऊपर आने से पहले भौतिक इंटरफ़ेस पर पिन किया गया रिले पते तक होस्ट रूट, साथ में यह जाँच कि रूट पुनः कनेक्शन के बाद भी टिकता है। क्रम सही था यह मानने के बजाय रिले पते के लिए रूट लुकअप से इसे सत्यापित करें।
यह भी अपेक्षा रखें कि यह ढेर सीधे कनेक्शन से धीमा और अधिक नाज़ुक होगा, क्योंकि अब दो क्रमबद्ध ट्रांसपोर्ट और रखरखाव के लिए एक और अंतिम बिंदु है। यह नेटवर्क सीमा पार करने का तरीका है, प्रदर्शन तकनीक नहीं।
काम खत्म होने पर श्रोता बंद करें
जब सुरंग की ज़रूरत न रहे तो SSH सत्र रोकें, और पुष्टि करें कि स्थानीय पोर्ट मुक्त है। भूला हुआ फ़ॉरवर्ड ऐसी मशीन पर प्रमाणित पथ खुला रखता है जो साझा हो सकती है।
रिले के अनुमत फ़ॉरवर्ड गंतव्यों की भी समीक्षा करें, क्योंकि उदार कॉन्फ़िगरेशन किसी भी समझौता किए गए खाते को सामान्य धुरी बना देता है। पोर्ट, रिले और गंतव्य एक साथ दर्ज करें, ताकि अगला व्यक्ति जान सके कि फ़ॉरवर्ड किसलिए था और क्या यह अब भी अनुमोदित है।