Modifica della voce di percorso esistente in Linux


11

qual è il comando per modificare la metrica di una voce di route esistente in linux? Sono in grado di modificare il gateway di una voce esistente utilizzando il comando "modifica percorso ip" come di seguito ma non sono in grado di modificare le metriche. C'è qualche altro comando per quello?

route –n
40.2.2.0        30.1.3.2        255.255.255.0   eth2

ip route change 40.2.2.0/24 via 30.1.2.2

route -n
40.2.2.0        30.1.2.2        255.255.255.0   eth1

Ecco una pagina web che ha i comandi per modificare gli indirizzi IP usando il comando ifconfig. Non conosco tutti i comandi dalla parte superiore della mia testa, ma spero che questa pagina ti possa aiutare. tecmint.com/ifconfig-command-examples
Nicholas Awesomepants

1
Elimina il percorso e poi aggiungilo di nuovo, a meno che non abbiano riparato lkml.iu.edu/hypermail/linux/net/0504.3/0017.html
thrig

Risposte:


7

Come notato in un commento alla domanda, citando un messaggio nella mailing list di linux-net: "La metrica / priorità non può essere cambiata [...] Questa è una limitazione dell'attuale protocollo [...]."
L'unico modo è eliminare il percorso e aggiungerne uno nuovo.

Questo viene fatto usando il routecomando, 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


4
La domanda non era come aggiungere un percorso con una determinata metrica; OP voleva cambiare la metrica su un percorso esistente (senza eliminare e aggiungere nuovamente il percorso).
András Korn,

4
Ovviamente non avete letto il commento in questione che collegamenti con la proiezione di posta elettronica che non la lattina metrica essere modificati: The metric/priority cannot be changed [...] This is a limitation of the current protocol[...]. L'unico modo è eliminare il percorso e aggiungerne uno nuovo.
Jan

7
So che la metrica non può essere modificata. La tua risposta non risponde ancora alla domanda: forse fai notare, nella risposta, che la metrica può essere modificata solo eliminando e aggiungendo nuovamente il percorso?
András Korn,

16

(Combinazione di vari commenti in una risposta)

Attualmente, non è possibile modificare la metrica di un percorso. Come un messaggio del 2005 su LKML afferma :

[...] La metrica / priorità non può essere modificata perché non abbiamo campi separati per la corrispondenza dei campi e i nuovi valori, quindi se specifichi una metrica la voce semplicemente non verrà trovata e la richiesta fallirà con ENOENT perché NLM_F_CREATE non è specificato. Questa è una limitazione dell'attuale protocollo e potrebbe essere una buona idea cambiarla, tuttavia non è banale [...]

Questo sembra applicarsi sia a ip route changeche ip route replace- il primo si traduce in un errore per me, mentre il secondo crea un percorso aggiuntivo come pubblicizzato (la sua pagina man indica che replacesostituirà o creerà un percorso). Ciò è coerente con il kernel che risponde con ENOENT e fa ip route replaceseguito a una richiesta di creazione di route.


Quindi, la soluzione è eliminare il percorso esistente e aggiungerne uno nuovo. per 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

sì, sono stato morso da questo problema negli ultimi mesi ... come Brian Cantrill continua a dire di Linux: è una cosa in evoluzione con la sindrome NIH (non inventata qui) ...
Hvisage

@Hvisage puoi elaborare? Esiste uno strumento che consente di modificare la metrica senza doverla rimuovere?
Braiam,

@Braiam Questo è un aspetto negativo, come in: NON esiste uno strumento del genere. secondo la risposta. Se ti riferisci alle mie citazioni di Bryan Cantrill, era un posto in cui credo in youtube.com/watch?v=wTVfAMRj-7E
Hvisage

2

ifmetric ti consentirà di modificare al volo la metrica del percorso, data l'interfaccia che stanno attraversando i percorsi che desideri modificare.

uso

ifmetric <iface> [<metric>]

Ad esempio, utilizzare ifmetric tun0 12per modificare la metrica in 12 per tutte le rotte che attraversano tun0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.