Àwọn ìbéèrè kékeré ń ṣiṣẹ́, àwọn ìgbàsílẹ̀ ńlá ń dúró, ẹnìkan sì dábàá MSS clamping. Àbá yẹn tọ́ ní ọ̀pọ̀ ìgbà tó yẹ kí a gbìyànjú ní ìtẹ̀lé tòótọ́, ó sì lòdì ní ọ̀pọ̀ ìgbà tó máa sọ ọ̀sán kan nù bí a bá lò ó lójú-òfì. Àwọn àyẹ̀wò mẹ́ta tó wà nísàlẹ̀ yà ìṣòro ìwọ̀n TCP gidi sọ́tọ̀ kúrò nínú ìṣòro UDP, àti ìwárí path-MTU tí ó bajẹ́, àti clamp tí kì í rí ìfọwọ́sowọ́pọ̀ tí ó yẹ kí ó tún kọ.

Bẹ̀rẹ̀ pẹ̀lú ìrísí ìkùnà

Ìkùnà ìwọ̀n ní ìbuwọ́lù: ìsopọ̀ ń dá sílẹ̀, ìjẹ́rìí àti àwọn ìdáhùn kékeré ń ṣàṣeyọrí, lẹ́yìn náà ìgbékalẹ̀ máa ń dúró láìlópin ní kété tí ó bá nílò segment ìwọ̀n kíkún. Àwọn ojú-ìwé tí ń gbé ọ̀rọ̀ wọlé ṣùgbọ́n tí kì í parí àwòrán ni ìkùnà kan náà ní ìwọ̀n kékeré. Bí kò bá sí ohun tó so mọ́, ìṣòro wà níwájú lórí ọ̀nà, clamping kò sì ní ràn ọ́ lọ́wọ́. Clamp kò lè tún ìfọwọ́sowọ́pọ̀ tí kò tíì dé ṣe.

Ìbuwọ́lù yìí wà nítorí pé níbi ìfọwọ́sowọ́pọ̀ ni a ti ń gbà lórí ìwọ̀n segment. Ẹ̀gbẹ́ kọ̀ọ̀kan ń kéde ìwọ̀n segment tó pọ̀ jùlọ gẹ́gẹ́ bí àṣàyàn TCP, àwọn olùránṣẹ́ sì ń bọ̀wọ̀ fún ìkéde ẹ̀gbẹ́ kejì. Bí ọ̀nà kò bá gbé irú segment ńlá yẹn, ìkùnà á farahàn nígbà tó yá, nígbà tí olùránṣẹ́ bá gbìyànjú ọ̀kan.

Má ṣe gbàgbé gbígbé lójú nígbà tí o ń ka àmì yẹn. Clamping jẹ́ àtúnkọ àṣàyàn TCP, nítorí náà ìpè ohùn tàbí fídíò tí ó dúró lábẹ́ tunnel kan náà kì í ṣe ìṣòro MSS, kò sì ní dára sí i. Kọ gbígbé sílẹ̀ kí o tó fọwọ́ kan àṣàyàn TCP.

Dí ìye ọ̀nà, lẹ́yìn náà fi wé tunnel

Àwọn nọ́mbà méjì ṣe pàtàkì, a sì máa ń dà wọ́n pọ̀. path-MTU ni pákẹ́tì tó tóbi jùlọ tí ọ̀nà ń gbé láìpín, MSS tí a kéde fún IPv4 ni iye yẹn yọkúrò 40 byte ti orí IP àti TCP, tàbí yọkúrò 60 fún IPv6. Ìdìpọ̀ tunnel ń jẹ apá kan nínú ìṣètò náà kí pákẹ́tì inú tó bẹ̀rẹ̀.

ping -M do -s 1400 198.51.100.20
tracepath 198.51.100.20

Ping pẹ̀lú bit do-not-fragment sọ fún ọ bóyá pákẹ́tì ìwọ̀n ẹrù yẹn yóò là á; yí ìwọ̀n títí yóò fi kùnà, ìwọ sì ti rí ààlà ọ̀nà ní àfihàn. Ìjáde tracepath ń kéde MTU tí a rí lórí ipa ọ̀nà, èyí tó yára nígbà tó ń ṣiṣẹ́ àti tí kò dájú nígbà tí hop àárín bá ń ṣe àwọn ìwádìí.

Nísinsìnyí yọkúrò ìnáwó tunnel. Orí IP òde, orí UDP àti orí àkànṣe tunnel gbogbo wọn ti inú 1500 byte kan náà wá, nítorí náà MTU inú tí ó ṣeéṣe fún lílò lórí ìpìlẹ̀ Ethernet déédé kéré ju bí ìsopọ̀ ti ara ṣe dábàá. Bí MTU inú tí a ṣírò bá kéré ju èyí tí àwọn ẹlẹgbẹ́ rẹ kéde, ìwọ ti rí olùdíje clamp gidi kì í ṣe àròsọ. Bí iye tí a ṣírò bá ti ga ju ìkéde àwọn ẹlẹgbẹ́, dúró níbí kí o sì wo ibòmíràn.

Fi clamp síbi tí ìfọwọ́sowọ́pọ̀ ń gbà kọjá

