VPN niyə böyük ötürmələrdə donur, kiçiklərdə isə yox
Kiçik sorğular cavab verir, böyük ötürmələr donur. Sabit MTU kopyalamadan əvvəl interfeys həddini, yol həddini və elan edilmiş TCP yükünü müqayisə edin.
Səhifə açılır, ping cavab verir, fayl köçürməsi isə hər dəfə eyni nöqtədə donur. Bu əlamət zolaq genişliyinə və ya kimlik məlumatlarına deyil, paket ölçüsünə işarə edir. İnkapsulyasiya hər paketə bayt əlavə edir, ona görə də ilkin yolda sığan yük tuneldən keçdikdən sonra həddi aşa bilər. Bu söhbətlərdə üç fərqli rəqəm MTU adlanır və onları qarışdırmaq bir tətbiqi düzəldən, digərini sındıran parametrə gətirib çıxarır.
İnsanların MTU adlandırdığı üç rəqəm
İnterfeys MTU həmin kanalda paket üçün konfiqurasiya edilmiş hədddir. Yol MTU marşrut boyunca ən kiçik hədddir və konfiqurasiya edilmir, aşkar edilir. TCP MSS qarşı tərəfin qəbul edə biləcəyini bildirdiyi yük ölçüsüdür və ayrıca fiziki hədd deyil, digər ikisindən törəyir.
Tunelin daxili və xarici görünüşü var. Xarici paket inkapsulyasiya olunmuş paketi və protokolun tələb etdiyi başlıqları daşıyır, buna görə istifadə oluna bilən daxili ölçü xarici yolun icazə verdiyindən kiçikdir. VPN serverinə qədər yol da serverin təyinat yerinə qədər yolundan fərqlidir.
Yol MTU aşkarlanması göndərənə işlək ölçünü öyrənməyə imkan verir, lakin geribildirimin gəlməsindən asılıdır. Ara cihaz müvafiq ICMP mesajlarını süzgəcdən keçirəndə göndərən heç vaxt tamamlanmayan paketlər göndərməyə davam edir və bu, klassik qara dəlikdir. Simptom onu tanıyanda aydın olur: əl sıxma uğurlu olur, ilk tam ölçülü yük yox olur və bağlantı sonda sıfırlanır və ya donur. Tətbiq jurnalında heç nə şəbəkə problemi kimi görünmür.
Yolu nəzarət etdiyiniz yüklə yoxlayın
Yoxlama bir marşrut və bir ölçü haqqında sübutdur, tövsiyə olunan parametr deyil. Cavab verən host seçin və yalnız yükün ölçüsünü dəyişin.
ping -M do -s 1372 -c 2 203.0.113.20 ping -4 -f -l 1372 vpn.example
Birinci əmr fraqmentasiya söndürülmüş halda və 1372 baytlıq yüklə Linux yoxlaması göndərir, ikincisi isə eyni şeyi yükün -l ilə verildiyi Windows-da edir. Cavab həmin ölçünün yoldan keçdiyini göstərir. Fraqmentasiya tələbi mesajı məlumat verir, fasilə isə ikimənalıdır, çünki host və ya ara cihaz sadəcə ICMP-ni ata bilər.
Ölçünü bayt-bayt ikili axtarış əvəzinə bir neçə addımla azaldın. Siz ölçü tavanının olub-olmadığını müəyyən etməyə çalışırsınız, hər şəbəkə üçün rəqəm dərc etməyə deyil. Tapdığınız rəqəm bu yol, bu protokol və bu ünvan ailəsi üçün keçərlidir.
IPv4 və IPv6 fərqli fraqmentləşir, ona görə bir ailənin yoxlama nəticəsi digəri haqqında heç nə demir. Tətbiqin həqiqətən istifadə etdiyi ailəni yoxlayın.
MSS sıxılması yalnız TCP-yə kömək edir
TCP-də effektiv yük əl sıxma zamanı razılaşdırılır və yoldakı marşrutlaşdırıcı həmin dəyəri aşağıya doğru yenidən yaza bilər ki, hər iki son nöqtə daha kiçik seqmentlər göndərsin. MSS sıxılması bunu edir və müştəriyə heç toxunmadan işləyir.
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ip link show tun0
Birinci qayda ötürülən TCP əl sıxmaları üçün elan edilmiş MSS-i yol MTU-suna sıxır, ikincisi isə tunel interfeysinin öz MTU-sunu göstərir ki, onu yolun icazə verdiyi ilə müqayisə edəsiniz. Sıxma əl sıxmadan sonra donan TCP tətbiqi üçün ən az müdaxiləli düzəlişdir.
UDP üçün heç nə etmir. Böyük veratoqramlar göndərən səs və ya oyun müştərisi MSS parametrini tamamilə nəzərə almayacaq, çünki yenidən yazılacaq əl sıxma yoxdur. Uğursuz tətbiq UDP-dirsə, əvəzində müştərinin öz paket ölçüsü seçimlərinə baxın. İki protokol fərqli şəkildə sıradan çıxır və fərqli alətlərlə təmir edilir, buna görə protokol biletin ilk cümləsində yer almalıdır.
OpenVPN tun-mtu, mssfix və fraqmentlə bağlı parametrlər təqdim edir və onların davranışı versiyadan və məlumat kanalının AEAD olub-olmamasından asılıdır. İstifadə olunan versiyanın təlimatını oxuyun və bir anda bir parametri dəyişin.
Bir dəstəklənən parametri dəyişin və hər iki sınağa təkrar edin
Orijinal profili saxlayın, bir dəstəklənən dəyəri dəyişin və həm işləyən kiçik sorğunu, həm də uğursuz olan böyük köçürməni təkrarlayın. Yalnız böyük olan dəyişirsə, siz ölçünün arxasınca idiniz. Hər ikisi dəyişirsə, onunla başqa bir şey də tərpənib.
Aşağı dəyər simptomu azalda bilər, amma əlavə yük gətirir, ona görə ən kiçik mümkün rəqəm məqsəd deyil. Məqsəd yolun ən az israf ilə etibarlı daşıdığı ölçüdür. Dəyəri, yolu və müştəri versiyasını biletə yazın, çünki eyni rəqəmin başqa yerdə tətbiqi təxmindir.
Eyni profil başqa etibarlı şəbəkədən işləyirsə, müştərini düzəldilmiş elan etmək əvəzinə bu fərqi diaqnozda saxlayın. Dəyişən dəyişən yol idi və yoxlamanın ölçdüyü də yoldur.