Si tiene (en Linux) estas dos rutas:
default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Esperaría que se use el primero, pero ese no es el caso: el segundo se usa en su lugar.
Si cambio eso a esto:
default via 192.168.1.1 dev enp58s0f1 proto static metric 100
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Entonces funciona como se esperaba. Parece que "sin métrica" es una métrica peor (más alta) que cualquier número, en lugar de la métrica 0.
¿Qué está pasando esto? ¿Es específico de Linux o un estándar de red?
Gracias por adelantado.
fuente
Dado que estas rutas se encuentran en subredes diferentes, aquí interviene más que solo la métrica. Si el tráfico de origen se encuentra en la subred 192.168.1.1, por ejemplo, y hay una ruta coincidente no predeterminada en su tabla de enrutamiento, esa ruta coincidirá con la coincidencia de prefijo más larga antes de que se considere la métrica.
Suponiendo que una ruta no predeterminada no coincide, el núcleo debe interpretar que no tener métrica tiene una métrica de 0 y, por lo tanto, la ruta de mayor prioridad. Aunque esa es una vista simplista porque algunos demonios de enrutamiento luego traducirán esa métrica predeterminada a otro valor como 1024. Espero que esto sea lo que te está sucediendo a ti y a tu distribución sin nombre.
Si
ip route
no muestra ninguna métrica, puede confirmar que efectivamente es 0 utilizando elroute -n
comando anterior del paquete net-tools ocat /proc/net/route
. Sin embargo, esta salida no necesariamente coincide con lo que el demonio de enrutamiento usará internamente cuando encuentra un valor métrico 0.Además, la forma de crear la ruta también es importante.
ip route
usa la API de netlink, mientras queroute
usa ioctl. El código de cómo se crean las métricas predeterminadas entre los dos enfoques da como resultado valores de métricas diferentes. Por ejemplo: la creación de una ruta predeterminada de IPv6ip route
generará un valor métrico de 1024 en RHEL 7, mientras que la creación de la misma rutaroute
generará una métrica de 1.De RedHat :
fuente