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