(Kombinace různých komentářů do odpovědi)
V současné době není možné upravit metriku trasy. Jak zpráva z roku 2005 na LKML uvádí:
[...] Metriku/prioritu nelze změnit, protože nemáme samostatná pole pro shodu polí a nové hodnoty, takže pokud zadáte metriku, záznam jednoduše nebude nalezen a požadavek selže s ENOENT, protože NLM_F_CREATE není specifikováno. Toto je omezení současného protokolu a může být dobrý nápad to změnit, nicméně to není triviální [...]
Zdá se, že to platí pro oba ip route change
a ip route replace
- první způsobí chybu, zatímco druhý vytvoří další trasu, jak je inzerováno (její manuálová stránka uvádí, že replace
nahradí nebo vytvořit trasu). To odpovídá tomu, že jádro odpovídá ENOENT a ip route replace
následuje požadavek na vytvoření trasy.
Řešením je tedy odstranit stávající trasu a přidat novou, např.
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
Jak je uvedeno v komentáři k otázce, cituji zprávu na mailing listu linux-net:"Metriku/prioritu nelze změnit [...] Toto je omezení současného protokolu [...]."
Jediný způsob je smazat trasu a přidat novou.
To se provádí pomocí route
příkaz, příklad:
sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
Manuálová stránka Debianu pro příkaz route
ifmetric
vám umožní měnit metriku trasy za běhu, vzhledem k rozhraní, kterým trasy, které chcete změnit, procházejí.
Použití
ifmetric <iface> [<metric>]
Použijte například ifmetric tun0 12
změnit metriku na 12 pro všechny trasy procházející přes tun0
.