Linux'ta hangi metriğin metriği olmayan bir rotası vardır?


11

(Linux'ta) şu iki rotanız varsa:

default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

Birincisinin kullanılmasını beklerdim, ama durum böyle değil: ikincisi kullanılıyor.

Bunu şu şekilde değiştirirsem:

default via 192.168.1.1 dev enp58s0f1  proto static  metric 100 
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

Sonra beklendiği gibi çalışır. Görünüşe göre "metrik yok", metrik 0 yerine herhangi bir sayıdan daha kötü (daha yüksek) bir metriktir.

Bu ne oluyor? Linux'a mı yoksa bir ağ standardına mı özgü?

Şimdiden teşekkürler.

Yanıtlar:


6

İlk gözleminizden emin misiniz? O zaman ne gösterir ip route showveya route -ngösterir? proto staticİlk durumda eklerseniz sonuç değişir mi?

0Linux'ta varsayılan değer olduğunu açıkça belirten en az iki kaynak buldum :

Bunu çözmek için bir Linux çekirdek korsanına ihtiyaç duyulacaktır.

Ayrıca, varsayılan ne olursa olsun işletim sistemine özeldir. Örneğin bu makale ( https://support.microsoft.com/tr-tr/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes ) Windows'un varsayılan metriği seçtiğini gösterir bağlantının bant genişliğine göre.


Cevabınızı doğru olarak işaretliyorum çünkü bilgisayarımda bu davranışı bir daha görmedim. Ubuntu'lu masaüstü bilgisayarlarda, en azından soru sırasında sahip olduğum sürümle olan garip bir şeyle suçluyorum. Ubuntu LTS çalıştıran diğer birkaç kutuda olduğunu görmedim. Yani, bir X Dosyası (bu referans günümüzde çok eski mi?). Cevabınız için teşekkürler!
rsuarez

6

Bu rotalar farklı alt ağlarda olduğu için burada metrik olmaktan çok daha fazlası var. Örneğin, kaynak trafiği 192.168.1.1 alt ağındaysa ve yönlendirme tablonuzda eşleşen varsayılan olmayan bir rota varsa, o rota metrik dikkate alınmadan önce en uzun önek eşleşmesi ile eşleşir .

Varsayılan olmayan bir rota eşleşen değil varsayarsak, o zaman hiç metrik sahip olmalıdır en yüksek öncelikli rota nedenle 0 metrik ve sahip olarak çekirdek tarafından yorumlanır. Her ne kadar bu basit bir görüş olsa da, bazı yönlendirme cinleri daha sonra bu varsayılan metriği 1024 gibi başka bir değere çevirecektir. Sana ve adsız dağıtımınıza olan şey budur.

Eğer ip routehiç gösterileri hiçbir metrik, bunu eski kullanarak aslında 0 olduğunu teyit edebilir route -nnet-tools paketi veya gelen komutu cat /proc/net/route. Ancak, bu çıktı yönlendirme arka plan programının 0 metrik değerle karşılaştığında dahili olarak kullanacağı şeyle eşleşmez.

Ayrıca rotayı nasıl oluşturduğunuz da önemlidir. ioctl kullanırken ip routenetlink API'sini routekullanır. İki yaklaşım arasında varsayılan metriklerin nasıl oluşturulacağına ilişkin kod, farklı metrik değerleriyle sonuçlanır. Örneğin: bir IPv6 varsayılan rotası oluşturmak ip routeRHEL 7'de 1024 metrik değerine neden olurken, aynı rotayı oluşturmak route1 metriğine neden olur.

Gönderen RedHat'te :

  • route metriği olarak route komutuna hiçbir şey iletilmezse, komutun kendisi tarafından 1 değeri kullanılır.
  • İp komutuna rota metriği olarak hiçbir şey iletilmezse, öznitelik hiç oluşturulmaz ve çekirdek 0 olarak anlar;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.