Regras da tabela de roteamento local e principal

1

Eu tenho algumas regras em minhas tabelas de roteamento que o kernel adiciona automaticamente quando eu configuro uma interface no meu host.

$ ip route show table local
broadcast 10.0.0.0 dev eth1 proto kernel scope link src 10.0.0.3
local 10.0.0.3 dev eth1 proto kernel scope host src 10.0.0.3
broadcast 10.0.0.255 dev eth1 proto kernel scope link src 10.0.0.3


$ ip route show table main
default via 10.0.0.3 dev eth1
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.3

Estou tentando entender como funciona o roteamento do Linux e não consigo descobrir a finalidade das duas entradas de difusão na tabela de roteamento local. Por exemplo, no meu entender, um pacote direcionado para 10.0.0.5 é roteado de acordo com a segunda regra na tabela de roteamento principal, e não de acordo às regras na tabela local.

Então, quais pacotes são roteados de acordo com essas regras de transmissão? Quando essas duas regras são usadas?

Além disso, as duas " regras de transmissão " estão na tabela local /32 ?

    
por ica 18.05.2017 / 11:30

1 resposta

1

O seu entendimento de que um pacote direcionado a 10.0.0.5 é roteado pela segunda regra na tabela de roteamento principal está correto.

Além de enviar um pacote para um único destino (unicast), o Internet Protocol (IP) também permite enviar um pacote para todos os receptores em uma parte (segmento) específica de uma rede física (broadcast). Isso é usado, por exemplo, por clientes DHCP: Eles basicamente transmitem uma mensagem "olá, estou aqui, preciso de um endereço IP" para todos os computadores conectados localmente atrás de uma interface de rede e o computador com o servidor DHCP responderá. Por exemplo, Ethernet, há transmissões na camada 2 (ou seja, apenas o quadro Ethernet).

O endereço mais alto em uma sub-rede é reservado como endereço de transmissão . Portanto, na sub-rede 10.0.0.0/24 , esse endereço será 10.0.0.255 . Ele pode ser considerado como um endereço / 32, mas eu prefiro pensar nele como um endereço especial em uma sub-rede.

A tabela local contém esses endereços de broadcast, um para cada interface de rede (observe o scope link , ou seja, ele atinge apenas receptores no segmento por trás desse link).

Eles também contêm o endereço de rede (o menor endereço em uma sub-rede) como um endereço de broadcast. Não sei exatamente por quê, e outra documentação também não parece ter certeza:

The network address and broadcast address are both entered as broadcast type addresses on the interface to which they have been bound. Conceptually, there is significance to the distinction between a network and broadcast address, but practically, they are treated analogously, by other networking gear as well as the linux kernel.

Eu li isso como "alguns programas tentarão usar o endereço de rede em vez do endereço de broadcast apropriado, e nós somos tolerantes e permitimos que eles façam isso". Mas esta é minha interpretação pessoal.

    
por 18.05.2017 / 12:16