Eu quero saber como o Linux usa a tabela de roteamento ao chegar a outro ip. Como eu sei, por exemplo, quando executamos "ssh 192.168.21.2", o sistema criará o pacote tcp com o ip de destino como 192.168.21.2 e fará referência à tabela de roteamento para o próximo salto. as entradas da tabela de roteamento conforme mostrado abaixo:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.16.1 0.0.0.0 UG 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1005 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 br1
192.168.16.0 0.0.0.0 255.255.240.0 U 0 0 0 br0
192.168.66.0 0.0.0.0 255.255.255.128 U 0 0 0 br1
Aqui o sistema irá encontrar o endereço de rede de destino e combiná-lo com o endereço de rede de destino e, se for encontrado, enviará esse pacote para o respectivo gateway via interface.
Minha dúvida é como e quando o sistema está calculando o endereço de rede do ip de destino para combiná-lo com a tabela de roteamento. Posso estar totalmente errado neste fluxo. precisa de explicação para entender o fluxo de pacotes do sistema.
Em primeiro lugar, o Código de Rede seleciona a Interface correta para o pacote a ser enviado. Em seguida, ele aplica um endereço IP de origem correspondente.
No seu caso, a Interface presumivelmente será uma com um endereço de
Como você obviamente aplicou a máscara '255.255.240.0' à sua Interface br0, esta seria a Interface de saída. Mas preste atenção:
está na mesma rede (devido à máscara de rede) que um endereço .16.X - no seu caso, e portanto o pacote de saída será simplesmente enviado para a Interface, após o endereço MAC - para 21.1 poder ser recuperado com sucesso via ARP.
Se você enviou um pacote para um destino em uma sub-rede diferente ( --> (dest-address & mask) fornece um valor diferente), digamos
então o pacote seria enviado ao Gateway (usando seu endereço MAC) para roteamento.
Basicamente, o código de roteamento percorre toda a tabela de roteamento e para cada linha da tabela, ele anota as linhas onde
(destIP & netmask) == destination)
. Pode haver zero a N correspondências. Se houver mais de um, a rota "mais específica" é escolhida, ou seja, aquela com mais um bits na máscara de rede. Se nenhuma rota corresponder (no caso de não haver rota padrão), o pacote não poderá ser encaminhado.A rede de destino, ou seja, como os endereços são divididos em uma parte de host e rede no destino, não desempenha nenhum papel na decisão de roteamento. O host de envio normalmente não tem conhecimento disso e não se importa.