MSS-þrenging á VPN-gátt: hvað hún lagar og hvað ekki
Þrenging endurskrifar MSS í TCP-handabandi svo hlutar passi í göngin. Hún lagar aldrei UDP né bilaða path-MTU-prófun. Þrjár prófanir, í röð.
Litlar beiðnir virka, stórar niðurhal festast, og einhver stingur upp á MSS-þrengingu. Það tillaga er nógu oft rétt til að vera þess virði að reyna í réttri röð, og nógu oft röng til að sóa síðdegi ef þú beitir henni blint. Þrjár prófanirnar hér fyrir neðan aðgreina alvöru TCP-stærðarvandamál frá UDP-vandamáli, frá biluðu path-MTU-uppgötvun og frá þrengingu sem sér aldrei handabandið sem hún á að endurskrifa.
Byrjaðu á lögun bilunarinnar
Stærðarbilun hefur undirskrift: tengingin kemst á, auðkenning og lítil svör heppnast, og svo stöðvast flutningur endalaust um leið og hann þarf fullstærðarhluta. Síður sem hlaða texta en klára aldrei mynd eru sama bilun í minni mælikvarða. Ef ekkert tengist yfirleitt er vandamálið fyrr á leiðinni og þrengingin hjálpar ekki. Þrenging getur ekki lagað handaband sem kom aldrei.
Undirskriftin er til vegna þess að handabandið er staðurinn þar sem samið er um stærð hlutans. Hvor hlið tilkynnir hámarksstærð hluta sem TCP-valkost, og sendendur virða tilkynningu mótaðilans. Ef leiðin ræður ekki við svo stóran hlut birtist bilunin síðar, þegar sendandinn reynir loks einn.
Haltu flutningnum í sýn á meðan þú lest þessi einkenni. Þrenging er endurskrifun TCP-valkosts, svo tal- eða fjarfundur sem stöðvast undir sama göngum er ekki MSS-vandamál og batnar ekki af henni. Skrifaðu flutninginn niður áður en þú snertir TCP-valkost.
Verðleggðu leiðina og berðu hana svo saman við göngin
Tvær tölur skipta máli og eru oft ruglaðar saman. path-MTU er stærsta pakki sem leiðin flytur án sundrunar, og tilkynnt MSS fyrir IPv4 er það gildi að frádregnum 40 bætum IP- og TCP-hausa, eða að frádregnum 60 fyrir IPv6. Göngulögun eyðir hluta fjárhagsins áður en innri pakkinn byrjar jafnvel.
ping -M do -s 1400 198.51.100.20
tracepath 198.51.100.20
Pingið með do-not-fragment-bitnum segir þér hvort pakki af þeirri hleðslustærð lifi; stilltu stærðina þar til hann mistekst og þú hefur fundið mörk leiðarinnar með reynslu. Úttak tracepath tilkynnir MTU sem fannst meðfram leiðinni, sem er hraðara þegar það virkar og óáreiðanlegra þegar millihopp síar prófin.
Dragðu nú frá kostnaði ganganna. Ytri IP-haus, UDP-haus og haus sem er sértækur fyrir göngin koma öll úr sömu 1500 bætum, svo nothæfa innra MTU á dæmigerðum Ethernet-grunni er lægra en líkamlega tengingin gefur til kynna. Ef reiknað innra MTU er lægra en mótaðilarnir tilkynna hefur þú fundið raunverulegan þrengingarkandídat en ekki ágiskun. Ef reiknaða gildið er þegar yfir tilkynningunni skaltu stoppa hér og leita annars staðar.
Settu þrenginguna þar sem handabandið fer fram hjá
Þrenging virkar með því að endurskrifa MSS-valkostinn í SYN- og SYN-ACK-pökkum þegar þeir fara um gáttina. Ef reglan situr á tengi sem hvorug stefnan fer aldrei um lýkur samningaviðræðunni óbreyttri og einkennin vara, þess vegna ræður staðsetningin úrlausninni meira en gildið.
| 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 |
Stefnan er hinn helmingurinn. Þrenging í eina stefnu lagar helming flæðisins og lætur afganginn mistakast á þann hátt sem virðist slitróttur, svo beittu henni á báðar stefnur flutningsins sem er áframsendur. Klassíska Linux-formið fyrir göngutengi er mangle-regla sem passar við SYN-pakka:
iptables -t mangle -A FORWARD -o tun0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Taktu eftir hvað --clamp-mss-to-pmtu gerir í raun: það leiðir gildið af MTU leiðarinnar, sem er ekki alltaf raunverulegt hleðslufjárhag göngunnar. Á leiðarmiðuðum göngum þar sem innri leið og ytri slóð eru ólík er skýrt gildi reiknað í fyrri prófun fyrirsjáanlegra en sjálfvirkt.
Sannreyndu með nýrri tengingu og haltu endurgjöfinni lifandi
Komin tenging heldur MSS-inu sem hún samdi um, svo prófun í sama lotu sannar ekkert. Opnaðu nýja tengingu eftir breytinguna og lestu samningsgildið beint í stað þess að álykta það af flutningi sem klárast fyrir tilviljun.
ss -tin dst 198.51.100.20
iptables -t mangle -S | grep TCPMSS
Fyrsta skipunin tilkynnir MSS hylkisins ásamt stíflustöðu þess, sem er fljótlegasta staðfestingin á að þrengingin hafi haft áhrif. Sú seinni staðfestir að reglan sem þú heldur að þú hafir bætt við er reglan sem er til, í töflunni þar sem hún var sett.
Verndaðu svo kerfið sem þú lagðir ekki. Uppgötvun path-MTU er háð því að ICMP fragmentation-needed skilaboð nái sendandanum, svo eldveggur sem hendir þeim mun halda áfram að brjóta stóra flutninga jafnvel með réttri þrengingu. Leyfðu þessi skilaboð fyrir gönguleiðina, eða samþykktu að þrengingin bæti upp stefnu sem þú valdir.
Að lokum skaltu standast freistinguna að meðhöndla þrenginguna sem stillihnapp. Hún takmarkar stærð hlutans, sem kostar afköst á leiðum sem þurftu aldrei á henni að halda. Beitt eftir þrjár prófanir er hún markviss viðgerð; beitt fyrst er hún breyting sem felur upprunalegu bilunina og bætir annarri breytu við hverja síðari prófun. Þessi skipti eru þess virði að gera viljandi, ekki sjálfgefið.
Skrifaðu niður path-MTU sem þú mældir, kostnað ganganna sem þú dróst frá, regluna sem þú bættir við og MSS-ið sem þú sást eftir á. Fjórar tölur gera næsta atvik að uppflettingu í stað rannsóknar.