Diferentes endereços MAC em pacotes e tabelas ARP

Diferentes endereços MAC em pacotes e tabelas ARP

O que acontece se um host na rede receber um pacote IP com um endereço MAC de origem diferente do endereço MAC na tabela ARP local para esse IP de origem?

A entrada da tabela ARP para esse IP foi e será preenchida por meio de uma resposta ARP válida.

Agora notei que o host receptor (Ubuntu 18.04) não envia um pacote de resposta (resposta de eco ICMP ou TCP SYN/ACK ... etc). Nenhum pacote de resposta está saindo da interface.

A questão agora é por que motivos o anfitrião se comporta dessa maneira. Que verificações estão sendo feitas com os endereços MAC e IP dos pacotes, a tabela arp local e a tabela de roteamento, etc.?

Editar:

Para esclarecer o cenário:

insira a descrição da imagem aqui

Se o host Hb enviar uma solicitação de ping para 10.2.0.5 (host Ha), Ha receberá um pacote ICMP com IP de origem 10.1.0.3 e o endereço MAC de origem será o endereço MAC do roteador. Mas a tabela ARP do host Ha possui uma entrada: 10.1.0.3 -> Endereço MAC Hb. Assim, os endereços MAC são diferentes!

Responder1

Este comportamento é totalmente esperado e está relacionado com a configuração de roteamento do Hbhost, que provavelmente possui apenas a rota padrão através do roteador. Portanto, caso você não tenha configurado a rota adicional, os pacotes para a N2rede ( 10.2.0.0/24) serão enviados pela rota padrão.

Portanto, o problema é causado pela ativação do filtro de caminho reverso no Hahost, que descarta os pacotes recebidos por restrições no endereço de origem.

Para solucionar esse problema, você deve verificar a saída dos próximos comandos no Hahost:

  • ip netconf show dev <iface-N2>- verifique o rp_filtervalor. Provavelmente é strict.
  • ip route get 10.2.0.5 from 10.1.0.3 iif <iface-N2>- provavelmente mostrará algo como invalid cross-device link.
  • nstat -az TcpExtIPReversePathFilter- provavelmente terá um valor diferente de zero.

Existem três maneiras inconscientes de resolver o problema:

  • Basta desabilitar o rp_filterno Hahost com o sysctl ( sysctl -w net.ipv4.conf.all.rp_filter=0e sysctl -w net.ipv4.conf.<iface-N2>.rp_filter=0). Além disso, você deve editar o /etc/sysctl.confarquivo para tornar essas alterações permanentes.

  • Basta adicionar a rota no Hbhost ao endereço 10.2.0.5direto 10.1.0.5(comando para linux ip route add 10.2.0.5 via 10.1.0.5, para windows route add 10.2.0.5 mask 255.255.255.255 10.1.0.5)

  • Configure a tradução de endereço de origem (NAT) no roteador para reescrever o endereço Hbno endereço do roteador. A regra do iptables para fazer isso:

iptables -t nat -A POSTROUTING -o <iface-N2> --src 10.1.0.3 --dst 10.2.0.5 -j MASQUERADE

informação relacionada