MTU या MSS? VPN का बदलाव वास्तव में क्या ठीक करता है
MTU तय करता है कि लिंक कितना ढोता है; MSS उसके भीतर के TCP पेलोड को सीमित करता है। सही को सीमित करें और जानें कि कौन-से प्रोटोकॉल इनमें से कोई नहीं ढकता।
पिंग सफल होते हैं, बड़े ट्रांसफ़र अटक जाते हैं, और टनल स्वयं को स्वस्थ बताती है। कोई इंटरफ़ेस का MTU घटा देता है, कोई दूसरा MSS सीमित करता है, और कभी-कभी समस्या ऐसे कारणों से गायब हो जाती है जिन्हें कोई दर्ज नहीं करता। दोनों संख्याएँ अलग-अलग वस्तुओं का वर्णन करती हैं, इसलिए गलत को बदलने पर ऐसा हल मिलता है जो किस्मत जैसा लगता है। यह प्रक्रिया है: परत पहचानें, मेल खाता समायोजन लगाएँ, फिर नए कनेक्शन पर परीक्षण करें।
दो संख्याएँ, दो वस्तुएँ
MTU किसी लिंक या इंटरफ़ेस का होता है: यह सबसे बड़ा पैकेट है जिसे बिना बाँटे आगे भेजा जा सकता है। MSS TCP का होता है: यह TCP पेलोड की सबसे बड़ी मात्रा है जो एक सेगमेंट ले जा सकता है, और यह TCP तथा IP दोनों हेडर को छोड़ देता है। IPv4 वाले सामान्य ईथरनेट लिंक पर 1500 बाइट का MTU जाना-पहचाना 1460 बाइट का MSS देता है। ये संख्याएँ अलग-अलग परतों का वर्णन करती हैं और अलग-अलग तंत्रों से बदली जाती हैं। इन्हें मिलाना आसान है क्योंकि दोनों बाइट में मापे जाते हैं और दोनों 1500 के पास हैं।
एक इंटरफ़ेस सेटिंग के रूप में आता है। दूसरा SYN सेगमेंट के भीतर विकल्प के रूप में आता है, जिस पर ऐसे सिरों के बीच बातचीत होती है जो आपका इंटरफ़ेस कभी नहीं देखते।
बाहरी अतिरिक्त भार कहाँ पड़ता है
VPN भीतरी पैकेट को दूसरे के भीतर रखता है, और बाहरी पैकेट को भौतिक मार्ग में फ़िट होना पड़ता है। एनकैप्सुलेशन हेडर, बाहरी IP हेडर, ट्रांसपोर्ट हेडर और कोई भी प्रमाणीकरण टैग ऐसे बाइट खर्च करते हैं जिन्हें भीतरी पैकेट उपयोग नहीं कर सकता। टनल इंटरफ़ेस को 1500 पर छोड़ दें तो बाहरी पैकेट नियमित रूप से उससे अधिक हो जाता है जो मार्ग ढो सकता है। 'विखंडन न करें' बिट सेट होने पर राउटर इसे गिरा देता है और ICMP त्रुटि वापस भेजनी चाहिए; यदि वह त्रुटि फ़िल्टर हो जाए तो प्रेषक को कभी पता नहीं चलता।
इसीलिए विफलता चुनिंदा दिखती है। छोटे अनुरोध पूरे हो जाते हैं और सेगमेंट भरने वाला हर काम अटक जाता है, क्योंकि केवल बड़े पैकेट ही छोड़े जाते हैं। पिंग पार करने वाली टनल डेटा ढोने वाली टनल नहीं है।
MSS सीमित करना, और यह कहाँ लागू होता है
MSS क्लैंपिंग चुने गए बिंदु से गुज़रते समय SYN सेगमेंट में मान फिर से लिखती है, जिससे दोनों सिरे बिना कारण जाने छोटा पेलोड चुन लेते हैं। Linux पर यह mangle तालिका का लक्ष्य है जो स्पष्ट नियम से लागू होता है, और इसे आप जिस दिशा में चाहते हैं उस दिशा में SYN पैकेट पर लगना चाहिए। इसे टनल इंटरफ़ेस और पता-सीमा तक सीमित रखें, क्योंकि चौड़ा नियम ऐसे ट्रैफ़िक का व्यवहार बदल देता है जो कभी टनल में नहीं आता।
प्रभाव केवल TCP पर है। UDP अनुप्रयोग, QUIC सत्र और अपने स्वयं के डेटाग्राम बनाने वाला कोई भी प्रोटोकॉल इससे अछूता रहता है।
स्थिर मार्ग से निदान करें
एक बार में एक चर रखें। उस पैकेट से परीक्षण करें जिसका आकार आप स्वयं चुनते हैं, और 'विखंडन न करें' फ़्लैग सेट करें ताकि कर्नेल परिणाम छिपाने के बजाय बताए।
दर्ज करें कि विफलता कहाँ शुरू होती है: टनल के भीतर, टनल इंटरफ़ेस पर, या एनकैप्सुलेशन के बाद भौतिक मार्ग पर। फिर एक संख्या बदलें और वही परीक्षण दोहराएँ, दूसरा नहीं। मौजूदा कनेक्शन अपना सहमत MSS बनाए रखते हैं, इसलिए नीति परिवर्तन केवल नए कनेक्शन पर दिखता है, और इसीलिए कैश किया गया पृष्ठ किसी भी दिशा में कुछ साबित नहीं करता। यदि एक बड़ा अपलोड काम करने लगे, तो आपने उस मार्ग के बारे में सीखा, उस पर चलने वाले हर प्रोटोकॉल के बारे में नहीं।
हर बदलाव क्या ठीक नहीं करता
इंटरफ़ेस का MTU घटाने से पहले से स्थापित सत्र का MSS नहीं बदलता। MSS सीमित करना UDP प्रवाह की मदद नहीं करता और ऐसे मार्ग की मरम्मत नहीं करता जहाँ ICMP त्रुटियाँ केवल एक दिशा में फ़िल्टर होती हैं। हर बदलाव समस्याओं की एक श्रेणी ठीक करता है और बाकी को ठीक वैसा ही छोड़ देता है।
लिखें कि आपने कौन-सा समायोजन कहाँ लगाया और किस परीक्षण ने अंतर दिखाया, वरना अगला इंजीनियर दोनों लगा देता है और यह बताने की क्षमता खो देता है कि कौन-सा मायने रखता था। यदि बाधा वास्तविक और स्थायी है, तो उसे छिपाने वाली क्लैंपिंग के बजाय उसे दर्शाने वाला टनल MTU चुनें। यदि सीमित करना ही हो, तो नियम को सीमित दायरे और टिप्पणी के साथ छोड़ें, क्योंकि बिना व्याख्या वाला mangle नियम डिफ़ॉल्ट रूप से स्थायी हो जाता है।