Diferentes direcciones MAC en paquetes y tablas ARP

Diferentes direcciones MAC en paquetes y tablas ARP

¿Qué sucede si un host en la red recibe un paquete IP con una dirección MAC de origen que difiere de la dirección MAC en la tabla ARP local para esa IP de origen?

La entrada de la tabla ARP para esa IP se completó y se completará mediante una respuesta ARP válida.

Ahora me he dado cuenta de que el host receptor (Ubuntu 18.04) no envía un paquete de respuesta (respuesta de eco ICMP o TCP SYN/ACK... etc.). Ningún paquete de respuesta sale de la interfaz.

La pregunta ahora es por qué el anfitrión se comporta de esta manera. ¿Qué comprobaciones se realizan con las direcciones MAC e IP del paquete, la tabla arp local y la tabla de enrutamiento, etc.?

Editar:

Para aclarar el escenario:

ingrese la descripción de la imagen aquí

Si el host Hb envía una solicitud de ping a 10.2.0.5 (host Ha), Ha recibe un paquete ICMP con la IP de origen 10.1.0.3 y la dirección MAC de origen es la dirección MAC del enrutador. Pero la tabla ARP del host Ha tiene una entrada: 10.1.0.3 -> Dirección MAC de Hb. ¡Por lo tanto, las direcciones MAC difieren!

Respuesta1

Este comportamiento es completamente esperado y está relacionado con la configuración de enrutamiento del Hbhost, que probablemente solo tenga la ruta predeterminada a través del enrutador. Entonces, si no ha configurado la ruta adicional, los paquetes a la N2red ( 10.2.0.0/24) se envían a través de la ruta predeterminada.

Entonces, el problema se debe a que se ha habilitado el filtro de ruta inversa en el Hahost, que descarta los paquetes entrantes debido a restricciones en la dirección de origen.

Para solucionar este problema, debe verificar el resultado de los siguientes comandos en el Hahost:

  • ip netconf show dev <iface-N2>- comprobar el rp_filtervalor. Probablemente lo sea strict.
  • ip route get 10.2.0.5 from 10.1.0.3 iif <iface-N2>- Probablemente mostrará algo como invalid cross-device link.
  • nstat -az TcpExtIPReversePathFilter- Es probable que tenga un valor distinto de cero.

Hay tres formas inconscientes de resolver el problema:

  • Simplemente desactive rp_filteren el Hahost con sysctl ( sysctl -w net.ipv4.conf.all.rp_filter=0y sysctl -w net.ipv4.conf.<iface-N2>.rp_filter=0). Además, debe editar el /etc/sysctl.confarchivo para que estos cambios sean permanentes.

  • Simplemente agregue la ruta en el Hbhost a la dirección 10.2.0.5directa 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 la traducción de la dirección de origen (NAT) en el enrutador para reescribir la dirección del Hbenrutador. La regla de iptables para hacerlo:

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

información relacionada