VPN аркылуу жол MTU изилдөө: өлчөм жана ICMP боштугу
Туннель жол көтөрө алган пакетти кичирейтет, ал эми изилдөө кайтарым байланыш келгенде гана иштейт. Божомолдоонун ордуна жолду өлчөңүз, сынап көрүңүз жана текшериңиз.
Туннель өзүнүн кол алышуусун бүтүрөт, кичине суроолор кайтып келет, биринчи чоң өткөрүү токтойт. Бул үлгү өткөрүү жөндөмдүүлүгүнөн алда канча эрте жол MTUга көрсөтөт. Маршруттагы ар бир звенo пакеттин өлчөмүн чектейт, ал эми инкапсуляция ошол уруксаттын бир бөлүгүн сырткы баш тамгаларга жумшайт, ошондуктан ички пакет таза жол көрсөткөндөн кичине болушу керек. Жаңылыштык үнсүз, жана бул аны диагностикалоону кымбат кылат.
Жол MTU чындыгында эмнени өлчөйт
Жол MTU – эки хосттун ортосундагы маршруттагы эң кичине звенонун MTUсу, жергиликтүү интерфейске басылган MTU эмес. Жергиликтүү маани – баалоо башталган чекит, ал эми жол анын кайда бүтүшүн чечет. Ошондуктан бирдей туннель бир кирүү тармагында иштеп, экинчисинде токтоп калышы мүмкүн: маршрут өзгөрдү, конфигурация эмес. Бир жолу өлчөп, бардык жерде божомолдоо – бул көйгөйдү тирүү кармаган ката.
Туннель үчүн маанилүү сан – ички MTU, ал сырткы жолдун уруксатынан инкапсуляция жумшаганын кемитип калгандан кийинкиси. WireGuard сырткы IP баш тамгасын жана UDP баш тамгасын кошот; башка транспорттор өздөрүнүкүн кошот. Ички өлчөмдү өтө бийик койсоңуз, толук өлчөмдүү ар бир пакет эч качан болбой турган фрагментацияны талап кылат.
Туннель колдонулуучу пакетти эмне үчүн кичиретет
Эгер туннель интерфейси физикалык звенонун MTUсун сактаса, ар бир чоң пакет төмөнкү бирөөнүн аны фрагменттөөгө даяр болушуна көз каранды. IPv4 муну принципте уруксат берет, бирок фрагменттебөөгө буйрук алган маршрутизатор анын ордуна ката кайтарат. IPv6 маршрутизаторлору транзитте такыр фрагменттешпейт, ошондуктан ошол эле жөндөө дарек үй-бүлөсүнө жараша башкача аракеттенет. Кандай болбосун, жөнөтүүчү бирдеңе кайра кабарламайынча эч нерсе үйрөнбөйт.
Практикалык натыйжа – кол алышууга батып, пайдалуу жүккө батпаган өлчөм. TLS ClientHello же DNS суроо кичирейтилген жолдон тийбестен өтүүгө жетиштүү кичине, ал эми массалык өткөрүү андай эмес. Ошондуктан симптомдор белгилүү хосттордун эмес, белгилүү операциялардын айланасында чогулат.
Изилдөө кайтарым байланыш келгенде гана иштейт
IPv4 изилдөөсү don't-fragment битине таянат: пакетти андан ары жөнөтө албаган маршрутизатор кийинки секирүүнүн MTUсу менен ICMP fragmentation-needed кайтарат, ал эми жөнөтүүчү өз баасын төмөндөтөт. IPv6 анын ордуна Packet Too Big билдирүүлөрүн колдонот, анткени маршрутизаторлор транзитте фрагменттешпейт. Эки механизм тең билдирүү жөнөтүүчүгө кайтуу жолун табат деп божомолдойт: туннелден өтүп жана кайтуу жолундагы ар кандай брандмауэрдин артынан. Бул божомол ишке ашпаса, жөнөтүүчү жол көтөрө албаган өлчөмдү кайра-кайра сынайт.
echo request жана echo replyге уруксат берген брандмауэр сөзсүз түрдө ошол ката түрлөрүнө уруксат берген эмес. ICMP – бир үй-бүлө, жана бул жерде маанилүү мүчөлөр – каталар, эхо жубу эмес. Туннелдин эки учунда жана алардын ортосундагы жолдо башкаруу трафигинин саясатын текшериңиз, жана бардык жерде ар бир ICMP түрүнө уруксат берүүнүн ордуна платформанын колдогон көрсөтмөлөрүн аткарыңыз.
Ошол эле фильтрлөө туннелдин ичинде да болушу мүмкүн. Эгер ички жол катаны таштап, сырткы жол аны алып өтсө, жөнөтүүчү инкапсуляцияланган трафик чындыгында эч качан көрбөгөн чекке ылайыкташы мүмкүн.
Санды божомолдоонун ордуна жолду сынап көрүңүз
Максатты, кирүү тармагын жана туннелди кыймылдатпай, пакеттин өлчөмүн гана өзгөртүңүз. MTU кеңеши менен ишке ашпаган don't-fragment сынагы сизге кийинки секирүүнүн чегин берет; кандайдыр бир өлчөм өткөнгө чейин кайталаңыз жана өлчөмдү да, дарек үй-бүлөсүн да жазып алыңыз.
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
Батып турган ping чыныгы колдонмонун толук өлчөмдүү сегменттери батарын далилдебейт, ошондуктан сынакты чындыгында ишке ашпаган өткөрүү менен кайталаңыз. Эң чоң иштеген сынакты конфигурациялаган туннель MTUсу менен салыштырыңыз жана эки санды жазууларыңызда өзүнчө кармаңыз. Эгер алар болжол менен бир баш тамгага айырмаланса, сиз катаны эмес, инкапсуляция кошумчасын таптыңыз.
RFC 4821де сүрөттөлгөн PLPMTUD жогору карай сынайт жана жеткирилген каталарга ишенүүнүн ордуна транспорттук ырастоолорду колдонот. Ал ICMPны фильтрлеген жолдордо жардам берет, бирок колдоо стекке жана колдонмого жараша өзгөрөт. TCP агымы өзү калыбына келиши мүмкүн, ал эми туруктуу датаграмма өлчөмү бар UDP колдонмосу ишке ашпай берет.
Маанини тандап, негизин жазыңыз
Туннель MTUсун төмөндөтүү – бул да диагностика, да мыйзамдуу оңдоо, жолду билгенден кийин. Ал кайсы жол жана кайсы кайтарым байланыш механизми катышканын билүүнүн ордун баспайт, анткени мобилдик звеного ылайыкталган маани булаалык туташууда ашыкча кичине болот. Тандалган өлчөмдү, аны негиздеген сынакты жана кайтаруу кадамын жазыңыз.
IPv4 механизми RFC 1191 де, ал эми IPv6 пакеттөө көрсөтмөсү RFC 8201де сүрөттөлгөн; экөөнү тең атоо кийинки инженерди божомолду кайра чыгаруудан сактайт. Эгер өткөрүү тандаган өлчөмүңүздө дагы эле токтоп калса, санды төмөндөтүүнү токтотуп, кийинки катмарга караңыз. Ар бир өлчөмдө ишке ашпаган жол MTU маселеси эмес.