VPN shlyuzida MSS cheklash: nimani tuzatadi va nimani tuzatmaydi
Cheklash TCP qo'l siqishlarida MSSni qayta yozadi, segmentlar tunnelga sig'ishi uchun. U hech qachon UDP yoki buzilgan path-MTU tekshiruvini tuzatmaydi. Uchta tekshiruv, tartib bilan.
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.
| 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 |
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.