Para que serve a tabela de roteamento local?

1

Estou tentando entender o que é a tabela de roteamento local.

Se eu adicionar um endereço aleatório a ele com o seguinte comando:

sudo ip route add to local <any-ip-address> dev <network interface>

Agora posso pingar esse endereço, mas nenhuma interface listada pelo ifconfig usa esse endereço.

Exemplo:

$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.

--- 192.168.22.22 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

$ sudo ip route add to local 192.168.22.22 dev wlp2s0
$ ping 192.168.22.22 -w 1
PING 192.168.22.22 (192.168.22.22) 56(84) bytes of data.
64 bytes from 192.168.22.22: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 192.168.22.22: icmp_seq=2 ttl=64 time=0.015 ms

--- 192.168.22.22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.015/0.016/0.018/0.004 ms

Parece que funciona como um loopback, mas a partir do ifconfig, a interface lo ainda tem apenas o endereço 127.0.0.1. Se eu verificar esta tabela ip route ls table local , vejo o seguinte:

$ ip route ls table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.0.0 dev wlp2s0  proto kernel  scope link  src 192.168.0.13
local 192.168.0.13 dev wlp2s0  proto kernel  scope host  src 192.168.0.13
broadcast 192.168.0.255 dev wlp2s0  proto kernel  scope link  src 192.168.0.13
local 192.168.22.22 dev wlp2s0  scope host
broadcast 192.168.122.0 dev virbr0  proto kernel  scope link  src 192.168.122.1
local 192.168.122.1 dev virbr0  proto kernel  scope host  src 192.168.122.1
broadcast 192.168.122.255 dev virbr0  proto kernel  scope link  src 192.168.122.1

Então, qual é a tabela local e, no cenário da bruxa, devo usá-la?

Eu li em algum lugar que é para transmissão e endereços hospedados pela máquina local, mas não entendo por que precisamos de uma tabela especial para isso e quando devo adicionar qualquer entrada a esta tabela.

Obrigado

    
por Lilás 20.05.2017 / 01:12

2 respostas

4

Antes de tudo, algumas informações disponíveis na internet explicam " A tabela local é uma tabela de roteamento especial mantida pelo kernel ".

Se você se sentir realmente corajoso hoje, pode até conseguir algumas informações locais ly, aqui está como:

man ip - como esse foi o comando com o qual você está mexendo, faz sentido esperar que o manual tenha algumas dicas sobre o assunto. Você deve claramente observar agora que há a chamada seção VEJA TAMBÉM . Vamos examiná-lo com atenção - entre outras coisas, ele menciona descaradamente dois possíveis candidatos para mais investigações:

  1. ip-route(8)
  2. ip-rule(8)

Em suma, temos um pouco agora:

man 8 ip-route :

local - the destinations are assigned to this host. The packets are looped back and delivered locally.

Actually, one other table always exists, which is invisible but even more important. It is the local table (ID 255). This table consists of routes for local and broadcast addresses. The kernel maintains this table automatically and the administrator usually need not modify it or even look at it.

man 8 ip-rule :

At startup time the kernel configures the default RPDB consisting of three rules:

  1. Priority: 0, Selector: match anything, Action: lookup routing table local (ID 255). The local table is a special routing table containing high priority control routes for local and broadcast addresses.

Pessoalmente, sinto-me satisfeito com a informação que alguns autores colocam em manuais citados, mas se ainda estiver com fome, acho que agora sabe como pescar.

    
por 20.05.2017 / 03:06
1

A tabela de roteamento local permite que o sistema seja roteado para a interface apropriada para alcançar um endereço. As rotas são selecionadas usando a rota mais específica (menor sub-rede). No entanto, você está testando rotas manipuladas pelo endereço de loopback.

O ping é respondido no nível da interface e não requer um processo de escuta. ao fazer o ping de um endereço que é atribuído a uma interface no host, o roteamento de curto-circuito da rede para a interface de loopback. O roteamento para a interface de loopback impede que servidores remotos espionem o tráfego. Como você atribuiu a rota a um intervalo local, o ping será respondido pela interface de loopback.

Normalmente você a tabela de roteamento terá as seguintes rotas:

  • padrão (0.0.0.0/0): a rota para o roteador que roteará o tráfego para endereços desconhecidos. Esta é a rota usada para se conectar à internet. Isso deve ser encaminhado diretamente para um roteador, embora haja maneiras de rotear indiretamente, especificando um roteador intermediário.

  • 192.0.2.0/24: (Opcional, apenas útil com várias interfaces) Em que 192.0.2.0 é o endereço de rede de uma sub-rede remota e / 24 é o tamanho da rede de trabalho. Novamente, isso será encaminhado para um roteador. Isso é necessário apenas se a rota for roteada por um roteador diferente do roteador para a sub-rede que a contém

  • 192.0.2.0/24: (padrão). valores conforme descrito acima) Fornece uma rota para a rede conectada. O endereço IP da interface deve estar na sub-rede. Isso direciona para o roteador que atende a sub-rede. No entanto, as conexões com outros hosts na sub-rede serão roteadas diretamente, a menos que sejam substituídas por uma rota mais específica.

  • 127.0.0.1/8: (padrão). Este é o endereço de loopback anexado à interface psuedo de loopback. Esses endereços nunca devem ser vistos em uma interface real.

Existem outras rotas especializadas, como ponto-a-ponto e buraco negro. Estes são raramente usados.

    
por 20.05.2017 / 02:38