Kiçik pinglər gün boyu tuneldən keçir, SSH banneri gəlir, sonra fayl ötürməsi başlayan anda sessiya donur. Bu nümunə yanlış qatda sayılmış bayt büdcəsini göstərir: xarici tunel öz yükü üçün ölçülüb, daxili tunelin payını isə heç kim çıxmayıb. WireGuard üçün iç-içə IPIP paketi sadəcə başqa bir IP paketidir, buna görə də heç vaxt ayırmadığınız baytları istehlak edir. Düzəliş hesablamadır və üç əmrlə bir cədvələ sığır.

Onu ele verən əlamət

Fraqmentasiya problemi özünü həmişə ölçü ilə bildirir, heç vaxt ünvanlarla yox. Həmkarınız bir saat boyunca 56 baytlıq ping sorğusuna cavab verir, sonra tunel işlək qalarkən və heç bir marşrut dəyişməzən 1400 baytda susur. Handshake yerləşir, ilk tam TCP pəncərəsi yerləşmir və ötürmə sağlam göründükdən saniyələr sonra dayanır.

Heç nəyi redaktə etməzdən əvvəl tavanı ölçün, çünki ölçülməmiş tavan arxasınca iki dəfə qaçacaqsınız. Şübhəli ölçüdən aşağıda do-not-fragment biti qurulmuş bir sınaq göndərin, ping -M do -s 1000 10.9.0.2, sonra onu artıq böyük olduğunu bildiyiniz ölçüdə təkrarlayın. Dönüş yükün ölçüsünü izləyərkən təyinat dəyişməz qalırsa, marşrutlaşdırma öz işini görür və büdcədən bir başlıq çatışmır.

Hər başlığı bir dəfə, düzgün qatda sayın

Tunel interfeysindən deyil, yoldakı ən kiçik MTU-dan başlayın, çünki divar hər iki son nöqtədən yuxarıda yerləşir. WireGuard IPv4 xarici nəqliyyata 60 bayt xərcləyir: 20-si IP, 8-i UDP və 32-si öz başlığı üçün, nəqliyyat IPv6 olduqda isə 80 bayt. 1420 baytlıq wg0, 1500 baytlıq yolun həqiqətən çatdıra bildiyi 1440-ın altında 20 bayt ehtiyat saxlayır, buna görə də vikidən köçürülmüş rəqəm burada yenə uyğun gəlir. Bütün yığını diaqramda yazın, çünki MTU-nu növbəti dəyişən şəxs əks halda təzə dairəvi rəqəm seçəcək və sizin xətanızı miras alacaq.

LayerBytesRemaining
Path MTU on the wired linknone yet1500
WireGuard outer: IP, UDP, WG header601440
Slack kept for safety201420 (wg0)
IPIP header inside the tunnel201400 (ipip0)
Original IPv4 and TCP headers401360 payload

Büdcələrin pozulduğu yer beşinci sətirdir, çünki iç-içə interfeysin daşıdığı 1400 bayt artıq orijinal paketin öz 40 baytlıq başlıqlarını əhatə edir. Həmin baytların yalnız 1360-ı faylı oxuyan prosesə çatır. 1400-ü tətbiq yükü kimi qəbul edin, o sütunu olmayan hər hansı diaqram sizi buna dəvət edir, və daxili cihaz hərəkət etməmiş divara qarşı 40 bayt artıq səxavətli olur.

İki MTU-nu ayrı-ayrılıqda təyin edin

Daşıyıcı və iç-içə cihaz ayrı obyektlərdir, buna görə hər birinə öz dəyəri lazımdır. Onları bu sıra ilə tətbiq edin, çünki iç-içə cihaz daşıyıcıdan heç nə miras almır:

ip link set wg0 mtu 1420
ip tunnel add ipip0 mode ipip remote 203.0.113.9 local 198.51.100.4
ip link set ipip0 mtu 1400

