Qual é o significado de `linkdown` e `onlink' no Linux Route?

Qual é o significado de `linkdown` e `onlink' no Linux Route?

Quando digitei ip route show: exibição de rota ip

O que linkdownrealmente significa? Às vezes ainda consigo ver onlink. Também quero saber o que onlinksignifica.

Isso afeta a prioridade de roteamento? Por exemplo, o caso de duas rotas padrão na imagem

Responder1

linkdowné o status que será mostrado para uma rota que está na tabela e configurada para sair por uma interface que está no DOWNestado. 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á linkdowna rota Ethernet:

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

onlinksignifica 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 DOWNestado.

Vou tentar dar um exemplo para ver o que a onlinkopçã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 eth0tenha 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 eth0LAN, 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 onlinkao 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 onlinkgateway?

Eu verifiquei (por experiência), e este é o resultado: O kernel envia uma solicitação arp na eth0LAN perguntando "quem tem 10.0.10.1", que é o onlinkgateway 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

informação relacionada