Por que existem 2 rotas nesta tabela em vez de uma?

1

route -n dá:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.20.254  0.0.0.0         UG    0      0        0 eth0
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

ifconfig dá:

eth0  Link encap:Ethernet  HWaddr 00:0c:29:f1:76:32
      inet addr:192.168.20.10  Bcast:192.168.20.255  Mask:255.255.255.0
      inet6 addr: fe80::20c:29ff:fef1:7632/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:6387084 errors:0 dropped:24 overruns:0 frame:0
      TX packets:374481 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:712509342 (712.5 MB)  TX bytes:37312703 (37.3 MB)
      Interrupt:18 Base address:0x2024

Por que preciso de duas rotas aqui em vez de uma? Qual é o sentido dessa linha?

192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

Meu endereço de interface é 192.168.20.X com uma máscara de rede de 255.255.255.0 , então, com certeza, a pilha pode informar como chegar a 192.168.20.Y , por que tenho essa segunda entrada na tabela de roteamento?

    
por boatcoder 03.04.2013 / 16:13

3 respostas

1

A segunda linha é, na verdade, a informação exata (referente ao roteamento) que você declarou na configuração do dispositivo.

Não seria sensato que o kernel sempre consultasse informações do banco de dados do dispositivo para cada decisão de roteamento, se pudéssemos colocar essa informação na própria tabela de roteamento.

Imagine a mesma situação em um roteador com várias redes conectadas. A técnica vista aqui aplica-se também e simplifica as decisões de roteamento por uma grande quantidade (apenas uma linha a mais na tabela de roteamento vs. 5 interfaces a serem verificadas).

    
por guntbert 03.04.2013 / 16:25
0

Isso significa que não há gateway necessário para alcançar endereços dentro dessa sub-rede, pois hosts / NICs com esses endereços estão em sua rede local e não atrás de qualquer roteador. Por tudo o que sei, essa entrada está sempre presente, exceto talvez para algumas configurações somente ponto-a-ponto-túnel, e se você adicionar mais endereços à NIC, cada sub-rede adicionada deve produzir uma entrada como essa.

Cada sub-rede é listada na tabela de roteamento para coletar todas as informações relevantes em um local para o kernel tomar decisões de roteamento - é simplesmente mais eficiente do que procurar sub-redes conectadas, analisando a configuração da interface e provavelmente crítico para roteadores grandes em termos de desempenho.

    
por moon.musick 03.04.2013 / 16:25
0

A segunda linha do seu comando route -n

192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

Diz que para todos os endereços onde os primeiros 3 números são 192.168.20 não é necessário um gateway. 0.0.0.0 não é um endereço IPv4 legal. Seu computador faz um AND lógico com o destino e o Gen Mask (também conhecido como Netmask) 255.255.255.0 neste caso, porque os primeiros 3 bytes são 255 os primeiros 3 números devem corresponder exatamente. Porque o último byte é 0. O último número pode ser qualquer coisa.

A primeira linha do seu comando route -n

0.0.0.0         192.168.20.254  0.0.0.0         UG    0      0        0 eth0

diz usar este gateway 192.168.20.254 para todos os outros endereços IP. Este é provavelmente o endereço do seu roteador,

    
por Warren Hill 03.04.2013 / 16:38