(Zusammenfassen verschiedener Kommentare zu einer Antwort)
Derzeit ist es nicht möglich, die Metrik einer Route zu ändern. Wie eine Nachricht von 2005 auf LKML besagt:
[...] Die Metrik/Priorität kann nicht geändert werden, da wir keine separaten Felder für die abzugleichenden Felder und die neuen Werte haben. Wenn Sie also eine Metrik angeben, wird der Eintrag einfach nicht gefunden und die Anforderung schlägt mit ENOENT fehl, weil NLM_F_CREATE ist nicht angegeben. Dies ist eine Einschränkung des aktuellen Protokolls und es könnte eine gute Idee sein, dies zu ändern, aber es ist nicht trivial [...]
Dies scheint sowohl für ip route change
zu gelten und ip route replace
- Ersteres führt bei mir zu einem Fehler, während Letzteres wie angekündigt eine zusätzliche Route erstellt (auf seiner Manpage steht, dass replace
ersetzt oder Route erstellen). Dies stimmt damit überein, dass der Kernel mit ENOENT und ip route replace
antwortet anschließend mit einer Routenerstellungsanfrage.
Die Lösung besteht also darin, die vorhandene Route zu löschen und eine neue hinzuzufügen, z. B.
ip route del 40.2.2.0/24 via 30.1.2.2
ip route add 40.2.2.0/24 via 30.1.2.2 metric 1234
Wie in einem Kommentar zu der Frage vermerkt und eine Nachricht auf der Linux-Net-Mailingliste zitiert:"Die Metrik/Priorität kann nicht geändert werden [...] Dies ist eine Einschränkung des aktuellen Protokolls [...]."
Die einzige Möglichkeit besteht darin, die Route zu löschen und eine neue hinzuzufügen.
Dies geschieht mit dem route
Befehl, Beispiel:
sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
Debian-Manpage für den Route-Befehl
ifmetric
ermöglicht es Ihnen, Ihre Routenmetrik im Handumdrehen zu ändern, vorausgesetzt, die Schnittstelle, die die Routen durchlaufen, die Sie ändern möchten.
Nutzung
ifmetric <iface> [<metric>]
Verwenden Sie beispielsweise ifmetric tun0 12
um die Metrik für alle Routen, die durch tun0
gehen, auf 12 zu ändern .