Tunnel o'z handshake'ini tugatadi, kichik so'rovlar qaytadi, birinchi katta uzatish esa tiqilib qoladi. Bu naqsh o'tkazuvchanlikdan ancha oldin yo'l MTU siga ishora qiladi. Marshrutdagi har bir bo'g'in paket hajmini cheklaydi va inkapsulyatsiya bu ruxsatning bir qismini tashqi sarlavhalarga sarflaydi, shuning uchun ichki paket xom yo'l taklif qilganidan kichik bo'lishi kerak. Nosozlik jim, va shuning uchun uni tashxislash qimmatga tushadi.

Yo'l MTU aslida nimani o'lchaydi

Yo'l MTU ikki xost orasidagi marshrutdagi eng kichik bo'g'in MTU si, mahalliy interfeysingizda chop etilgan MTU emas. Mahalliy qiymat baholash boshlanadigan nuqta, yo'l esa u qayerda tugashi kerakligini hal qiladi. Shuning uchun bir xil tunnel bir kirish tarmog'ida ishlab, boshqasida tiqilib qolishi mumkin: marshrut o'zgardi, konfiguratsiya emas. Bir marta o'lchab, hamma joyda taxmin qilish bu muammoni tirik saqlaydigan xatodir.

Tunnel uchun muhim raqam ichki MTU, ya'ni tashqi yo'l ruxsatidan inkapsulyatsiya sarflaganini ayirgandan qolgani. WireGuard tashqi IP sarlavhasi va UDP sarlavhasini qo'shadi; boshqa transportlar o'zini qo'shadi. Ichki hajmni juda yuqori qilib qo'ying, har bir to'liq hajmli paket hech qachon sodir bo'lmaydigan fragmentatsiyani talab qiladi.

Nima uchun tunnel foydali paketni kichraytiradi

Agar tunnel interfeysi jismoniy bo'g'in MTU sini saqlasa, har bir katta paket quyida kimdir uni fragmentatsiya qilishga tayyor bo'lishiga bog'liq. IPv4 buni printsipial ravishda joiz ko'radi, lekin fragmentatsiya qilmaslik buyurilgan router buning o'rniga xato qaytaradi. IPv6 routerlar tranzitda hech qachon fragmentatsiya qilmaydi, shuning uchun bir xil sozlama manzil oilasiga qarab boshqacha ishlaydi. Qanday bo'lsa ham, biror narsa qaytib xabar bermaguncha jo'natuvchi hech narsa o'rganmaydi.

Amaliy natija handshake'ga sig'adigan, lekin foydali yukka sig'maydigan hajm. TLS ClientHello yoki DNS so'rovi kichraytirilgan yo'lni tegmasdan kesib o'tish uchun yetarlicha kichik, katta uzatish esa bunday emas. Shuning uchun belgilar aniq xostlar atrofida emas, aniq operatsiyalar atrofida to'planadi.

Aniqlash faqat fikr-mulohaza yetib kelganda ishlaydi

IPv4 aniqlash don't-fragment bitiga tayanadi: paketni uzata olmaydigan router keyingi sakrash MTU si bilan ICMP fragmentation-needed qaytaradi va jo'natuvchi bahosini pasaytiradi. IPv6 buning o'rniga Packet Too Big xabarlaridan foydalanadi, chunki routerlar tranzitda fragmentatsiya qilmaydi. Ikkala mexanizm ham xabar jo'natuvchiga qaytish yo'lini topishini, tunneldan va qaytish yo'lidagi har qanday xavfsizlik devoridan o'tishini taxmin qiladi. Bu taxmin barbod bo'lganda, jo'natuvchi yo'l ko'tara olmaydigan hajmni qayta-qayta sinab ko'radi.

echo request va echo reply ga ruxsat beradigan xavfsizlik devori o'sha xato turlariga ham ruxsat bergan bo'lishi shart emas. ICMP bir oila, va bu yerda muhim a'zolar xatolar, echo juftligi emas. Tunnelning ikkala uchida va ular orasidagi yo'lda boshqaruv trafigi siyosatini tekshiring va hamma joyda har bir ICMP turiga ruxsat berish o'rniga platforma qo'llab-quvvatlaydigan yo'riqnomaga amal qiling.

Xuddi shu filtrlash tunnel ichida ham bo'lishi mumkin. Agar ichki yo'l xatoni tashlab yuborsa, lekin tashqi yo'l uni olib o'tsa, jo'natuvchi inkapsulyatsiya qilingan trafik hech qachon ko'rmaydigan chegaraga moslashishi mumkin.

Raqamni taxmin qilish o'rniga yo'lni sinab ko'ring

Manzilni, kirish tarmog'ini va tunnelni qat'iy qoldirib, faqat paket hajmini o'zgartiring. MTU ishorasi bilan muvaffaqiyatsiz bo'lgan don't-fragment sinovi sizga keyingi sakrash chegarasini beradi; biror hajm o'tguncha takrorlang va hajmni ham, manzil oilasini ham yozib oling.

ping -M do -s 1400 10.60.20.10
ping -M do -s 1300 10.60.20.10
ping -6 -M do -s 1300 2001:db8::10

Sig'adigan ping haqiqiy ilovaning to'liq hajmli segmentlari sig'ishini isbotlamaydi, shuning uchun sinovni haqiqatan muvaffaqiyatsiz bo'lgan uzatish bilan takrorlang. Eng katta ishlagan sinovni siz sozlagan tunnel MTU si bilan solishtiring va ikki raqamni yozuvlaringizda alohida saqlang. Agar ular taxminan bitta sarlavha farq qilsa, siz nosozlik emas, inkapsulyatsiya ortiqcha sarfini topdingiz.

RFC 4821 da tasvirlangan PLPMTUD yuqoriga qarab sinaydi va yetkazilgan xatolarga ishonish o'rniga transport tasdiqlaridan foydalanadi. U ICMP ni filtrlaydigan yo'llarda yordam beradi, ammo qo'llab-quvvatlash stek va ilovaga qarab farq qiladi. TCP oqimi o'z-o'zidan tiklanadi, qat'iy datagramma hajmli UDP ilova esa muvaffaqiyatsizlikda davom etadi.

Qiymat tanlang va asosni yozib oling

Tunnel MTU sini pasaytirish ham diagnostika, ham qonuniy tuzatishdir, yo'lni bilganingizdan keyin. U qaysi yo'l va qaysi fikr-mulohaza mexanizmi ishtirok etganini bilish o'rnini bosmaydi, chunki mobil bo'g'in uchun sozlangan qiymat tolali aloqada ortiqcha kichik bo'ladi. Tanlangan hajmni, uni oqlagan sinovni va qaytarish qadamini yozib oling.

IPv4 mexanizmi RFC 1191 da, IPv6 paketlash yo'riqnomasi RFC 8201 da tasvirlangan; ikkalasini ham nomlash keyingi muhandisni taxminni qaytadan chiqarishdan saqlaydi. Agar uzatish siz tanlagan hajmda hamon tiqilib qolsa, raqamni pasaytirishni to'xtating va keyingi qatlamga qarang. Har bir hajmda muvaffaqiyatsiz bo'ladigan yo'l MTU muammosi emas.

O'xshash maqolalar