em qual ordem a tabela de rotas é analisada?

11

No meu pc eu tenho que seguir a tabela de roteamento:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

Eu não entendo como isso é analisado, quero dizer de cima para baixo ou de baixo para cima?

Se for analisado de cima para baixo, tudo será sempre enviado para o roteador em minha casa, mesmo que o destino do ip seja 192.168.1.15; mas o que eu sabia (erroneamente?) era que, se um pc estivesse dentro da minha mesma rede local, uma vez que eu recuperasse o destino MAC através de uma mensagem de broadcast, meu pc poderia enviar diretamente a mensagem para o destino.

    
por zer0uno 06.03.2015 / 11:59

2 respostas

11

A tabela de roteamento é usada na ordem da mais específica para a menos específica.

No entanto, no linux é um pouco mais complicado do que você poderia esperar. Em primeiro lugar, há mais de uma tabela de roteamento e quando a tabela de roteamento é usada depende de várias regras.

Para obter uma imagem completa:

$ ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route show 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 eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

A tabela local é a tabela de roteamento especial que contém rotas de controle de alta prioridade para endereços locais e de broadcast.

A tabela main é a tabela de roteamento normal que contém todas as rotas que não são de política. Esta é também a tabela que você consegue ver se simplesmente executa ip route show (ou ip ro para abreviar). Eu recomendo não usar mais o antigo comando route , pois ele mostra apenas a tabela main e seu formato de saída é um tanto arcaico.

A tabela default está vazia e reservada para o pós-processamento, se as regras padrão anteriores não selecionassem o pacote.

Você pode adicionar suas próprias tabelas e adicionar regras para usá-las em casos específicos. Um exemplo é se você tem duas conexões com a Internet, mas um host ou sub-rede deve sempre ser roteado através de uma conexão com a Internet.

O livro Roteamento de políticas com o Linux explica tudo isso com detalhes excelentes.

    
por 06.03.2015 / 12:14
3

A tabela de roteamento é geralmente aplicada na ordem de "mais específico" a "menos específico". Um destino de 0.0.0.0 com uma máscara de rede de 0.0.0.0 , ou seja, sua rota padrão , é a menos específica possível e, portanto, sempre será aplicada por último.

Se você tivesse o endereço MAC de outro PC em sua rede local, mas estivesse em uma sub-rede diferente, poderia adicionar uma rota de host específica para esse PC e provavelmente obteria comunicação.

    
por 06.03.2015 / 12:08

Tags