कई ऐप कनेक्शन एक ही OpenVPN सत्र क्यों साझा करते हैं
एक बाहरी UDP बातचीत वह हर आंतरिक प्रवाह ढोती है जो मार्ग उसमें भेजते हैं। आंतरिक पोर्ट और प्रोटोकॉल बने रहते हैं; केवल बाहरी टपल स्थिर रहता है।
सोचिए एक ब्राउज़र HTTPS पेज लोड कर रहा है, जबकि एक SSH क्लाइंट किसी दूसरे सर्वर तक पहुँचता है और एक रिज़ॉल्वर एक क्वेरी का उत्तर देता है, वह सब एक ही OpenVPN सत्र से। भौतिक इंटरफ़ेस पर आप एक बातचीत देखते हैं; सुरंग के भीतर आप तीन देखते हैं। दोनों दृश्य सही हैं, और यह जानना कि ऐसा क्यों है, एक उपयोगी कैप्चर और एक भ्रमित करने वाले कैप्चर के बीच का अंतर है। एक आंतरिक प्रवाह को सॉकेट से तार तक अनुसरण करें और परतदारी अमूर्त रहना बंद कर देती है।
एक बाहरी बातचीत, कई आंतरिक प्रवाह
हर एप्लिकेशन अपना सॉकेट खोलता है, और कर्नेल उसे स्रोत पता, स्रोत पोर्ट, गंतव्य पता, गंतव्य पोर्ट और प्रोटोकॉल का पाँच-टपल देता है। वे टपल किसी भी सुरंग के शामिल होने से पहले ही मौजूद रहते हैं। फिर रूटिंग तय करती है कि वे सभी सुरंग उपकरण से बाहर जाएँ, इसलिए OpenVPN को सौंपा गया पैकेट अब भी भीतर मूल हेडर ढोता है। OpenVPN उस आंतरिक पैकेट को एन्क्रिप्ट करता है और परिणाम को सहकर्मी के साथ एक ही बाहरी UDP या TCP बातचीत में लपेट देता है। इसलिए बाहरी बातचीत एक है, जबकि उसके भीतर के प्रवाह उतने हैं जितने एप्लिकेशन खोलते हैं।
कुछ भी ढहता नहीं है। आंतरिक टपल शुरू से अंत तक बने रहते हैं, और इसीलिए दूर का पक्ष अब भी तीनों प्रवाहों में भेद कर सकता है।
वह पोर्ट जो स्थिर रहता है
स्थिर रहता है बाहरी टपल: आपका पता, वह स्थानीय पोर्ट जो क्लाइंट ने बाँधा, सहकर्मी का पता और कॉन्फ़िगर किया गया सेवा पोर्ट। यही टपल वह है जिसे रास्ते में फ़ायरवॉल या NAT को अनुमति देनी होती है, और यही वह है जो अपलिंक पर कैप्चर में दिखेगा। यही वह भी है जो पुनः कनेक्ट या नेटवर्क बदलने के बाद बदलता है, क्योंकि क्लाइंट कोई दूसरा स्थानीय पोर्ट बाँध सकता है। एक सुरंग का मतलब हमेशा के लिए एक स्थिर स्रोत पोर्ट नहीं है।
आंतरिक पोर्ट वही हैं जिनकी अंतिम बिंदुओं को परवाह है। एक HTTPS प्रवाह सुरंग के भीतर गंतव्य पोर्ट 443 रखता है, भले ही बाहरी परिवहन उस पोर्ट पर बैठा हो जो ऑपरेटर ने कॉन्फ़िगर किया है। एप्लिकेशन के अंतिम बिंदु बाहरी पोर्ट के बारे में कभी नहीं जानते।
दूर के सिरे पर डिकैप्सुलेशन क्या बदलता है
सहकर्मी पर बाहरी परत उतर जाती है, और जो बचता है वह आंतरिक पैकेट है। वहाँ से फ़ॉरवर्डिंग और पहुँच नीति आंतरिक गंतव्य और प्रोटोकॉल पर लागू होती हैं। वेब सर्वर अब भी HTTPS कनेक्शन पाता है, SSH डेमॉन अब भी SSH पाता है, और रिज़ॉल्वर अब भी क्वेरी पाता है।
इसीलिए बाहरी परिवहन को अनुमति देने वाला नियम आंतरिक सेवा को अनुमति देने वाले नियम के समान नहीं है। पहला एक पथ बताता है; दूसरा एक प्राधिकरण बताता है।
बाहरी TCP का अर्थ एक प्रवाह है, एक कनेक्शन नहीं
जब बाहरी परिवहन UDP होता है, तो हर आंतरिक प्रवाह का भाग्य स्वतंत्र होता है: खोया हुआ डेटाग्राम अपने पुनःप्रेषण तक एक स्थानांतरण को प्रभावित करता है। जब बाहरी परिवहन TCP होता है, तो सभी आंतरिक प्रवाह एक विश्वसनीय बाइट प्रवाह साझा करते हैं।
वही साझा प्रवाह वह हिस्सा है जो लोग चूक जाते हैं। पुनर्प्राप्ति एक बार होती है, सबके लिए, इसलिए एक खोया हुआ खंड भीतर मल्टीप्लेक्स किए गए हर एप्लिकेशन के ट्रैफ़िक में देरी करता है। अंतिम बिंदुओं पर अब भी कई कनेक्शन हैं और तार पर एक कनेक्शन, और तार पर ही हेड-ऑफ़-लाइन प्रभाव रहता है। सुनने वाले पोर्ट की संख्या इस बारे में कुछ नहीं बताती, इसीलिए सुरंग के प्रदर्शन पर सोचने के लिए पोर्ट गिनना एक कमज़ोर तरीका है।
अपना सेटअप सटीकता से बताइए
यह कहने के बजाय कि मशीन सब कुछ एक पोर्ट से भेजती है, चुने गए आंतरिक ट्रैफ़िक और उसे ढोने वाले विशिष्ट बाहरी परिवहन का नाम लीजिए। स्थानीय सेवाएँ, दूसरी सुरंग और दूसरा पता परिवार ऐसे प्रवाह बनाते हैं जो इस बातचीत में कभी प्रवेश नहीं करते। अपलिंक पर कैप्चर बाहरी टपल दिखाता है; सुरंग के भीतर का कैप्चर आंतरिक टपल दिखाता है।
दोनों लीजिए, और टाइमस्टैम्प को साथ-साथ रखिए। अगर आपको साबित करना है कि किस एप्लिकेशन ने कौन-सा आंतरिक प्रवाह बनाया, तो होस्ट पर सॉकेट तालिका बेहतर उपकरण है, क्योंकि वह पोर्ट को सीधे प्रक्रियाओं से जोड़ती है। फिर जो बाहरी टपल आपने देखा और जिस क्षण देखा उसे लिख लीजिए, क्योंकि पुनः कनेक्ट के बाद अगला कैप्चर वैध रूप से दूसरे अंक दिखा सकता है।