Si vous avez (sous Linux) ces deux routes:
default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Je m'attendrais à ce que le premier soit utilisé, mais ce n'est pas le cas: le second est utilisé à la place.
Si je change cela en ceci:
default via 192.168.1.1 dev enp58s0f1 proto static metric 100
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Ensuite, cela fonctionne comme prévu. Il semble que "aucune métrique" soit une métrique pire (plus élevée) que n'importe quel nombre, au lieu de la métrique 0.
Qu'est-ce qui se passe? Est-ce spécifique à Linux ou à une norme de mise en réseau?
Merci d'avance.
la source
Étant donné que ces itinéraires se trouvent sur différents sous-réseaux, il y a plus à faire ici que la seule mesure. Si le trafic d'origine se trouve sur le sous-réseau 192.168.1.1, par exemple, et qu'il existe une route non par défaut correspondante dans votre table de routage, cette route correspondra via la correspondance de préfixe la plus longue avant que la métrique ne soit considérée.
En supposant qu'une route non par défaut ne correspond pas, alors l'absence de métrique doit être interprétée par le noyau comme ayant une métrique de 0, et donc la route de priorité la plus élevée. Bien que ce soit une vue simpliste, car certains démons de routage traduiront plus tard cette métrique par défaut en une autre valeur comme 1024. J'espère que c'est ce qui vous arrive, ainsi qu'à votre distribution sans nom.
Si
ip route
aucune métrique n'est affichée, vous pouvez confirmer qu'il s'agit bien de 0 en utilisant l'ancienneroute -n
commande du package net-tools oucat /proc/net/route
. Cependant, cette sortie ne correspond pas nécessairement à ce que le démon de routage utilisera en interne lorsqu'il rencontrera une valeur de métrique 0.De plus, la façon dont vous créez l'itinéraire est également importante.
ip route
utilise l'API netlink, tandis queroute
utilise ioctl. Le code de création des métriques par défaut entre les deux approches entraîne des valeurs de métrique différentes. Par exemple: la création d'une route par défaut IPv6ip route
entraînera une valeur de métrique de 1024 sur RHEL 7, tandis que la création de la même route viaroute
entraînera une métrique de 1.De RedHat :
la source