Modification d'une entrée d'itinéraire existante sous Linux

11

quelle est la commande pour modifier la métrique d'une entrée de route existante dans linux? Je peux changer la passerelle d'une entrée existante en utilisant la commande "ip route change" comme ci-dessous mais je ne peux pas changer les métriques. Y a-t-il une autre commande pour cela?

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
user1762571
la source
Voici une page de site Web qui contient les commandes pour modifier les adresses IP à l'aide de la commande ifconfig. Je ne connais pas toutes les commandes du haut de ma tête, mais j'espère que cette page vous aidera. tecmint.com/ifconfig-command-examples
Nicholas Awesomepants
1
Supprimez l'itinéraire, puis ajoutez-le à nouveau, sauf s'ils ont depuis corrigé lkml.iu.edu/hypermail/linux/net/0504.3/0017.html
jusqu'au

Réponses:

7

Comme indiqué dans un commentaire à la question, citant un message sur la liste de diffusion linux-net: "La métrique / priorité ne peut pas être modifiée [...] Il s'agit d'une limitation du protocole actuel [...]."
La seule façon est de supprimer l'itinéraire et d'en ajouter un nouveau.

Cela se fait en utilisant la routecommande, exemple:

sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1

Page de manuel Debian pour la commande route

Jan
la source
4
La question n'était pas de savoir comment ajouter un itinéraire avec une métrique donnée; OP voulait changer la métrique sur une route existante (sans supprimer et rajouter la route).
András Korn
4
Il est évident que vous avez pas lu le commentaire dans la question des liens vers la projection e - mail que la boîte métrique pas changé: The metric/priority cannot be changed [...] This is a limitation of the current protocol[...]. La seule façon est de supprimer l'itinéraire et d'en ajouter un nouveau.
Jan
7
Je sais que la métrique ne peut pas être modifiée. Votre réponse ne répond toujours pas à la question - peut-être indiquer, dans la réponse, que la métrique ne peut être modifiée qu'en supprimant et en rajoutant l'itinéraire?
András Korn
16

(Combinaison de divers commentaires en une réponse)

Actuellement, il n'est pas possible de modifier la métrique d'un itinéraire. Comme un message de 2005 sur LKML déclare :

[...] La métrique / priorité ne peut pas être modifiée car nous n'avons pas de champs séparés pour les champs à faire correspondre et les nouvelles valeurs donc si vous spécifiez une métrique l'entrée ne sera simplement pas trouvée et la requête échouera avec ENOENT car NLM_F_CREATE n'est pas spécifié. Il s'agit d'une limitation du protocole actuel et ce pourrait être une bonne idée de changer cela, mais ce n'est pas trivial [...]

Cela semble s'appliquer à la fois à ip route changeet ip route replace- la première entraîne une erreur pour moi, tandis que la seconde crée un itinéraire supplémentaire comme annoncé (sa page de manuel indique qui replaceremplacera ou créera un itinéraire). Ceci est cohérent avec la réponse du noyau avec ENOENT et le ip route replacesuivi d'une demande de création de route.


La solution consiste donc à supprimer l'itinéraire existant et à en ajouter un nouveau. par exemple

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
marque
la source
oui, j'ai été mordu par ce problème ces derniers mois ... comme Brian Cantrill ne cesse de le dire à propos de Linux: c'est une chose évolutive avec le syndrome NIH (non inventé ici) ...
Hvisage
@Hvisage pouvez-vous élaborer? Existe-t-il un outil permettant de modifier la métrique sans avoir à la supprimer?
Braiam
@Braiam C'est un point négatif, comme dans: AUCUN tel outil n'existe. selon la réponse. Si vous vous référez à mes citations de Bryan Cantrill, c'était quelque part je crois en youtube.com/watch?v=wTVfAMRj-7E
Hvisage
2

ifmetric vous permettra de modifier votre métrique d'itinéraire à la volée, compte tenu de l'interface que les itinéraires que vous souhaitez modifier traversent.

Usage

ifmetric <iface> [<metric>]

Par exemple, utilisez ifmetric tun0 12pour changer la métrique à 12 pour tous les itinéraires passant tun0.

AeroClassics
la source
4
Salut! Il serait préférable de donner un exemple pratique de la façon d'utiliser la commande pour obtenir les résultats demandés par la question.
dhag
Oui, vraiment. Merci.
AeroClassics