Clamp ń ṣiṣẹ́ nípa àtúnkọ àṣàyàn MSS nínú àwọn pákẹ́tì SYN àti SYN-ACK bí wọ́n ti ń kọjá ẹnu-ọ̀nà. Bí ìlànà bá wà lórí interface tí kò sí ìtọ́sọ́nà tó ń gbà kọjá rí, ìjíròrò á parí láìyípadà àmì yóò sì wà, nítorí náà ibi ni ó ń pinnu èsì ju iye lọ.

SymptomWhat it points toNext check
Handshake completes, large transfer stallsSegment size larger than the path can carryPath MTU against the tunnel's effective MTU
Nothing connects, small or largeRouting, firewall or keying failureNot MSS; look at the tunnel state
Only UDP applications stallDatagram size or a dropped ICMP errorPlatform-specific UDP handling, not clamping
Fixed after reconnect, returns laterClamp applied to one direction or one interfaceRule placement and the handshake path

Ìtọ́sọ́nà ni ìlà kejì. Clamp ìtọ́sọ́nà kan ń tún ìlàkàkà dídà ṣe, ó sì fi àwọn yòókù kùnà lọ́nà tí ó dàbí àìdúró. Nítorí náà lò ó fún ìtọ́sọ́nà méjèèjì ti ìrìnnà tí a ń tẹ̀ síwájú. Ọ̀nà Linux àtijọ́ fún interface tunnel ni ìlànà mangle tí ó bá pákẹ́tì SYN mu:

iptables -t mangle -A FORWARD -o tun0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Kíyèsi ohun tí --clamp-mss-to-pmtu ń ṣe ní ti gidi: ó ń mú iye láti MTU ti ipa ọ̀nà, èyí kì í sì í ṣe ìṣètò ẹrù gidi tunnel nígbà gbogbo. Nínú tunnel tó dá lórí ipa ọ̀nà níbi tí ipa inú àti ọ̀nà òde yàtọ̀, iye kedere tí a ṣírò nínú àyẹ̀wò tẹ́lẹ̀ ṣeé sọtẹ́lẹ̀ ju ti ara-ẹni lọ.

Fi ìmúdájú mú pẹ̀lú ìsopọ̀ tuntun, kí ìdáhùn sì wà láàyè

Ìsopọ̀ tí ó ti dá ń pa MSS tí ó ti gbà mọ́, nítorí náà ìdánwò ní session kan náà kò fi ohunkóhun hàn. Ṣí ìsopọ̀ tuntun lẹ́yìn ìyípadà kí o ka iye tí a gbà ní tààrà dípò fí ṣe àkójọpọ̀ rẹ̀ láti inú ìgbékalẹ̀ tí ó ṣẹ̀ṣẹ̀ parí.

ss -tin dst 198.51.100.20
iptables -t mangle -S | grep TCPMSS

Àṣẹ àkọ́kọ́ ń kéde MSS socket pẹ̀lú ipò ìdínkù rẹ̀, èyí ni ìmúdájú tó yára jùlọ pé clamp ti ní ipa. Èkejì ń mú un dájú pé ìlànà tí o rò pé o fi kún ni ìlànà tó wà, nínú tábìlì tí a gbé e sí.

Lẹ́yìn náà dáàbò bo ẹ̀rọ tí o kò túnṣe. Ìwárí path-MTU sinmi lórí bí àwọn ìfiránṣẹ́ ICMP fragmentation-needed bá dé ọ̀dọ̀ olùránṣẹ́, nítorí náà firewall tí ń sọnù wọ́n yóò máa ba àwọn ìgbékalẹ̀ ńlá jẹ́ àní pẹ̀lú clamp tó tọ́. Gba àwọn ìfiránṣẹ́ náà láàyè fún ọ̀nà tunnel, tàbí gbà pé clamping ń ṣe àtúnṣe fún ìlànà tí ìwọ fúnra rẹ yàn.

Níkẹyìn, kọ ìfẹ́ láti ka clamp sí bọ́tììnnì àtúnṣe. Ó ń dín ìwọ̀n segment kù, èyí tí ń ná ìṣàn jáde lórí àwọn ọ̀nà tí kò tíì nílò rẹ̀ rí. Bí a bá lò ó lẹ́yìn àwọn àyẹ̀wò mẹ́ta, ó jẹ́ àtúnṣe tí a pinnu; bí a bá kọ́kọ́ lò ó, ó jẹ́ ìyípadà tí ń fi àbùkù ìpilẹ̀ pamọ́ tí ó sì ń fi oníyípadà kejì kún gbogbo ìdánwò tó tẹ̀lé. Ìparòyí yẹn yẹ kí a ṣe é pẹ̀lú ìmọ̀ọ́kán, kì í ṣe ní àìdábọ̀.

Kọ path-MTU tí o wọ̀n, ìnáwó tunnel tí o yọkúrò, ìlànà tí o fi kún àti MSS tí o rí lẹ́yìn náà. Àwọn nọ́mbà mẹ́rin ń sọ ìṣẹ̀lẹ̀ tó kàn di ìwádìí dípò ìwádìí jinlẹ̀.

Àwọn àpilẹ̀kọ tó jọra