Como forçar um host a não enviar uma transmissão para um endereço IP em sua própria sub-rede?

1

Para uma LAN, em vez de um switch, construí uma topologia onde cada máquina está conectada a um roteador. Cada host recebe um endereço IP de 10/8. Aqui estão os detalhes da interface:

Digamos que eu pingue 10.16.0.3 deste host. A tabela de roteamento de 10.16.0.2 foi configurada para usar o roteador (10.16.0.1) como o gateway padrão. Mas como o endereço IP de destino (10.16.0.3) está na mesma sub-rede, ele envia uma transmissão ARP. Eu quero desativar esse comportamento de envio de uma difusão ARP e, em vez disso, forçá-lo a usar a tabela de roteamento. Como faço isso?

    
por Bruce 18.06.2012 / 02:50

1 resposta

3

Existem duas maneiras de conseguir isso. O primeiro é muito anormal e pode causar estranheza, então o segundo é melhor.

Método 1 (NÃO recomendado)

A tabela de roteamento típica é semelhante a esta:

% ip route
10.23.11.0/24 dev wlan0  proto kernel  scope link  src 10.23.11.209
default via 10.23.11.1 dev wlan0  proto static 

Que diz ao kernel que os destinos em 10.23.11.0/24 estão diretamente conectados a wlan0, e todo o restante deve passar pelo roteador em 10.23.11.1. É esta primeira rota que diz ao kernel para fazer uma requisição ARP e enviar o pacote diretamente. Se você removê-lo, tudo deve passar pelo roteador. Esta rota é configurada por padrão, portanto, você precisará explicitamente removê-la em algum lugar. Sua eventual tabela de roteamento deve se parecer com isso:

% ip route
default via 10.23.11.1 dev wlan0  proto static 

Método 2 (recomendado)

O melhor método é colocar cada máquina em sua própria sub-rede, para que cada sub-rede seja um domínio Ethernet (como normalmente deveria ser). Você faria isso atribuindo a cada máquina uma sub-rede / 30, com o roteador recebendo um desses IPs. Sua rede seria algo como isto:

(machine1) 10.0.0.2/30   <------->  10.0.0.1/30 (router) 10.0.0.5/30  <-------->  10.0.0.6/30 (machine2)
    
por 18.06.2012 / 02:58