arp solicitando a outra sub-rede, como?

5

Gostaria de saber se tenho um computador na sub-rede A com o endereço IP 192.168.123.1 e um computador com o endereço IP 192.168.124.1 numa sub-rede diferente.

Ambas as redes estão conectadas a um roteador. Se eu quiser enviar um pacote do computador A para o computador B, terei que usar o ARP para que o endereço MAC envie o quadro (supondo que o cache do ARP esteja vazio).

Minha pergunta agora é: como seria essa solicitação ARP? Eu tenho dois métodos possíveis:

  1. O computador A, vê que o endereço IP do computador B está fora de sua própria sub-rede. Ele decide enviar o pacote para seu gateway padrão (roteador) e envia uma solicitação ARP com o endereço IP do roteador. Próximo: o roteador responde com seu endereço MAC e o quadro é enviado para o roteador, que cuidará do quadro.

  2. O computador A é "estúpido" e envia uma solicitação ARP com o endereço IP B. O roteador é inteligente o suficiente e vê que o endereço IP está em sua tabela de roteamento. E responde com seu próprio endereço MAC. Em seguida, o computador A envia o quadro para o roteador, pensando que é o computador B. O roteador envia o pacote para o computador B.

A desvantagem que vejo com a segunda abordagem, é que quando você navega no google, ele faz uma requisição arp com o endereço IP do Google. O roteador responderá por conta própria, pois sabe como chegar ao Google. Da próxima vez que você navegar em outro site, terá que fazer a mesma coisa novamente e enviar uma solicitação arp com o IP desse site. Isso resultará em muitas solicitações arp (uma para cada site). E o cache do arp ficará muito grande.

Eu realmente não sei a resposta. Eu encontrei dois vídeos do YouTube - este e este - cada um me dizendo coisas diferentes:

Espero que alguém possa me ajudar.

    
por user3673517 04.06.2014 / 09:19

2 respostas

8

É o "método A". As solicitações ARP para endereços fora da sub-rede não serão enviadas. A única solicitação ARP será para o endereço IP do gateway .

Se você acabou de configurar 192.168.123.1/24 para o computador A e não fazer mais nada, ele terá uma tabela de roteamento como esta:

  • 192.168.123.0/24 para o dispositivo eth0
  • 0.0.0.0/0 para o gateway 192.168.123.254 device eth0

Nessa tabela de roteamento, a primeira entrada declara que o 192.168.123.0/24 é local - acessível sobre a eth0 sem um gateway - portanto, tentar entrar em contato com 192.168.123.42 enviaria uma solicitação ARP para 192.168.123.42 .

No entanto, a segunda entrada tem um gateway definido, por isso é considerado não local , e o sistema operacional não se incomoda em enviar solicitações ARP para esses outros endereços IP, porque ele já sabe disso não pode alcançá-los. Portanto, ele enviará diretamente uma solicitação ARP para o endereço do gateway e nada mais.

(Você pode verificar isso apenas olhando o cache do ARP; ip neigh ou arp -a dependendo do sistema operacional; ou usando uma ferramenta de captura de pacotes como tcpdump ou Wireshark.)

Na maioria dos sistemas operacionais, é claro que você pode adicionar rotas dizendo explicitamente ao sistema operacional que determinadas sub-redes são locais (por exemplo, ip route add 192.168.124.0/24 dev eth0 ).

    
por 04.06.2014 / 09:29
1

O Protocolo de resolução de endereços e o Protocolo de descoberta de vizinho (IPv6) são usados somente quando nenhuma outra rota, exceto uma rota de interface, corresponde. Se houver uma rota correspondente, seja ela padrão ou explícita, o gateway especificado será contatado. Resolver o endereço do gateway ainda usa o ARP / NDP, é claro.

    
por 04.06.2014 / 09:26