Responder1
linkdown
é o status que será mostrado para uma rota que está na tabela e configurada para sair por uma interface que está no DOWN
estado. Você pode ver isso executando:
ip a
e procurando os status das interfaces. No meu laptop, tenho wifi ligado e o adaptador Ethernet desconectado, então mostra:
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
Na minha tabela de roteamento, tenho várias rotas, mas posso adicionar algumas inúteis:
sudo ip route add 192.168.123.0/24 dev enp0s25
sudo ip route add 192.168.124.0/24 dev wlp3s0
Então minha tabela mostrará linkdown
a rota Ethernet:
192.168.123.0/24 dev enp0s25 scope link linkdown
192.168.124.0/24 dev wlp3s0 scope link
onlink
significa que o roteamento deve "fingir que o próximo salto está diretamente conectado a este link, mesmo que não corresponda a nenhum prefixo de interface". Então podemos fazer um falso daqueles da tabela também:
sudo ip route add 192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink
Que agora aparecerá na tabela de roteamento:
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
Você pode até ficar sofisticado e ter os dois se conectar-se à interface inferior:
192.168.126.0/24 via 192.168.123.111 dev enp0s25 onlink linkdown
Responder2
linkdown
é o status que será mostrado para uma rota que está na tabela e configurada para sair por uma interface que está no DOWN
estado.
Vou tentar dar um exemplo para ver o que a onlink
opção realmente faz:
Você configurou eth0
(em sua máquina) um endereço IP/máscara: 192.168.0.1/24
Por algum motivo, você deseja usar um gateway na LAN física que eth0
tenha uma configuração inconsistente. Suponha que ele tenha um endereço 10.0.10.1/24, que não corresponde à configuração 192.168.0.1/24 que você forneceu à sua própria máquina.
Se você diz:
ip route add default dev eth0 via 10.0.10.1
então você receberá uma resposta de erro (rede inacessível ou algo assim).
Por que? Porque (a rigor) não faz sentido ter uma máquina 10.0.10.1 na eth0
LAN, porque você disse ao seu computador que o endereço de rede desta LAN é 192.168.0.0/24.
Mas aí vem: se você adicionar onlink
ao comando, assim:
ip route add default dev eth0 via 10.0.10.1 onlink
então a rota é aceita.
Mas agora chegamos a outra questão: o que o kernel faz se um pacote tiver que ser roteado para esse onlink
gateway?
Eu verifiquei (por experiência), e este é o resultado: O kernel envia uma solicitação arp na eth0
LAN perguntando "quem tem 10.0.10.1", que é o onlink
gateway que você configurou. Quando recebe uma resposta, o kernel tem umEndereço MACpara onde ele pode enviar seus pacotes e o roteamento será executado.
Isto significa: quando o endereço do gateway não corresponde à configuração da LAN no seu computador ( eth0
), você pode forçar o kernel a usar este gateway adicionando onlink
à instrução.
Acho que há situações muito raras em que você precisa usar esse recurso. As situações em que você precisa da opção onlink serão principalmente um caso de design de rede inadequado. Também não acho que a configuração média do túnel precise onlink
.
Resposta retirada deAQUI