VPN vasitəsilə yol MTU kəşfi: ölçü və ICMP boşluğu
Tunel yolun daşıya biləcəyi paketi kiçildir və kəşf yalnız əks əlaqə çatanda işləyir. Təxmin etmək əvəzinə yolu ölçün, yoxlayın və təsdiqləyin.
Tunel əl sıxışmasını tamamlayır, kiçik sorğular geri qayıdır, sonra ilk böyük ötürmə dayanır. Bu mənzərə ötürmə qabiliyyətindən çox əvvəl yol MTU-sunu göstərir. Marşrut boyunca hər keçid paket ölçüsünü məhdudlaşdırır və inkapsulyasiya bu icazənin bir hissəsini xarici başlıqlara xərcləyir, ona görə daxili paket xam yolun təklif etdiyindən kiçik olmalıdır. Uğursuzluq səssizdir və onu bahalı diaqnostik edən də elə budur.
Yol MTU-su əslində nəyi ölçür
Yol MTU-su iki host arasındakı marşrutda ən kiçik keçid MTU-sudur, yerli interfeysinizdə yazılan MTU deyil. Yerli dəyər təxminin başladığı yerdir və yol onun harada bitməli olduğunu müəyyən edir. Buna görə eyni tunel bir giriş şəbəkəsində işləyə, digərində isə dayana bilər: dəyişən konfiqurasiya deyil, marşrutdur. Bir dəfə ölçüb hər yerdə eyni fərziyyəni qəbul etmək bu problemi yaşadan səhvidir.
Tunel üçün vacib rəqəm daxili MTU-dur; bu, xarici yolun icazəsindən inkapsulyasiyanın istehlak etdiyi hər şeyi çıxdıqdan sonra qalandır. WireGuard xarici IP başlığı və UDP başlığı əlavə edir; digər nəqliyyatlar öz başlıqlarını əlavə edir. Daxili ölçünü çox yüksək qoysanız, hər tam ölçülü paket üçün heç vaxt baş verməyə bilən parçalanma tələb olunur.
Niyə tunel istifadə olunan paketi kiçildir
Tunel interfeysi fiziki keçidin MTU-sunu saxlayırsa, hər böyük paket aşağı axında kiminsə onu parçalamağa hazır olmasından asılıdır. IPv4 prinsipcə buna icazə verir, lakin parçalamamaq tapşırığı verilmiş marşrutlaşdırıcı əvəzində xəta qaytarır. IPv6 marşrutlaşdırıcıları isə tranzitdə heç vaxt parçalamır, ona görə eyni parametr ünvan ailəsindən asılı olaraq fərqli davranır. Hər iki halda göndərən nə isə geri bildirənə qədər heç nə öyrənmir.
Praktik nəticə əl sıxışmasına sığan, yükə sığmayan ölçüdür. TLS ClientHello və ya DNS sorğusu kiçildilmiş yolu toxunulmadan keçəcək qədər kiçikdir, toplu ötürmə isə deyil. Buna görə simptomlar konkret hostlar ətrafında deyil, konkret əməliyyatlar ətrafında toplaşır.
Kəşf yalnız əks əlaqə çatanda işləyir
IPv4 kəşfi parçalama bitinə əsaslanır: paketi ötürə bilməyən marşrutlaşdırıcı növbəti keçid MTU-su ilə ICMP fragmentation-needed qaytarır və göndərən təxminini aşağı salır. IPv6 isə Packet Too Big mesajlarından istifadə edir, çünki marşrutlaşdırıcılar tranzitdə parçalamır. Hər iki mexanizm mesajın tuneldən və geri yolda hər hansı firewall-dan keçərək göndərənə çatdığını fərz edir. Bu fərziyyə pozulanda göndərən yolun daşıya bilmədiyi ölçünü təkrar-təkrar sınayır.
Echo request və echo reply-ə icazə verən firewall mütləq həmin xəta növlərinə icazə verməmişdir. ICMP bir ailədir və burada əhəmiyyətli üzvlər echo cütü deyil, xətalardır. Nəzarət trafiki siyasətini tunelin hər iki ucunda və aralarındakı yolda yoxlayın, hər yerdə bütün ICMP növlərinə icazə vermək əvəzinə platformanın dəstəklənən təlimatlarına əməl edin.
Eyni filtrləmə tunelin içində də ola bilər. Daxili yol xətanı atıb xarici yol onu daşıyırsa, göndərən inkapsulyasiya olunmuş trafikin heç vaxt görmədiyi hədə uyğunlaşa bilər.
Rəqəmi təxmin etmək əvəzinə yolu yoxlayın
Təyinatı, giriş şəbəkəsini və tuneli sabit saxlayın, yalnız paket ölçüsünü dəyişin. MTU ipucusu ilə uğursuz olan parçalamama zondusu sizə növbəti keçid həddini verir; ölçü keçənə qədər təkrarlayın və həm ölçünü, həm ünvan ailəsini qeyd edin.
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
Keçən ping real tətbiqin tam ölçülü seqmentlərinin keçdiyini sübut etmir, ona görə testi əslində uğursuz olan ötürmə ilə təkrarlayın. Ən böyük işlək zondusu konfiqurasiya etdiyiniz tunel MTU-su ilə müqayisə edin və iki rəqəmi qeydlərinizdə ayrı saxlayın. Əgər təxminən bir başlıq ölçüsü qədər fərqlənirlərsə, səhv deyil, inkapsulyasiya yükünü tapmısınız.
RFC 4821-də təsvir olunan PLPMTUD yuxarıya doğru yoxlayır və çatdırılan xətalara güvənmək əvəzinə nəqliyyat təsdiqlərindən istifadə edir. ICMP-ni filtrləyən yollarda kömək edir, lakin dəstək stack və tətbiqə görə dəyişir. TCP axını özü bərpa ola bilər, sabit datagram ölçülü UDP tətbiqi isə uğursuzluğa davam edir.
Bir dəyər seçin və əsaslandırmanı qeyd edin
Tunel MTU-sunu aşağı salmaq həm diaqnostika, həm də qanuni düzəlişdir — yolu bildikdən sonra. Bu, hansı yolun və hansı əks əlaqə mexanizminin işə düşdüyünü bilməyi əvəz etmir, çünki mobil keçid üçün uyğunlaşdırılmış dəyər fiber bağlantıda lazımsız dərəcədə kiçik olacaq. Seçilmiş ölçünü, onu əsaslandıran zondusu və geri qaytarma addımını qeyd edin.
IPv4 mexanizmi RFC 1191-də, IPv6 paketləmə təlimatı isə RFC 8201-də təsvir olunub; hər ikisini adlandırmaq növbəti mühəndisin fərziyyəni yenidən çıxarmasının qarşısını alır. Ötürmə seçdiyiniz ölçüdə hələ də dayanırsa, rəqəmi aşağı salmağı dayandırın və növbəti qata baxın. Hər ölçüdə uğursuz olan yol MTU problemi deyil.