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 લખી રાખો. ચાર સંખ્યાઓ આગલી ઘટનાને તપાસને બદલે શોધમાં ફેરવે છે.