Yadda saxlamağa dəyən qayda: daxili MTU = xarici MTU - 20, IPIP tunelinin daşıdığı paket IPv4 olduqda, və - 40, daxili paketin hər hansı tərəfi IPv6 olduqda, çünki iç-içə başlıq 20 baytdan 40 bayta böyüyür. Bu çıxmaya başqa heç nə aid deyil. WireGuard-ın yükü 1420 seçdiyiniz anda artıq xərclənib və onu iki dəfə tutmaq mükəmməl işləyən, heç kim ölçmədikcə yavaş qalan tunel yaradır. Hər iki cihazın dairəvi 1400 daşıdığı yerləşdirmə məhz bu səhvin barmaq izidir.

İç-içə paketin hər hansı tərəfində IPv6 yuxarıdakı bütün rəqəmləri etibarsız edir, buna görə oxşar saytdan rəqəm köçürmək əvəzinə yenidən hesablayın. IPv6 xarici yolda və ya orijinal veraqramda görünən kimi çıxılan başlıqların hər biri 40 baytdır və yük rəqəmi dəqiq bu qədər azalır.

Çox güman ki, ehtiyacınız olmayan firewall qaydası

İki WireGuard həmkarı arasında naqildə yeganə şey UDP-dir, buna görə protokol 4 üçün, yəni RFC 2003-ün IPv4-ün IPv4 daxilində qablaşdırılmasına verdiyi nömrə üçün gələn qayda nə iç-içə yolu yaradır, nə də onu həyatda saxlayır. IPIP başlığı şifrələnmiş yükün içində yaşayır, orada heç bir kənar firewall onu görmür. Protokol 4-ü yenə də açmaq hosta bir əlavə icazəli yoldan başqa heç nə qazandırmır.

Orijinal paketin mənbələrini və təyinatlarını qeyd edən siyasət dekapsulyasiyadan sonraya, tunel interfeyslərinə və marşrut cədvəlinə aiddir. Onu orada yerləşdirin və kənar qayda bağlı qala bilər.

WireGuard əslində nəyi doğrulayır

AllowedIPs WireGuard-ın daşıdığı paketin mənbəyini mühakimə edir və daşıdığı şey IPIP ilə qablaşdırılmış paketdir. İcazəli IPIP mənbəyi, içindəki başlıq marşrutlaşdırmaq istəmədiyiniz hostu adlandırsa belə qəbul edilir. Beləliklə, orijinal mənbə həmkarınızın sizin üçün yoxladığı şey deyil və o daxili ünvan cütü dekapsulyasiyadan sonra öz icrasını tələb edir.

Qablaşdırıcı marşrut strukturu verir, ikinci kriptoqrafiya qatı deyil. IPIP-i WireGuard daxilində əlavə müdafiə adlandırmaq fərqli bir dizaynı təsvir edir.

Tək pinglə deyil, nərdivanla yoxlayın

Hesabladığınız sərhədi iki tərəfdən keçən ölçüləri yoxlayın, sonra nüvənin hər iki cihaz barədə nə düşündüyünü təsdiqləyin. 1360 bayt yük üstəgəl 40 bayt başlıq 1400 edir, aşağıdakı ilk əks-səda keçir, ikincisi tavandan bir bayt o yanda oturur:

ping -M do -s 1372 10.9.0.2
ping -M do -s 1373 10.9.0.2
wg show wg0
ip -d link show ipip0

Tavandan aşağıda təmiz keçid və ondan yuxarı ilk ölçüdə uğursuzluq hesablamanın başdan-ayağa davam etdiyini bildirir. Sonra əvvəlcə dayanan ötürməni yenidən işə salın, çünki sintetik sınaq büdcəni sübut edir və göndərənin öz yazma ölçüləri barədə heç nə demir. İç-içə yol sübut etdiyiniz ölçüdə hələ də qırılırsa, MTU-dan daha on bayt qırxmazdan əvvəl uzaq son nöqtənin dekapsulyasiyasını və marşrutlarını yoxlayın.

Əlaqəli məqalələr