GNU/Linux >> Tutoriales Linux >  >> Linux

En Linux, ¿qué métrica tiene una ruta sin métrica?

¿Estás seguro de tu primera observación? ¿Qué hace ip route show o route -n mostrar entonces? ¿Cambia el resultado si agregas proto static? en el primer caso?

He encontrado al menos dos recursos que dicen explícitamente que 0 es el valor predeterminado en Linux:

  • http://0pointer.de/lennart/projects/ifmetric/:La métrica predeterminada para una ruta en el kernel de Linux es 0, lo que significa la prioridad más alta.
  • http://www.man7.org/linux/man-pages/man8/route.8.html:Si no se especifica esta opción, la métrica para la familia de direcciones inet6 (IPv6) se establece de forma predeterminada en '1' , para inet (IPv4) el valor predeterminado es '0'. (luego sugiere que el valor predeterminado puede ser diferente cuando se usa iproute2 pero el análisis de estas fuentes no muestra qué es)

Seguramente se necesitaría un hacker del kernel de Linux para resolver eso.

Además, cualquier valor predeterminado que se elija es claramente específico del sistema operativo. Este artículo (https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes ), por ejemplo, muestra que Windows elige la métrica predeterminada según el ancho de banda del enlace.


Dado que estas rutas se encuentran en diferentes subredes, hay más implicados aquí que solo la métrica. Si el tráfico de origen está en la subred 192.168.1.1, por ejemplo, y hay una ruta coincidente no predeterminada en su tabla de enrutamiento, entonces esa ruta coincidirá a través de la coincidencia de prefijo más larga antes de que se considere la métrica.

Suponiendo que una ruta no predeterminada no coincida, no tener métrica debería ser interpretado por el núcleo como si tuviera 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 el antiguo route -n comando del paquete net-tools o cat /proc/net/route . Sin embargo, esta salida no coincide necesariamente con lo que el demonio de enrutamiento usará internamente cuando encuentre un valor de métrica 0.

Además, también importa cómo creas la ruta. ip route usa la API netlink, mientras que route utiliza ioctl. El código de cómo se crean las métricas predeterminadas entre los dos enfoques da como resultado diferentes valores de métrica. Por ejemplo:crear una ruta predeterminada de IPv6 a través de ip route dará como resultado un valor de métrica de 1024 en RHEL 7, al crear la misma ruta a través de route dará como resultado una métrica de 1.

De RedHat:

  • si no se pasa nada al comando de ruta como métrica de ruta, el comando mismo usa el valor 1.
  • Si no se pasa nada al comando ip como métrica de ruta, el atributo no se crea en absoluto y el núcleo lo entiende como 0, que luego se traduce como 1024 como valor predeterminado.

Linux
  1. ¿Qué hay de nuevo con rdiff-copia de seguridad?

  2. ¿Qué es un usuario de Linux?

  3. Flatpak en Linux:qué es y cómo instalar aplicaciones con él

  4. Linux:¿Suid no tiene efecto en los directorios con Linux?

  5. ¿Qué hace Linux con los archivos existentes en un punto de montaje?

Comando Agregar ruta de Linux con ejemplos

¿Qué es el Shell en Linux?

¿Qué es Crontab y cómo automatizar tareas en Linux con Crontab?

¿Qué es Login Shell en Linux?

¿Qué es el promedio de carga en Linux?

¿Qué es el archivo .bashrc en Linux?