Em um roteador, o que decide se um pacote deve ser encaminhado ou direcionado para o próprio roteador?

2

Estou tentando aprender como o roteamento de pacotes funciona em um roteador baseado em Linux (OpenWRT no meu caso) um pouco melhor para configurar alguns projetos / apenas aprender. Referenciando o gráfico abaixo, vou dividir isso em duas perguntas

  1. Eu estou querendo saber o que (como um processo, algum outro tipo de tabela de roteamento, ou algo que eu possa editar talvez?) é especificamente responsável, fora do iptables, por fazer / direcionar as "Decisões de Roteamento" nos nós abaixo. Note, estou falando sobre os nós reais rotulados como "Decisão de Roteamento" na figura abaixo, não nos iptables. Ou seja, depois que um pacote passa pelo PREROUTING nat, algo tem que dizer ao pacote de tempo para ir para a cadeia de filtros de entrada em direção a um processo local, ou ir para as cadeias de encaminhamento, certo? Para ambas as partes desta questão, eu diria que podemos ficar no nó "Decisão de Roteamento" mais importante, já que eu diria que os nós inferiores abrangem muito mais possibilidades e processos.
  2. Também / ou como a decisão é tomada? É tão simples quanto, se o pacote de entrada é destinado para o ip da interface em que veio (192.168.1.1 da conexão LAN, por exemplo), então ele deve entrar nesta máquina e enviá-la através das tabelas de entrada, caso contrário deve ser encaminhado para outra interface para ir para a rede externa (apenas a internet, neste caso), então encaminhá-lo para qualquer outra interface aceitando encaminhamento. Ou há outras maneiras possíveis de um pacote ser direcionado para o roteador, para ser tratado por algum processo como um servidor DNS ou algo assim, em vez de ser diretamente encaminhado para uma interface conectada à Internet.

    
por JJBrown 31.03.2015 / 23:48

1 resposta

1

Se um pacote de entrada deve ou não ser roteado para o sistema local é simplesmente dependente se o endereço IP de destino é um dos endereços IP em qualquer interface do sistema local. Note que não importa realmente em qual interface um pacote vem; você pode ter uma interface eth0 com o endereço IP 192.168.1.1 e um endereço IP extra 192.168.1.2 na interface lo : os pacotes com o endereço de destino 192.168.1.2 chegando em eth0 serão processados localmente.

A decisão de roteamento é feita de acordo com as tabelas de roteamento IP em conjunto com as tabelas de regras de roteamento IP. Essas tabelas são para uma parte preenchida automaticamente quando os endereços IP são definidos nas interfaces.

Você pode ver as regras de roteamento com o comando ip rule show (que pode ser abreviado):

$ ip ru sh
    0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

Você pode inspecionar cada uma dessas tabelas de roteamento com o comando ip route show table xxx (também pode ser abreviado). A tabela local diz respeito aos pacotes que devem ir para o sistema local:

$ ip ro sh 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.1.0 dev eth0  proto kernel  scope link  src 192.168.1.1 
local 192.168.1.1 dev eth0  proto kernel  scope host  src 192.168.1.1 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.1 

A tabela main é o que você costuma ver quando, por exemplo, use route (que está obsoleto, assim como ifconfig ), então você não precisa especificar seu nome:

$ ip ro sh
default via 192.168.1.254 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 

A tabela default está geralmente vazia, mas pode ser usada para reter rotas padrão, por exemplo se você tiver vários gateways.

Para mais informações, leia o livro de roteiros de políticas

    
por 01.04.2015 / 12:16