VPN बड़े ट्रांसफ़र पर क्यों अटकता है, छोटे पर क्यों नहीं
छोटी विनतियों का जवाब मिलता है जबकि बड़े ट्रांसफ़र जम जाते हैं। तय MTU कॉपी करने से पहले इंटरफ़ेस सीमा, पथ सीमा और घोषित TCP पेलोड की तुलना करें।
एक पेज लोड होता है, ping सफल होता है, और फ़ाइल की कॉपी हर बार उसी जगह अटक जाती है। यह पैटर्न बैंडविड्थ या क्रेडेंशियल के बजाय पैकेट के आकार की ओर इशारा करता है। एनकैप्सुलेशन हर पैकेट में बाइट जोड़ता है, इसलिए जो पेलोड मूल पथ पर फ़िट था, वह टनल से गुज़रने के बाद सीमा से आगे जा सकता है। इन बातचीत में तीन अलग संख्याओं को MTU कहा जाता है, और उन्हें आपस में मिलाने से ऐसी सेटिंग बनती है जो एक ऐप ठीक करती है और दूसरी तोड़ देती है।
तीन संख्याएं जिन्हें लोग MTU कहते हैं
इंटरफ़ेस MTU उस लिंक पर पैकेट के लिए कॉन्फ़िगर की गई सीमा है। पथ MTU रूट के साथ सबसे छोटी सीमा है, और वह खोजी जाती है, कॉन्फ़िगर नहीं की जाती। TCP MSS वह पेलोड आकार है जिसे सामने वाला पक्ष प्राप्त कर सकने की घोषणा करता है, और यह बाकी दो से निकलता है, अलग भौतिक सीमा नहीं है।
टनल का एक भीतरी और एक बाहरी दृश्य होता है। बाहरी पैकेट एनकैप्सुलेटेड पैकेट के साथ वे हेडर ले जाता है जो प्रोटोकॉल को चाहिए, इसलिए उपयोगी भीतरी आकार बाहरी पथ द्वारा अनुमत आकार से छोटा होता है। VPN सर्वर तक का पथ भी सर्वर से गंतव्य तक के पथ से अलग होता है।
पथ MTU की खोज प्रेषक को काम करने वाला आकार जानने देती है, लेकिन यह फ़ीडबैक पहुंचने पर निर्भर है। जब कोई मध्यवर्ती डिवाइस संबंधित ICMP संदेशों को फ़िल्टर करता है, तो प्रेषक ऐसे पैकेट भेजता रहता है जो कभी पूरे नहीं होते, और यही उत्कृष्ट ब्लैक होल है। लक्षण जानने पर स्पष्ट होता है: हैंडशेक सफल होता है, पहला पूर्ण आकार का पेलोड गायब हो जाता है, और कनेक्शन अंततः रीसेट होता है या अटक जाता है। ऐप्लिकेशन लॉग में कुछ भी नेटवर्क समस्या जैसा नहीं दिखता।
अपने नियंत्रण वाले पेलोड से पथ जांचें
एक जांच एक मार्ग और एक आकार के बारे में सबूत है, सुझाई गई सेटिंग नहीं। ऐसा होस्ट इस्तेमाल करें जो जवाब दे, और सिर्फ़ पेलोड का आकार बदलें।
ping -M do -s 1372 -c 2 203.0.113.20 ping -4 -f -l 1372 vpn.example
पहला कमांड फ़्रैगमेंटेशन बंद रखकर 1372 बाइट के पेलोड के साथ लिनक्स जांच भेजता है, और दूसरा विंडोज़ पर वही करता है जहां पेलोड -l से सेट होता है। जवाब का मतलब है कि वह आकार पथ से बच निकला। फ़्रैगमेंटेशन की ज़रूरत वाला संदेश जानकारी देता है, जबकि टाइमआउट अस्पष्ट है क्योंकि होस्ट या मध्यवर्ती डिवाइस ICMP को सिर्फ़ गिरा सकता है।
बाइट तक बाइनरी खोज करने के बजाय कुछ चरणों में आकार घटाएं। आप यह तय करने की कोशिश कर रहे हैं कि आकार की कोई ऊपरी सीमा है या नहीं, हर नेटवर्क के लिए संख्या प्रकाशित करना नहीं। जो संख्या आपको मिलेगी वह इस पथ, इस प्रोटोकॉल और इस पता परिवार पर लागू होती है।
IPv4 और IPv6 अलग तरह से फ़्रैगमेंट होते हैं, इसलिए एक परिवार का परिणाम दूसरे के बारे में कुछ नहीं कहता। उसी परिवार की जांच करें जिसे ऐप वास्तव में इस्तेमाल करता है।
MSS क्लैंपिंग सिर्फ़ TCP की मदद करती है
TCP में असरदार पेलोड हैंडशेक के दौरान तय होता है, और पथ पर मौजूद राउटर उस मान को नीचे की ओर फिर से लिख सकता है ताकि दोनों सिरे छोटे सेगमेंट भेजें। MSS क्लैंपिंग यही करती है, और यह क्लाइंट को ज़रा भी छुए बिना काम करती है।
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ip link show tun0
पहला नियम आगे भेजे जाने वाले TCP हैंडशेक के लिए घोषित MSS को पथ MTU पर क्लैंप करता है, और दूसरा टनल इंटरफ़ेस का अपना MTU दिखाता है ताकि आप उसकी तुलना पथ द्वारा अनुमत आकार से कर सकें। हैंडशेक के बाद अटकने वाले TCP ऐप के लिए क्लैंपिंग सबसे कम दखल देने वाला उपाय है।
UDP के लिए यह कुछ नहीं करती। बड़े डेटाग्राम भेजने वाला वॉइस या गेम क्लाइंट MSS सेटिंग को पूरी तरह नज़रअंदाज़ करेगा, क्योंकि फिर से लिखने के लिए कोई हैंडशेक नहीं है। अगर नाकाम ऐप UDP है, तो उसके बजाय क्लाइंट के अपने पैकेट आकार विकल्प देखें। दोनों प्रोटोकॉल अलग तरह से नाकाम होते हैं और अलग औज़ारों से ठीक होते हैं, इसलिए प्रोटोकॉल टिकट के पहले वाक्य में होना चाहिए।
OpenVPN tun-mtu, mssfix और फ़्रैगमेंट से जुड़ी सेटिंग्स जैसे विकल्प देता है, और उनका व्यवहार संस्करण तथा इस पर निर्भर करता है कि डेटा चैनल AEAD है या नहीं। इस्तेमाल हो रहे संस्करण का मैनुअल पढ़ें, और एक बार में एक विकल्प बदलें।
एक समर्थित सेटिंग बदलें और दोनों दौड़ दोहराएं
मूल प्रोफ़ाइल रखें, एक समर्थित मान बदलें, और जो छोटी विनती काम करती थी तथा जो बड़ा ट्रांसफ़र नाकाम हुआ दोनों दोहराएं। अगर सिर्फ़ बड़ा बदलता है, तो आप आकार के पीछे थे। अगर दोनों बदलते हैं, तो उसके साथ कुछ और भी हिला है।
कम मान लक्षण घटा सकता है पर अतिरिक्त ओवरहेड जोड़ता है, इसलिए सबसे छोटी संभव संख्या लक्ष्य नहीं है। लक्ष्य वह आकार है जिसे पथ कम से कम बर्बादी के साथ भरोसेमंद ढंग से ढोता है। मान, पथ और क्लाइंट संस्करण टिकट में लिखें, क्योंकि वही संख्या कहीं और लागू करना एक अनुमान है।
अगर वही प्रोफ़ाइल किसी दूसरे भरोसेमंद नेटवर्क से काम करती है, तो क्लाइंट को ठीक घोषित करने के बजाय उस अंतर को निदान में रखें। जो चर बदला वह पथ है, और जांच ने जो मापा वह पथ ही है।