Respuesta1
linkdown
es 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 DOWN
estado. 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á linkdown
la ruta ethernet:
192.168.123.0/24 dev enp0s25 scope link linkdown
192.168.124.0/24 dev wlp3s0 scope link
onlink
significa 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
linkdown
es 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 DOWN
estado.
Intentaré dar un ejemplo para ver qué onlink
hace 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 eth0
configuració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 eth0
LAN, 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 onlink
al 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 onlink
puerta de enlace?
Lo verifiqué (por experimento) y este es el resultado: el kernel envía una solicitud arp en la eth0
LAN preguntando "quién tiene 10.0.10.1", cuál es la onlink
puerta 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 onlink
a 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 onlink
tampoco lo necesite.
Respuesta tomada deAQUÍ