Rota ana makine bitleri yüzünden mi reddedildi? Amaçlanan öneki bulun
Reddedilen rota satırı genellikle ana makine bitlerinden kaynaklanır, yönlendirme sorunundan değil. Maskeyi kabul edilene kadar genişletmek yerine amaçladığınız öneki belirleyin.
Rota satırınız reddedilmiş olarak geri dönüyor ve bulduğunuz öneri IP yönlendirmeyi açmanızı söylüyor. Bu ikisi sorunun farklı aşamalarında. Yönlendirme, bir ana makinenin paketleri arayüzler arasında taşıyıp taşıyamayacağına karar verir; yazdığınız hedefin geçerli bir ağ olup olmadığı hakkında bir görüşü yoktur. Önce öneki düzeltin, çünkü yönlendirme birbiriyle uyuşmayan adresi ve maskeyi kurtarmaz.
Ayrıştırıcı gerçekte neyden şikayet ediyor
Adres artı maske olarak yazılan bir hedef bir ağı tanımlamalıdır ve ağ, sıfırlanmış ana makine bitleriyle başlar. Verdiğiniz adres hâlâ ana makine bölümünde bir değer taşıyorsa çift içsel olarak tutarsızdır: 172.20.130.0 sıfırla bittiği için düzenli görünür, ama dördüncü oktetdeki sıfır önemli olan tek şey değildir. Burada başıboş bitleri tutan üçüncü oktetdir.
Araçlar bu tutarsızlığı farklı ele alır. Katı ayrıştırıcılar satırı reddeder ve ana makine bitlerini adlandırır. Hoşgörülü ayrıştırıcılar adresi maskeler ve istemediğiniz bir şeyi kurar, bu daha kötüdür, çünkü yapılandırma artık hiç amaçlamadığınız bir aralığı yönlendirir. Python'un ipaddress modülü seçimi doğrudan sunar: katı ağ ayrıştırma hata verir ve strict=False ana makine bitlerini maskeler. İstemciniz sürümler arasında katı, hoşgörülü veya tutarsız olabilir, bu yüzden alışkanlığa güvenmek yerine iletiyi okuyun.
Örneği elle işleyin
172.20.130.0'a /20 maskeyle ulaşması gereken bir tünel alın. /20 üçüncü oktetden dört bit ödünç alır, bu yüzden o oktet yalnızca 16'lık adımlarla sayılır: 0, 16, 32 ve 240'a kadar. 130 değeri 128 ile 143 arasına düşer, yani onu çevreleyen ağ 172.20.128.0'da başlar, son okteti sıfırlanmış 172.20.130.0'da değil.
Yazıldığında blok 172.20.128.0'dan 172.20.143.255'e kadar uzanır ve 4,096 adres tutar. Aynı değerleri katı olmayan bir ayrıştırıcıya vermek, sizin adınıza yapacağı değişimi gösterir:
$ 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 4096Gerçekte hangi hedefi amaçladığınıza karar verin
Reddedilen satır genellikle üç niyetten birini saklar ve yalnızca siz seçebilirsiniz. Tünel tüm bloğa ihtiyaç duyuyorsa, kanonik ağ adresi olan 172.20.128.0/20 yazın. Tünel yalnızca 130 segmentine ihtiyaç duyuyorsa maske yanlıştı ve 172.20.130.0/24 dürüst biçimdir. Hedef tek bir makineyse, IPv4 ana makine rotası /32'dir ve hiçbir maske aritmetiği işin içine girmez.
Her biri farklı miktarda trafiğe izin verir ve şikayet durana kadar maskeyi genişletmemenin gerçek nedeni budur. /16 satırı neredeyse her yerde kabul eder ve trafiği tünelden yönlendirmeyi hiç amaçlamadığınız hedeflere gönderir. Niyete uyan en dar öneki yazın, sonra beklediğiniz sonraki atlama karşısında doğrulayın, ayrıştırıcının sessizliği karşısında değil.
Yönlendirme neden hiçbir zaman çözüm olmadı
Reddedilen rota yönlendirme yoluna hiçbir zaman ulaşmaz, bu yüzden net.ipv4.ip_forward ayarını değiştirmek sonucu değiştiremez. O ayar daha sonra, ana makine paketleri arayüzler arasında geçirmek zorunda kaldığında önemlidir ve tablo doğru olmadan önce açmak yalnızca sıradaki hangi aşamanın başarısız olacağını değiştirir.
Aynı noktada sık sık iki şey daha suçlanır. Rota kabul edilebilir ve yine de daha belirli bir rotaya kaybedebilir, güvenlik duvarı kuralı doğru aramadan sonra trafiği düşürebilir. Aşamaları ayrı tutun: sözdizimi, kurulum, seçim, filtreleme. Yanlış aşamada çalışmak üretken hissettirir çünkü her değişiklik bir şeyi yeniden başlatır.
Kurulan rotayı ve kazandığı yolu denetleyin
İstemci satırı kabul ettiğinde ne kurduğuna ve çekirdeğin blok içindeki temsili adres için hangi rotayı seçtiğine bakın. Kurulan önek yazdığınızdan farklıysa sizin adınıza bir normalleştirici işlem yapmıştır.
Blok içindeki bir üye adresini ve blok dışındaki bir adresi sorun, karşılaştırma tek bir rahatlatıcı satır değil anlamlı olsun diye:
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Önekiniz doğruysa üçüncü sorgu tünelin dışına düşmelidir ve düşmediğinde kurduğunuz rota sandığınızdan daha geniştir. Bir sonraki ayara dokunmadan önce önekin neyi kapsaması gerektiğini not edin, çünkü ayrıştırılan rota ile çalışan yol ayrı gözlemler olarak kalır.