Жижиг хүсэлтүүд ажилладаг, том таталтууд гацдаг, хэн нэгэн 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 байтаас гардаг тул ердийн Ethernet суурь дээр ашиглаж болох дотоод MTU нь физик холболтын мэдээллээс доогуур байна. Тооцоолсон дотоод MTU нь таны түншүүдийн зарласнаас доогуур бол та таамаг биш, жинхэнэ хязгаарлалтын нэр дэвшигчийг олсон. Тооцоолсон утга аль хэдийн түншүүдийн зарлалаас өндөр бол энд зогсоод өөр газраас хай.

Хязгаарлалтыг гар барилт өнгөрдөг газарт тавь

Хязгаарлалт нь гарц дамжих үед SYN ба SYN-ACK пакет дахь MSS сонголтыг дахин бичсэнээр ажилладаг. Хэрэв дүрэм хоёр чиглэлийн аль нь ч хэзээ ч дамждаггүй интерфейс дээр байрлаж байвал хэлэлцээр өөрчлөлтгүй дуусч, шинж тэмдэг хэвээр үлддэг, тиймээс үр дүнг утгаас илүү байршил шийддэг.

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

Чиглэл бол нөгөө хагас. Нэг чиглэлийг хязгаарлах нь урсгалын хагасыг засч, үлдсэнийг нь тасалдалтай мэт харагдах байдлаар бүтэлгүй үлдээдэг тул дамжуулагдаж буй урсгалын хоёр чиглэлд хэрэглэ. Туннелийн интерфейсийн сонгодог 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-ийг бичиж аваарай. Дөрвөн тоо дараагийн тохиолдлыг мөрдөн шалгалтын оронд хайлт болгоно.

Холбоотой нийтлэлүүд