Барак жүктөлөт, кичине API чакыруу кайтат, анан файл жүктөө кардар баш тартканга чейин илинип турат. Сервер журналында муну түшүндүргөн эч нерсе жок, анткени пакеттер жолдун ортосунда пайдалуу жооп кайтарбастан ташталган. Бул үлгү — MTU кара көңдөйү: жөнөтүүчү ойлогондон кууш байланыш, үстүнө аны айтуудан үнсүз баш тартуу. Ийгиликсиз болгон өлчөм кайталанат, дал ошол аны диагностикалоого боло турган кылат.

Көңдөйдү кара кылган эмне

Ар бир байланыштын максималдуу берүү бирдиги бар, ал эми кийинки секирүүнүн чегинен чоң пакет же бөлүктөлүүгө, же муну айткан ICMP билдирүүсү менен четке кагылууга тийиш. Жолдун MTU аныктоосу ошол билдирүүнүн жетишине жана ага баш ийүүгө байланыштуу. Аны чыпкалоо же этибарга албоо жөнөтүүчүнү эч качан батпаган пакетти кайталоого калтырат.

Инкапсуляция муну VPN айланасында кадимки кылат, анткени туннель физикалык байланышка өлчөнгөн пакетке сырткы аталышты кошот. Ички пакет 1500 байтта мыйзамдуу, ал эми инкапсуляцияланган эмес, ошондуктан ал чекте өлөт, кичине пакеттер өтүп кетет. Бүткөн кол кармашуу жана иштеген кирүү барагы кичине пакеттер иштей турганын гана далилдейт. Колдонмо жөнөтүүгө аракет кылган эң чоң пакет — маанилүүсү ошол.

Сынган өлчөмдү табыңыз

Бөлүктөөсүз сыноо менен пайдалуу жүктүн өлчөмүн бинардык издөө менен табыңыз, туннелдин бир жагындагы хосттон экинчи жагындагы хостко. Өткөн эң чоң жүк — колдонууга боло турган жол MTUңыз минус аталыштын чыгымы.

ping -M do -s 1400 -c 2 192.0.2.20
ping -M do -s 1200 -c 2 192.0.2.20
ping -f -l 1372 192.0.2.20

1472 байт жүк IPv4 жана ICMP аталыштарынын 28 байты кошулганда таза 1500 байт Ethernet жолунан өтөт. Туннель көтөрүлгөндөн кийин ошол эле сыноо кичирээк жүктө гана ийгиликтүү болсо, айырма — инкапсуляциянын чыгымы, ал эми туннелдин чеги четке кагуу билдирүүсү жаралышы керек болгон жер. Эки санды тең, туташуудан мурун жана кийин жазып алыңыз, анткени ошол жуп — далил. Колдонмо IPv6 колдонсо, сыноону ага кайталаңыз, анткени аталыш чоңураак жана ийгиликсиздик чеги жылат.

Туннелди күнөөлөөдөн мурун далилдерди окуңуз

Алыскы колдонмолордун каталары, тыгын жана кадимки жоготуу да жүктөөлөрдү токтотот, ошондуктан бир ийгиликсиз өткөрүү кара көңдөйдү аныктабайт. Аларды өлчөм катышы ажыратат: 1200 байтта кайталануучу ийгилик жана 1400 байтта кайталануучу токтоп калуу, ошол эле багытта, ошол эле акыркы чекит аркылуу.

Эки учурда тең жазуу чоң пакеттердин чыгып, эч качан жетпей калганын, алардын ортосунда четке кагуу жоктугун көрсөтөт. Бул серверге эмес, чек ара түзмөгүнө кароо керек болгон учур, анткени сервер өзү чындап алган ар бир сурамга жооп берип жатат. Тыгын да токтотот, бирок ал ар кайсы убакта ар кандай өлчөмдөрдү токтотот, бул башка кол тамга.

Оңдоону эки ташууда тең текшериңиз

Колдоого алынган оңдоо — чек арага чыныгы чекти билдирүүгө жол берүү, же ошол жерде TCPнин максималдуу сегмент өлчөмүн кысуу, ошентип өтө чоң сегмент аракет кылынбайт. Тармактагы ар бир MTUну төмөндөтүү же брандмауэрди өчүрүү симптомду жашырат жана кийин эч ким ойлонуп кете албай турган конфигурацияны калтырат.

ip link show dev tun0
sudo nft list ruleset | grep -i -E 'mtu|mss'
sysctl net.ipv4.tcp_mtu_probing
ping -M do -s 1400 -c 2 192.0.2.20

Ошол эле өлчөм сыноосу менен текшериңиз, анан ийгиликсиз болгон колдонмо менен, жана экинчи протоколду текшериңиз, анткени UDP колдонмолору TCPнин сегмент өлчөмүн түзөтүүнү эч качан алышпайт. Баштапкы маанилерди билетте сактаңыз, анткени кайтарылбай турган оңдоо — болушун күтүп турган экинчи көйгөй. Эгер өлчөм сыноосу өтсө да жүктөө дагы эле токтоп турса, кара көңдөй себеп эмес болчу, изилдөө өзгөртүүнү кеңейтүүнүн ордуна улантылышы керек.

Тектеш макалалар