A máquina Linux não responde a um pedido ARP

2

Temos essa situação: Um roteador, que é uma VM do Ubuntu, tem várias interfaces de VLAN no mesmo NIC físico. Essas interfaces de VLAN são dinamicamente configuradas e desmontadas e conectadas a redes nas quais as máquinas podem ser adicionadas ou removidas pelos usuários.

Às vezes, temos uma situação em que, por exemplo, na VLAN 1, o roteador tem o IP 10.0.0.254 e uma máquina vizinha tem o IP 10.0.0.1. Enquanto, ao mesmo tempo, na VLAN 2, o roteador tem o IP 10.0.0.1 e uma máquina vizinha tem o IP 10.0.0.2.

Quando, na VLAN 1 10.0.0.1, estiver enviando um ARP perguntando "who has 10.0.0.254 tell 10.0.0.1" o roteador não responderá. Farejar o tráfego no roteador mostra que as solicitações ARP chegam com a marcação de VLAN correta, mas são descartadas.

O roteador descarta a mensagem ARP pensando que ela chegou na interface errada?

Algumas notas:

  1. Na VLAN 2, não há problemas de ARP.
  2. A substituição do IP da VM vizinha na VLAN 1 (10.0.0.1) para 10.0.0.3 soluciona o problema.
  3. Como mencionei, os dois IPs (10.0.0.254 e 10.0.0.1) estão no mesmo endereço MAC.
  4. arp_filter está definido como 0 em todas as interfaces
  5. a tabela de roteamento do roteador não faz referência a todas essas interfaces dinâmicas. usamos iptables e fwmarks juntamente com regras de IP e tabelas de roteamento personalizadas (todas são dinamicamente configuradas por software) para rotear o tráfego separadamente de acordo com a VLAN de origem.

Onde está o problema?

    
por Ido 23.04.2013 / 15:16

3 respostas

2

Ter um único nó de rede conectado a duas redes diferentes que usam os mesmos endereços IP não é uma configuração suportada. Conflitos de endereço é uma falha bem conhecida do uso de endereços RFC 1918. Esta é a razão pela qual o RFC 4193 foi introduzido e especifica que 40 dos bits de endereço devem ser gerados aleatoriamente.

Se você não quiser renumerar as redes para resolver o conflito de endereços, e se não quiser atualizar para o IPv6, o que evita que tais conflitos ocorram no primeiro caso, a configuração mais confiável que você pode obter é da divisão desse nó de rede único em dois ou mais nós de rede.

Uma única VM Linux pode operar como vários nós de rede independentes simultaneamente. Esse recurso é chamado de namespaces de rede. Cada namespace de rede possui seu próprio conjunto de interfaces de rede, endereços locais, entradas de tabela de roteamento e regras de firewall. Os diferentes namespaces de rede podem se comunicar entre si por meio de interfaces de rede virtuais.

A documentação do recurso namespaces de rede pode ser encontrada usando man ip-netns (ou man ip se você estiver usando uma versão mais antiga).

    
por 29.11.2014 / 01:28
0

Se o roteador tiver o endereço IP 10.0.0.1 em uma de suas interfaces, outra máquina que alegar ter esse endereço IP é considerada spoofing ARP. Mesmo que você conseguisse responder ao ARP, você nunca seria capaz de enviar pacotes do roteador para o 10.0.0.1 - como seria a tabela de roteamento?

Você precisa fornecer o roteador e tudo o que estiver conectado a endereços IP distintos.

    
por 23.04.2013 / 15:42
0

Parece que as máquinas de seus usuários não estão configuradas para enviar solicitações ARP gratuitas quando são criadas inicialmente ou quando um IP é recém-atribuído a elas. Você pode realizar tal coisa usando o utilitário arping.

    
por 28.09.2014 / 06:18