(Combinazione di vari commenti in una risposta)
Attualmente non è possibile modificare la metrica di un percorso. Come afferma un messaggio del 2005 su LKML:
[...] La metrica/priorità non può essere modificata perché non abbiamo campi separati per i campi da abbinare e i nuovi valori, quindi se specifichi una metrica la voce semplicemente non verrà trovata e la richiesta fallisce con ENOENT perché NLM_F_CREATE non è specificato. Questa è una limitazione del protocollo attuale e potrebbe essere una buona idea cambiarla, tuttavia non è banale [...]
Questo sembra valere sia per ip route change
e ip route replace
- il primo genera un errore per me, mentre il secondo crea un percorso aggiuntivo come pubblicizzato (la sua pagina man afferma che replace
sostituirà o creare un percorso). Ciò è coerente con il kernel che risponde con ENOENT e ip route replace
dare seguito a una richiesta di creazione di un percorso.
Quindi, la soluzione è eliminare il percorso esistente e aggiungerne uno nuovo, ad esempio
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
Come notato in un commento alla domanda, citando un messaggio sulla mailing list linux-net:"La metrica/priorità non può essere modificata [...] Questa è una limitazione del protocollo attuale [...]."
L'unico modo è eliminare il percorso e aggiungerne uno nuovo.
Questo viene fatto usando il route
comando, esempio:
sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
Manpage Debian per il comando route
ifmetric
ti consentirà di modificare al volo la metrica del tuo percorso, data l'interfaccia che stanno attraversando i percorsi che desideri modificare.
Utilizzo
ifmetric <iface> [<metric>]
Ad esempio, usa ifmetric tun0 12
per modificare la metrica in 12 per tutti i percorsi che passano attraverso tun0
.