GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welche Metrik hat unter Linux eine Route ohne Metrik?

Sind Sie sich bei Ihrer ersten Beobachtung sicher? Was bedeutet ip route show oder route -n dann zeigen? Ändert sich das Ergebnis, wenn Sie proto static hinzufügen im ersten Fall?

Ich habe mindestens zwei Ressourcen gefunden, die ausdrücklich sagen, dass 0 ist der Standardwert unter Linux:

  • http://0pointer.de/lennart/projects/ifmetric/ :Die Standardmetrik für eine Route im Linux-Kernel ist 0, was die höchste Priorität bedeutet.
  • http://www.man7.org/linux/man-pages/man8/route.8.html :Wenn diese Option nicht angegeben ist, ist die Metrik für die inet6 (IPv6)-Adressfamilie standardmäßig '1' , für inet (IPv4) ist es standardmäßig '0'. (es weist dann darauf hin, dass die Standardeinstellung bei Verwendung von iproute2 anders sein kann aber die Analyse dieser Quellen zeigt nicht, was es ist)

Ein Linux-Kernel-Hacker wäre sicherlich nötig, um das zu klären.

Welche Standardeinstellung auch immer gewählt wird, ist eindeutig betriebssystemspezifisch. Dieser Artikel (https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes ) zeigt beispielsweise, dass Windows die Standardmetrik basierend auf der Bandbreite der Verbindung auswählt.


Da sich diese Routen in unterschiedlichen Subnetzen befinden, geht es hier um mehr als nur die Metrik. Wenn der Ursprungsdatenverkehr beispielsweise im Subnetz 192.168.1.1 liegt, und Es gibt eine übereinstimmende nicht standardmäßige Route in Ihrer Routing-Tabelle, dann wird diese Route über die Übereinstimmung mit dem längsten Präfix übereinstimmen, bevor die Metrik jemals berücksichtigt wird.

Angenommen, eine nicht standardmäßige Route stimmt nicht überein, dann sollte keine Metrik vorhanden sein vom Kernel so interpretiert, dass sie eine Metrik von 0 hat und daher die Route mit der höchsten Priorität hat. Obwohl dies eine vereinfachte Ansicht ist, da einige Routing-Daemons diese Standardmetrik später in einen anderen Wert wie 1024 übersetzen. Ich gehe davon aus, dass dies mit Ihnen und Ihrer unbenannten Distribution passiert.

Wenn ip route überhaupt keine Metrik anzeigt, können Sie bestätigen, dass es tatsächlich 0 ist, indem Sie den älteren route -n verwenden Befehl aus dem net-tools Paket oder cat /proc/net/route . Diese Ausgabe stimmt jedoch nicht unbedingt mit dem überein, was der Routing-Daemon intern verwendet, wenn er auf einen metrischen Wert von 0 stößt.

Außerdem ist es wichtig, wie Sie die Route erstellen. ip route verwendet die Netlink-API, während route verwendet ioctl. Der Code für die Erstellung von Standardmetriken zwischen den beiden Ansätzen führt zu unterschiedlichen Metrikwerten. Beispiel:Erstellen einer IPv6-Standardroute über ip route führt zu einem Metrikwert von 1024 auf RHEL 7, während dieselbe Route über route erstellt wird ergibt eine Metrik von 1.

Von RedHat:

  • wenn dem route-Befehl nichts als Routenmetrik übergeben wird, wird der Wert 1 vom Befehl selbst verwendet.
  • Wenn dem ip-Befehl nichts als Routenmetrik übergeben wird, wird das Attribut überhaupt nicht erstellt und der Kernel versteht es als 0, was später als Standard mit 1024 übersetzt wird.

Linux
  1. Was ist neu bei rdiff-backup?

  2. Was ist ein Linux-Benutzer?

  3. Was ist Umask unter Linux

  4. Flatpak unter Linux:Was es ist und wie man Apps damit installiert

  5. Linux – Suid hat keinen Einfluss auf Verzeichnisse mit Linux?

Linux Route Add-Befehl mit Beispielen

Was ist die Shell unter Linux?

Was ist Crontab und wie werden Aufgaben in Linux mit Crontab automatisiert?

Was ist die Login-Shell in Linux?

Was ist Load Average in Linux?

Was ist eine .bashrc-Datei unter Linux?