¿Cuál es el significado de "linkdown" y "onlink" en la ruta Linux?

¿Cuál es el significado de "linkdown" y "onlink" en la ruta Linux?

Cuando escribí ip route show: mostrar ruta ip

¿Qué linkdownsignifica realmente? A veces todavía puedo ver onlink. También quiero saber qué onlinksignifica.

¿Afecta la prioridad de enrutamiento? Por ejemplo, el caso de dos rutas predeterminadas en la imagen.

Respuesta1

linkdownes el estado que se mostrará para una ruta que está en la tabla y configurada para salir a través de una interfaz que está en el DOWNestado. Puedes ver esto ejecutando:

ip a

y buscando los estados de las interfaces. En mi computadora portátil tengo wifi encendido y el adaptador Ethernet desconectado, por lo que muestra:

wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000

En mi tabla de enrutamiento tengo varias rutas pero puedo agregar un par de rutas basura:

sudo ip route add 192.168.123.0/24 dev enp0s25
sudo ip route add 192.168.124.0/24 dev wlp3s0

Entonces mi tabla mostrará linkdownla ruta ethernet:

 192.168.123.0/24 dev enp0s25 scope link linkdown 
 192.168.124.0/24 dev wlp3s0 scope link 

onlinksignifica que el enrutamiento debe "pretender que el nexthop está conectado directamente a este enlace, incluso si no coincide con ningún prefijo de interfaz". Entonces también podemos hacer uno falso de los que están en la tabla:

sudo ip route add 192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink

Que ahora aparecerá en la tabla de enrutamiento:

192.168.123.0/24 dev enp0s25 scope link linkdown 
192.168.124.0/24 dev wlp3s0 scope link 
192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink 

Incluso puedes ser elegante y tener ambos si te vinculas a la interfaz inferior:

192.168.126.0/24 via 192.168.123.111 dev enp0s25 onlink linkdown

Respuesta2

linkdownes el estado que se mostrará para una ruta que está en la tabla y configurada para salir a través de una interfaz que está en el DOWNestado.

Intentaré dar un ejemplo para ver qué onlinkhace realmente la opción:

Ha configurado eth0(en su máquina) con una dirección/máscara IP: 192.168.0.1/24

Por alguna razón, desea utilizar una puerta de enlace en la LAN física cuya eth0configuración es inconsistente. Supongamos que tiene una dirección 10.0.10.1/24, que no coincide con la configuración 192.168.0.1/24 que le dio a su propia máquina.

Si usted dice:

ip route add default dev eth0 via 10.0.10.1

luego recibirá una respuesta de error (red inalcanzable o algo así).

¿Por qué? Porque (estrictamente hablando) no tiene sentido tener una máquina 10.0.10.1 en la eth0LAN, porque le dijiste a tu computadora que la dirección de red de esta LAN es 192.168.0.0/24.

Pero aquí viene: si agregas onlinkal comando, así:

ip route add default dev eth0 via 10.0.10.1 onlink

entonces se acepta la ruta.

Pero ahora llegamos a otra pregunta: ¿Qué hace el núcleo si un paquete tiene que enrutarse a esta onlinkpuerta de enlace?

Lo verifiqué (por experimento) y este es el resultado: el kernel envía una solicitud arp en la eth0LAN preguntando "quién tiene 10.0.10.1", cuál es la onlinkpuerta de enlace que configuró. Cuando recibe una respuesta, el núcleo tiene unaDirección MACdónde puede enviar sus paquetes y se realizará el enrutamiento.

Esto significa: cuando la dirección de la puerta de enlace no coincide con la configuración LAN de su computadora ( eth0), puede forzar al kernel a usar esta puerta de enlace agregando onlinka la declaración.

Supongo que hay situaciones muy raras en las que es necesario utilizar esta función. Las situaciones en las que necesita la opción de enlace en línea se deben principalmente a un diseño de red deficiente. No creo que la configuración promedio de un túnel onlinktampoco lo necesite.

Respuesta tomada deAQUÍ

información relacionada