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
Comme indiqué dans un commentaire à la question, en citant un message sur la liste de diffusion linux-net: "La métrique/priorité ne peut pas être modifiée [...] limitation du protocole actuel [...]. "
La seule façon est de supprimer l'itinéraire et d'en ajouter un nouveau.
Cela se fait à l'aide de la commande route
, exemple:
Sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
(Combinaison de divers commentaires en une réponse)
Actuellement, il n'est pas possible de modifier la métrique d'un itinéraire. En tant que message 2005 sur les états LKML :
[...] 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 tout 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 change
et ip route replace
- le premier entraîne une erreur pour moi, tandis que le second crée un itinéraire supplémentaire comme annoncé (sa page de manuel indique que replace
remplacera ou créer un itinéraire). Ceci est cohérent avec la réponse du noyau avec ENOENT et ip route replace
suivi d'une demande de création d'itinéraire.
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
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.
ifmetric <iface> [<metric>]
Par exemple, utilisez ifmetric tun0 12
pour remplacer la mesure par 12 pour tous les itinéraires passant par tun0
.