WireGuard dayanır: MTU həddi, yoxsa çatışmayan yönləndirmə qaydası?
Serverdən kənarda heç nə işləmirsə, bu yönləndirmə və ya qayıdış marşrutu problemidir. Kiçik sorğuların keçib böyüklərin dayanması paket ölçüsünün əlamətidir.
Vərdiş WireGuard səhv davranan kimi MTU-nu aşağı salmaqdır və bu vərdiş başqa bir nasazlığı gizlədir. Yönləndirməyən şlüz və böyük paketləri daşımayan yol bir-birindən seçilən nümunələr yaradır: biri hər iki istiqamətdə və hər ölçüdə uğursuz olur, digəri kiçik sorğularda sağ qalır və böyüklərdə ölür. Hər hansı rəqəmi dəyişməzdən əvvəl hansı formanın sizdə olduğunu müəyyən edin. Sınaq ucuzdur və mümkün səbəblərin yarısını aradan qaldırır.
İki nasazlıq, iki fərqli forma
Yönləndirmə problemi serverdən dərhal sonra görünür. Əl sıxışması uğurlu olur, tunel ünvanı cavab verir, və şlüzün arxasında heç nəyə, hətta kiçik sorğu ilə belə, çatmaq mümkün deyil. Paket serverə çatdı və ötürülmədi, ya da cavabın geri qayıtma marşrutu yox idi.
Ölçü problemi yalnız müəyyən həddən yuxarı görünür. DNS, TCP əl sıxışması və kiçik API çağırışı işləyir, fayl endirməsi və ya böyük cavab isə donur. Sığan paketlər başdan-başa getdi, sığmayanlar isə haradasa faydalı hesabat olmadan atıldı.
Bu təsvirlər fərqli insanlara və fərqli konfiqurasiya fayllarına işarə edir, buna görə formanı ölçmək təxmin etməkdən daha dəyərlidir. Şlüzə bir tək ping onları ayıra bilməz.
Nəyisə kiçiltməzdən əvvəl yönləndirməni istisna edin
Şlüzün özünü deyil, şlüzdən o tərəfdə bir təyinatı sınayın. Serverin tunel ünvanına ping yalnız interfeysin işlədiyini və tuneli sonlandıran maşına çatdığınızı sübut edir. Daha geniş şəbəkə üçün trafik həmin maşında IP yönləndirməsinin aktiv olmasından və ötürülən axına icazə verən firewall-dan asılıdır. Hər ikisi doğru olmalıdır və onlardan biri yalan olduqda eyni sükut yaranır.
Qayıdış marşrutu da eyni dərəcədə vacibdir. Əgər təyinat şəbəkəsi müştərinin tunel ünvanına necə çatacağını bilmirsə, sorğu gəlir və cavab yox olur, müştəri isə atılmış yönləndirməyə bənzər bir timeout bildirir.
Dizayn ünvan çevrilməsindən istifadə etdikdə, çevrilmə qaydası həmin qayıdış yolunun bir hissəsidir. MTU problemi axtararkən onu silmək işləyən bir dizaynı pozulmuş birinə çevirir, ona görə mövcud qaydaları redaktə etməzdən əvvəl oxuyun.
Qırılmanın harada başladığını ölçün
Əvvəlcə yönləndirmə vəziyyətini və filtr qaydalarını oxuyun. Bunlar yalnız oxumaq üçün yoxlamalardır və ucuz suala cavab verirlər:
sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9
Sonra müştəridən, şlüzdən o tərəfdə bir hosta doğru, don’t-fragment biti ilə ölçüləri yoxlayın:
ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9
Birinci yoxlama işləyirsə və ikincisi fraqmentasiya xətası ilə uğursuz olursa, yol sizə istifadə edilə bilən ölçüsünü deyir. Heç biri işləmirsə, siz yönləndirmə və ya marşrutlaşdırmaya baxırsınız və MTU dəyişdiriləcək dəyişən deyil.
| 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 |
Sübut etdiyiniz qatı düzəldin
Yönləndirmə nasazlıqdırsa, düzəliş dizaynın icazə verdiyi qədər dar ifadə olunmuş yönləndirmə qaydası və ya marşrutdur. Ölçü nasazlıqdırsa, düzəliş bu konkret yoldakı inkapsulyasiyanı nəzərə alan MTU-dur və o, donanmadakı hər adapterə deyil, ehtiyacı olan interfeysə tətbiq edilir.
Hər halda, sonra eyni tapşırığı eyni təyinata qarşı təkrarlayın. Əvvəlki böyük ötürmə indi tamamlanırsa, dəyişiklik uğursuz olan qatı həll etdi. Yalnız kiçik yoxlama yaxşılaşdısa, siz simptomu müalicə etdiniz və əsl hədd hələ də yerindədir.
Dəyişiklikdən əvvəl hansı formanı gördüyünüzü yazın. Düzəlişin yanında qeyd olunan o bir sətir, növbəti insanı heç vaxt problem olmayan MTU-nu aşağı salmaqdan saxlayan şeydir.