Kichik so'rovlar ishlaydi, katta yuklab olishlar osilib qoladi va kimdir MSS cheklashni taklif qiladi. Bu taklif to'g'ri tartibda sinab ko'rishga arziydigan darajada ko'p marta to'g'ri va ko'r-ko'rona qo'llansa, yarim kunni yo'qotadigan darajada ko'p marta noto'g'ri. Quyidagi uchta tekshiruv haqiqiy TCP o'lcham muammosini UDP muammosidan, buzilgan path-MTU aniqlashdan va qayta yozilishi kerak bo'lgan qo'l siqishni hech qachon ko'rmaydigan cheklashdan ajratadi.

Nosozlik shaklidan boshlang

O'lcham nosozligining imzosi bor: ulanish o'rnatiladi, autentifikatsiya va kichik javoblar muvaffaqiyatli bo'ladi, so'ngra to'liq o'lchamdagi segment kerak bo'lganda uzatish cheksiz to'xtaydi. Matnni yuklab, rasmni hech qachon tugatmaydigan sahifalar kichikroq miqyosdagi xuddi shu nosozlikdir. Agar umuman hech narsa ulanmasa, muammo yo'lda ertaroq va cheklash yordam bermaydi. Cheklash hech qachon kelmagan qo'l siqishni tuzata olmaydi.

Bu imzo segment o'lchami qo'l siqishda kelishilgani uchun mavjud. Har bir tomon maksimal segment o'lchamini TCP opsiyasi sifatida e'lon qiladi, yuboruvchilar esa qarshi tomon e'lonini hurmat qiladi. Agar yo'l shunday katta segmentni ko'tara olmasa, nosozlik keyinroq, yuboruvchi nihoyat bittasini sinab ko'rganda paydo bo'ladi.

Bu simptomni o'qiyotganda transportni ko'zdan qochirmang. Cheklash TCP opsiyasini qayta yozishdir, shuning uchun bir xil tunnel ostida qotib qolgan ovozli yoki video qo'ng'iroq MSS muammosi emas va undan yaxshilanmaydi. TCP opsiyasiga tegishdan oldin transportni yozib qo'ying.

Yo'lni baholang, so'ng tunnel bilan solishtiring

Ikki raqam muhim va ular ko'pincha chalkashtiriladi. path-MTU — yo'l fragmentatsiyasiz ko'taradigan eng katta paket, IPv4 uchun e'lon qilingan MSS esa shu qiymatdan IP va TCP sarlavhalarining 40 baytini ayirgandir, yoki IPv6 uchun 60 ni ayirgandir. Tunnel inkapsulyatsiyasi ichki paket boshlanishidan oldin ham byudjetning bir qismini yeydi.

ping -M do -s 1400 198.51.100.20
tracepath 198.51.100.20

do-not-fragment biti bilan ping o'sha yuk o'lchamidagi paket omon qoladimi-yo'qmi aytadi; o'lchamni u muvaffaqiyatsiz bo'lguncha o'zgartiring va yo'l chegarasini tajriba yo'li bilan topdingiz. tracepath chiqishi marshrut bo'ylab aniqlangan MTUni xabar qiladi, bu ishlaganda tezroq, oraliq hop zondlarni filtrlaganda kamroq ishonchli.

Endi tunnel xarajatini ayiring. Tashqi IP sarlavhasi, UDP sarlavhasi va tunnelga xos sarlavha bir xil 1500 baytdan chiqadi, shuning uchun odatiy Ethernet asosida foydalanish mumkin bo'lgan ichki MTU fizik ulanish taklif qilganidan past. Hisoblangan ichki MTU sizning hamkorlaringiz e'lon qilganidan past bo'lsa, siz taxmin emas, haqiqiy cheklash nomzodini topdingiz. Hisoblangan qiymat allaqachon hamkorlar e'lonidan yuqori bo'lsa, shu yerda to'xtang va boshqa joydan qidiring.

Cheklashni qo'l siqish o'tadigan joyga qo'ying

Cheklash shlyuzdan o'tayotganda SYN va SYN-ACK paketlaridagi MSS opsiyasini qayta yozish orqali ishlaydi. Agar qoida hech bir yo'nalish hech qachon o'tmaydigan interfeysda bo'lsa, muzokaralar o'zgarmagan holda tugaydi va simptom qoladi, shuning uchun natijani qiymatdan ko'ra joylashuv hal qiladi.

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

Yo'nalish ikkinchi yarmi. Bir yo'nalishni cheklash oqimlarning yarmini tuzatadi va qolganini interval bilan ko'rinadigan tarzda muvaffaqiyatsiz qoldiradi, shuning uchun uni uzatilayotgan trafikning ikkala yo'nalishiga ham qo'llang. Tunnel interfeysi uchun klassik Linux shakli SYN paketlariga mos keladigan mangle qoidasidir:

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

--clamp-mss-to-pmtu aslida nima qilishiga e'tibor bering: u qiymatni marshrut MTUsidan oladi, bu har doim tunnelning haqiqiy yuk byudjeti emas. Ichki marshrut va tashqi yo'l farq qiladigan marshrutga asoslangan tunnelda oldingi tekshiruvda hisoblangan aniq qiymat avtomatikdan ko'ra bashorat qilinadiganroq.

Yangi ulanish bilan tekshiring va fikr-mulohazani tirik saqlang

O'rnatilgan ulanish kelishilgan MSSni saqlaydi, shuning uchun o'sha sessiyada sinash hech narsani isbotlamaydi. O'zgarishdan keyin yangi ulanish oching va kelishilgan qiymatni to'g'ridan-to'g'ri o'qing, tasodifan tugaydigan uzatishdan taxmin qilish o'rniga.

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

Birinchi buyruq soket MSSni uning tirbandlik holati bilan birga xabar qiladi, bu cheklash ta'sir qilganining eng tez tasdig'i. Ikkinchisi qo'shgan deb o'ylagan qoidangiz mavjud qoida ekanini, u joylashtirilgan jadvalda tasdiqlaydi.

Keyin tuzatmagan mexanizmingizni himoya qiling. path-MTU aniqlash ICMP fragmentation-needed xabarlarining yuboruvchiga yetib borishiga bog'liq, shuning uchun ularni tashlab yuboradigan xavfsizlik devori to'g'ri cheklash bo'lsa ham katta uzatishlarni buzishda davom etadi. Tunnel yo'li uchun bu xabarlarga ruxsat bering yoki cheklash siz tanlagan siyosatni qoplayotganini qabul qiling.

Nihoyat, cheklashni sozlash tugmasi deb qarash vasvasasiga qarshi turing. U segment o'lchamini cheklaydi, bu esa hech qachon kerak bo'lmagan yo'llarda o'tkazuvchanlikni sarflaydi. Uchta tekshiruvdan keyin qo'llansa, bu maqsadli ta'mirlash; birinchi bo'lib qo'llansa, bu asl nosozlikni yashiruvchi va har bir keyingi sinovga ikkinchi o'zgaruvchini qo'shuvchi o'zgarish. Bu almashinuvni ataylab qilish kerak, standart bo'yicha emas.

O'lchagan path-MTUni, ayirgan tunnel xarajatini, qo'shgan qoidani va keyin ko'rgan MSSni yozib qo'ying. To'rt raqam keyingi hodisani tekshirish o'rniga qidiruvga aylantiradi.

O'xshash maqolalar