WireGuard тоқтап қалады: MTU шегі ме, әлде жетпейтін жіберу ережесі ме?
Серверден әрі ештеңе жұмыс істемесе, бұл жіберу немесе қайтару маршрутының мәселесі. Кішкентай сұраныстар өтіп, үлкендері тоқтаса, бұл пакет өлшемінің белгісі.
Әдетте WireGuard дұрыс емес әрекет ете бастағанда-ақ MTU-ды төмендетеді, және бұл әдет басқа ақауды жасырады. Жібермейтін қақпа мен үлкен пакеттерді тасымайтын жол ажыратуға болатын үлгілер тудырады: біреуі екі бағытта да, барлық өлшемде сәтсіз болады, екіншісі кішкентай сұраныстардан аман қалады да, үлкендерде өледі. Кез келген санды өзгертуден бұрын қандай пішінде екенін анықтаңыз. Тест қымбат емес және ықтимал себептердің жартысын жояды.
Екі ақау, екі түрлі пішін
Жіберу мәселесі серверден кейін бірден байқалады. Қол алысу сәтті болады, туннель мекенжайы жауап береді, ал қақпаның артындағы ештеңеге кішкентай сұраныспен де жетуге болмайды. Пакет серверге жетті және жіберілмеді, немесе жауаптың қайту жолы болмады.
Өлшем мәселесі тек шектен жоғары көрінеді. DNS, TCP қол алысуы және кішкентай API шақыруы жұмыс істейді, ал файл жүктеу немесе үлкен жауап ілініп қалады. Сыйған пакеттер бастан аяқ өтті, ал сыймағандар пайдалы есепсіз бір жерде тасталды.
Бұл сипаттамалар әртүрлі адамдар мен әртүрлі конфигурация файлдарын көрсетеді, сондықтан болжамнан гөрі пішінді өлшеу құндырақ. Қақпаға бір ping оларды ажырата алмайды.
Бірдеңені кішірейтпес бұрын жіберуді жоққа шығарыңыз
Қақпаның өзін емес, одан әрідегі межені сынаңыз. Сервердің туннель мекенжайына ping тек интерфейстің қосылғанын және туннельді бітіретін машинаға жететінін дәлелдейді. Кеңірек желі трафигі сол машинада IP жіберудің қосылуына және жіберілген ағынға рұқсат беретін firewall-ға байланысты. Екеуі де шын болуы керек, ал біреуі жалған болса, сол үнсіздік қалады.
Қайтару маршруттауы да соншалықты маңызды. Егер межелі желі клиенттің туннель мекенжайына қалай жетуді білмесе, сұраныс келеді де, жауап жоғалады, ал клиент тасталған жіберуге ұқсайтын уақыт асуын хабарлайды.
Дизайн мекенжайларды аударуды қолданатын жерде аудару ережесі сол қайтару жолының бөлігі болып табылады. MTU мәселесін қуған кезде оны жою жұмыс істеп тұрған дизайнды бүлінгенге айналдырады, сондықтан оларды өңдеуден бұрын қолданыстағы ережелерді оқыңыз.
Үзілістің қайдан басталатынын өлшеңіз
Алдымен жіберу күйі мен сүзгі ережелерін оқыңыз. Бұлар тек оқуға арналған тексерулер және арзан сұраққа жауап береді:
sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9
Содан кейін клиенттен қақпадан әрідегі хостқа қарай don’t-fragment битімен өлшемдерді сынаңыз:
ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9
Егер бірінші тексеру жұмыс істесе, ал екіншісі фрагментация қатесімен сәтсіз болса, жол өзінің пайдалануға жарамды өлшемін айтады. Егер ешқайсысы жұмыс істемесе, сіз жіберуге немесе маршруттауға қарап отырсыз, ал MTU өзгертілетін айнымалы емес.
| Observation | Points toward | Where to look |
|---|---|---|
| Nothing beyond the gateway works | Forwarding or return route | Forwarding flag, filter rules, routing table |
| Small works, large stalls | Packet size on the path | Tunnel MTU and the link underneath |
| Only names fail | DNS resolution | The resolver configured for the tunnel |
| Works sometimes | Multiple paths or state expiry | Flow selection and NAT state |
Дәлелдеген қабатты түзетіңіз
Жіберу ақау болса, түзету — дизайн рұқсат еткендей тар түрде көрсетілген жіберу ережесі немесе маршрут. Өлшем ақау болса, түзету — осы нақты жолдағы инкапсуляцияны ескеретін MTU, ол оған мұқтаж интерфейске қолданылады, флоттағы әрбір адаптерге емес.
Қалай болса да, кейін сол тапсырманы сол межеге қайталаңыз. Егер бастапқы үлкен тасымалдау енді аяқталса, өзгеріс сәтсіз болған қабатты шешті. Егер тек кішкентай тексеру жақсарса, сіз симптомды емдедіңіз, ал нақты шек әлі орнында.
Өзгеріске дейін қандай пішінді байқағаныңызды жазыңыз. Түзетудің жанына жазылған сол бір жол — келесі адамның ешқашан мәселе болмаған MTU-ды төмендетуіне жол бермейтін нәрсе.