Marşrut host bitləri ilə rədd edildi? Nəzərdə tutulan prefiksi tapın
Rədd edilən marşrut sətri adətən host bitləridir, yönləndirmə problemi deyil. Maskanı genişləndirmək əvəzinə nəzərdə tutduğunuz prefiksi müəyyən edin.
Marşrut sətriniz rədd olunur və tapdığınız məsləhət IP yönləndirmənin aktivləşdirilməsini deyir. Bu iki şey problemin fərqli mərhələlərində dayanır. Yönləndirmə hostun interfeyslər arasında paket ötürə biləcəyini müəyyən edir; yazdığınız təyinatın etibarlı şəbəkə olub-olmadığı barədə fikri yoxdur. Əvvəlcə prefiksi düzəldin, çünki yönləndirmə bir-biri ilə uyğunsuz ünvanı və maskanı xilas etməyəcək.
Parser əslində nədən şikayət edir
Ünvan üstəgəl maska kimi yazılan təyinat şəbəkəni təsvir etməlidir və şəbəkə sıfırlanmış host bitləri ilə başlayır. Verdiyiniz ünvan hələ də host hissəsində dəyər daşıyırsa, cüt daxilən ziddiyyətlidir: 172.20.130.0 səliqəli görünür, çünki sıfırla bitir, amma dördüncü oktetdəki sıfır vacib olan yeganə şey deyil. Burada kənar bitləri üçüncü oktet saxlayır.
Alətlər bu ziddiyyəti fərqli cür idarə edir. Sərt parserlər sətri rədd edir və host bitlərini adlandırır. Yumşaq parserlər ünvanı maskalayır və istəmədiyiniz bir şeyi quraşdırır, bu daha pisdir, çünki konfiqurasiya indi heç vaxt nəzərdə tutmadığınız diapazonu marşrutlaşdırır. Python-un ipaddress modulu seçimi birbaşa göstərir: sərt şəbəkə parse xəta verir, strict=False isə host bitlərini maskalayır. Müştəriniz versiyalar arasında sərt, yumşaq və ya uyğunsuz ola bilər, ona görə vərdişə güvənmək əvəzinə mesajı oxuyun.
Nümunəni əl ilə işləyin
172.20.130.0 ünvanına /20 maskası ilə çatmalı tunel götürün. /20 üçüncü okteddən dörd bit götürür, ona görə həmin oktet yalnız 16 addımla sayılır: 0, 16, 32 və 240-a qədər. 130 dəyəri 128 ilə 143 arasına düşür, bu da əhatə edən şəbəkənin son oktedin sıfırlandığı 172.20.130.0-dan deyil, 172.20.128.0-dan başladığını bildirir.
Yazılı şəkildə blok 172.20.128.0-dan 172.20.143.255-ə qədər uzanır və 4,096 ünvan saxlayır. Eyni dəyərləri sərt olmayan parserə vermək onun sizin adınıza edəcəyi əvəzləməni göstərir:
$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096Hansı təyinatı əslində nəzərdə tutduğunuzu qərar verin
Rədd edilən sətir adətən üç niyyətdən birini gizlədir və yalnız siz seçə bilərsiniz. Tunel bütün bloka ehtiyac duyursa, kanonik şəbəkə ünvanı olan 172.20.128.0/20 yazın. Tunel yalnız 130 seqmentinə ehtiyac duyursa, maska səhv idi və 172.20.130.0/24 dürüst formadır. Yalnız bir maşın hədəfdirsə, IPv4 host marşrutu /32-dir və heç bir maska hesabı iştirak etmir.
Bunların hər biri fərqli həcmdə trafikə icazə verir və maskanı şikayət dayanana qədər genişləndirməməyin əsl səbəbi budur. /16 sətri demək olar ki, hər yerdə qəbul edir və trafiki heç vaxt tuneldən keçirmək istəmədiyiniz təyinatlara göndərir. Niyyətə uyğun ən dar prefiksi yazın, sonra onu gözlədiyiniz növbəti hopa qarşı təsdiqləyin, parserin sükutuna qarşı deyil.
Niyə yönləndirmə heç vaxt düzəliş deyildi
Rədd edilən marşrut heç vaxt yönləndirmə yoluna çatmır, ona görə net.ipv4.ip_forward-u dəyişmək nəticəni dəyişə bilməz. Bu parametr sonra, host paketləri interfeyslər arasında ötürməli olanda vacibdir və cədvəl düzgün olmadan onu yandırmaq yalnız növbəti mərhələnin uğursuz olacağını dəyişir.
Eyni nöqtədə tez-tez iki başqa şey günahlandırılır. Marşrut qəbul edilə və yenə də daha konkret marşruta məğlub ola bilər, və firewall qaydası düzgün axtarışdan sonra trafiki ata bilər. Mərhələləri ayrı saxlayın: sintaksis, quraşdırma, seçim, filtrləmə. Səhv mərhələdə işləmək məhsuldar görünür, çünki hər dəyişiklik nəyisə yenidən başladır.
Quraşdırılmış marşrutu və onun qazandığı yolu yoxlayın
Müştəri sətri qəbul etdikdən sonra onun nə quraşdırdığına və nüvənin blokun içindəki təmsilçi ünvan üçün hansı marşrutu seçdiyinə baxın. Quraşdırılmış prefiks yazdığınızdan fərqlənirsə, normalizator sizin adınıza hərəkət edib.
Blokun içindən bir üzv ünvanı, həm də xaricdən bir ünvanı sorğulayın ki, müqayisə tək bir arxayınlaşdırıcı sətirdən deyil, mənalı olsun:
ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10Üçüncü sorğu prefiksiniz düzdürsə tuneldən kənara düşməlidir və düşmürsə, qurduğunuz marşrut düşündüyünüzdən genişdir. Növbəti parametrə toxunmazdan əvvəl prefiksin nəyi əhatə etməli olduğunu qeyd edin, çünki parse olunan marşrut və işləyən yol ayrı müşahidələr olaraq qalır.