Êtes-vous sûr de votre première observation ? Que signifie ip route show
ou route -n
montrer alors ? Le résultat change-t-il si vous ajoutez proto static
dans le premier cas ?
J'ai trouvé au moins deux ressources qui disent explicitement que 0
est la valeur par défaut sous Linux :
- http://0pointer.de/lennart/projects/ifmetric/ :La métrique par défaut pour une route dans le noyau Linux est 0, ce qui signifie la priorité la plus élevée.
- http://www.man7.org/linux/man-pages/man8/route.8.html :Si cette option n'est pas spécifiée, la métrique pour la famille d'adresses inet6 (IPv6) par défaut est '1' , pour inet (IPv4), la valeur par défaut est '0'. (il indique ensuite que la valeur par défaut peut être différente lors de l'utilisation de
iproute2
mais l'analyse de ces sources ne montre pas ce que c'est)
Un pirate du noyau Linux serait sûrement nécessaire pour résoudre ce problème.
De plus, quelle que soit la valeur par défaut choisie, elle est clairement spécifique au système d'exploitation. ) montre par exemple que Windows choisit la métrique par défaut en fonction de la bande passante du lien.
Étant donné que ces routes se trouvent sur différents sous-réseaux, il y a plus impliqué ici que la simple métrique. Si le trafic d'origine se trouve sur le sous-réseau 192.168.1.1, par exemple, et s'il existe une route non par défaut correspondante dans votre table de routage, cette route correspondra via la correspondance du préfixe le plus long avant que la métrique ne soit jamais prise en compte.
En supposant qu'une route autre que celle par défaut ne corresponde pas, l'absence de métrique devrait l'être interprété par le noyau comme ayant une métrique de 0, et donc la route la plus prioritaire. 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. Je suppose que c'est ce qui vous arrive à vous et à votre distribution sans nom.
Si ip route
n'affiche aucune métrique, vous pouvez confirmer qu'il s'agit bien de 0 en utilisant l'ancien route -n
commande du paquet net-tools ou cat /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 de 0.
De plus, la façon dont vous créez l'itinéraire est également importante. ip route
utilise l'API netlink, tandis que route
utilise ioctl. Le code de création des métriques par défaut entre les deux approches donne des valeurs de métriques différentes. Par exemple :création d'une route par défaut IPv6 via ip route
se traduira par une valeur métrique de 1024 sur RHEL 7, tout en créant la même route via route
se traduira par une métrique de 1.
De RedHat :
- si rien n'est passé à la commande route comme métrique de route, la valeur 1 est utilisée par la commande elle-même.
- Si rien n'est passé à la commande ip en tant que métrique de route, l'attribut n'est pas créé du tout et le noyau le comprend comme 0, qui est ensuite traduit par 1024 par défaut.