VPN गेटवेवर MSS क्लॅम्पिंग: ते काय दुरुस्त करते आणि काय नाही
क्लॅम्पिंग TCP हँडशेकमधील MSS पुन्हा लिहिते जेणेकरून सेगमेंट टनलमध्ये बसतील. ते कधीही UDP किंवा खराब path-MTU तपासणी दुरुस्त करत नाही. तीन तपासण्या, क्रमाने.
छोट्या विनंत्या चालतात, मोठे डाउनलोड अडकतात, आणि कोणीतरी MSS क्लॅम्पिंग सुचवते. ती सूचना योग्य क्रमाने प्रयत्न करण्यासारखी पुरेशी वेळा बरोबर असते, आणि डोळे झाकून लागू केल्यास अर्धा दिवस वाया घालवण्याइतकी पुरेशी वेळा चूक असते. खालील तीन तपासण्या खऱ्या TCP आकाराच्या समस्येला UDP समस्या, खराब path-MTU शोध आणि ज्या हँडशेकला पुन्हा लिहायचे आहे तो कधीही न दिसणाऱ्या क्लॅम्पपासून वेगळे करतात.
अपयशाच्या आकाराने सुरुवात करा
आकाराच्या अपयशाला एक स्वाक्षरी असते: कनेक्शन होते, प्रमाणीकरण आणि छोटे प्रतिसाद यशस्वी होतात, आणि मग पूर्ण आकाराचे सेगमेंट लागताच हस्तांतरण अनिश्चित काळासाठी थांबते. मजकूर लोड करणारी पण चित्र कधीही पूर्ण न करणारी पृष्ठे लहान प्रमाणात तेच अपयश आहेत. जर काहीच कनेक्ट होत नसेल, तर समस्या मार्गावर आधीच आहे आणि क्लॅम्पिंग मदत करणार नाही. क्लॅम्प कधीही न आलेला हँडशेक दुरुस्त करू शकत नाही.
ही स्वाक्षरी यासाठी आहे की सेगमेंटचा आकार हँडशेकमध्येच ठरतो. प्रत्येक बाजू TCP पर्याय म्हणून कमाल सेगमेंट आकार जाहीर करते, आणि पाठवणारे समोरच्या बाजूच्या जाहिरातीचा आदर करतात. जर मार्ग इतके मोठे सेगमेंट वाहून नेऊ शकत नसेल, तर अपयश नंतर, पाठवणारा शेवटी एक प्रयत्न करतो तेव्हा दिसते.
हा लक्षण वाचताना वाहतूक डोळ्यांपुढे ठेवा. क्लॅम्पिंग TCP पर्यायाचे पुनर्लेखन आहे, म्हणून त्याच टनलखाली अडकणारा व्हॉइस किंवा व्हिडिओ कॉल MSS समस्या नाही आणि त्यामुळे सुधारणार नाही. TCP पर्यायाला स्पर्श करण्यापूर्वी वाहतूक लिहून ठेवा.
मार्गाची किंमत मोजा, मग टनलशी तुलना करा
दोन संख्या महत्त्वाच्या आहेत आणि त्यांची अनेकदा गल्लत होते. path-MTU म्हणजे मार्ग विभाजनाशिवाय वाहून नेणारे सर्वात मोठे पॅकेट, आणि IPv4 साठी जाहीर केलेला MSS म्हणजे ते मूल्य वजा IP आणि TCP शीर्षके यांचे 40 बाइट, किंवा IPv6 साठी 60 वजा. टनल एन्कॅप्सुलेशन आतील पॅकेट सुरू होण्यापूर्वीच बजेटचा काही भाग खाते.
ping -M do -s 1400 198.51.100.20
tracepath 198.51.100.20
do-not-fragment बिटसह ping त्या पेलोड आकाराचे पॅकेट टिकते का ते सांगते; ते अयशस्वी होईपर्यंत आकार बदला, मग तुम्हाला मार्गाची मर्यादा प्रायोगिकरीत्या सापडली. tracepath चे आउटपुट मार्गावर शोधलेले MTU कळवते, जे चालले तेव्हा वेगवान आणि मधला हॉप प्रोब फिल्टर करतो तेव्हा कमी विश्वासार्ह असते.
आता टनलचा ओव्हरहेड वजा करा. बाहेरील IP शीर्षक, UDP शीर्षक आणि टनल-विशिष्ट शीर्षक सर्व त्याच 1500 बाइटमधून येतात, म्हणून सामान्य इथरनेट आधारावर वापरण्यायोग्य आतील MTU भौतिक दुवा सुचवतो त्यापेक्षा कमी असते. गणलेले आतील MTU तुमचे सहकारी जाहीर करतात त्यापेक्षा कमी असल्यास, तुम्हाला अंदाज नव्हे तर खरा क्लॅम्प उमेदवार सापडला. गणलेले मूल्य आधीच सहकाऱ्यांच्या जाहिरातीपेक्षा जास्त असल्यास, इथे थांबा आणि दुसरीकडे पहा.
हँडशेक जिथून जातो तिथे क्लॅम्प ठेवा
क्लॅम्प गेटवे ओलांडताना SYN आणि SYN-ACK पॅकेटमधील MSS पर्याय पुन्हा लिहून काम करते. जर नियम अशा इंटरफेसवर असेल ज्यातून कोणतीही दिशा कधीही जात नाही, तर वाटाघाटी बदलाशिवाय पूर्ण होते आणि लक्षण राहते, म्हणून मूल्यापेक्षा जागा निकाल ठरवते.
| Symptom | What it points to | Next check |
|---|---|---|
| Handshake completes, large transfer stalls | Segment size larger than the path can carry | Path MTU against the tunnel's effective MTU |
| Nothing connects, small or large | Routing, firewall or keying failure | Not MSS; look at the tunnel state |
| Only UDP applications stall | Datagram size or a dropped ICMP error | Platform-specific UDP handling, not clamping |
| Fixed after reconnect, returns later | Clamp applied to one direction or one interface | Rule placement and the handshake path |
दिशा हा दुसरा अर्धा भाग आहे. एका दिशेचे क्लॅम्पिंग अर्धे प्रवाह दुरुस्त करते आणि उर्वरित अधूनमधून दिसणाऱ्या पद्धतीने अयशस्वी होऊ देतं, म्हणून पुढे पाठवल्या जाणाऱ्या रहदारीच्या दोन्ही दिशांना लागू करा. टनल इंटरफेससाठी Linux चा पारंपरिक आकार SYN पॅकेटशी जुळणारा mangle नियम आहे:
iptables -t mangle -A FORWARD -o tun0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
--clamp-mss-to-pmtu प्रत्यक्षात काय करते ते पहा: ते मूल्य मार्गाच्या MTU मधून काढते, जे नेहमी टनलचे खरे पेलोड बजेट नसते. आतील मार्ग आणि बाहेरील मार्ग वेगळे असलेल्या मार्ग-आधारित टनलमध्ये, मागील तपासणीत गणलेले स्पष्ट मूल्य स्वयंचलितपेक्षा अधिक अंदाजयोग्य असते.
नव्या कनेक्शनने पडताळा आणि अभिप्राय जिवंत ठेवा
स्थापित कनेक्शन वाटाघाटी केलेला MSS ठेवते, म्हणून त्याच सत्रात चाचणी काहीही सिद्ध करत नाही. बदलानंतर नवे कनेक्शन उघडा आणि वाटाघाटी केलेले मूल्य थेट वाचा, योगायोगाने पूर्ण होणाऱ्या हस्तांतरणातून अंदाज लावण्याऐवजी.
ss -tin dst 198.51.100.20
iptables -t mangle -S | grep TCPMSS
पहिला कमांड सॉकेटचे MSS त्याच्या गर्दीच्या स्थितीसह कळवतो, जे क्लॅम्पने परिणाम केला याची सर्वात वेगवान पुष्टी आहे. दुसरा कमांड तुम्ही जोडले असा विचार करता तो नियम खरोखर अस्तित्वात असलेला नियम आहे याची, तो ठेवलेल्या तक्त्यात पुष्टी करतो.
मग तुम्ही दुरुस्त न केलेली यंत्रणा संरक्षित करा. path-MTU शोध ICMP fragmentation-needed संदेश पाठवणाऱ्यापर्यंत पोहोचण्यावर अवलंबून आहे, म्हणून ते टाकून देणारा फायरवॉल योग्य क्लॅम्प असूनही मोठे हस्तांतरण तोडत राहील. टनल मार्गासाठी ते संदेश परवानगी द्या, किंवा क्लॅम्पिंग तुम्ही निवडलेल्या धोरणाची भरपाई करत आहे हे मान्य करा.
शेवटी, क्लॅम्पला ट्युनिंग नॉब मानण्याच्या मोहाला तोंड द्या. ते सेगमेंटचा आकार मर्यादित करते, ज्यामुळे ज्या मार्गांना त्याची कधीच गरज नव्हती तिथे थ्रूपुट खर्च होतो. तीन तपासण्यांनंतर लागू केल्यास ते लक्ष्यित दुरुस्ती आहे; आधी लागू केल्यास ते मूळ दोष लपवणारे आणि प्रत्येक पुढील चाचणीत दुसरे चल जोडणारे बदल आहे. तो व्यवहार जाणीवपूर्वक करण्यासारखा आहे, डीफॉल्टने नाही.
तुम्ही मोजलेले path-MTU, वजा केलेला टनल ओव्हरहेड, जोडलेला नियम आणि नंतर पाहिलेले MSS लिहून ठेवा. चार संख्या पुढील घटनेला तपासणीऐवजी शोध बनवतात.