Sistema de ping con múltiples interfaces

Sistema de ping con múltiples interfaces

Configuración:

  • Máquina host: macOS, dirección IPv6 - 2002::3/64 (vmnet1)
  • Máquina invitada: Ubuntu ejecutándose dentro de vmware, dirección IPv6: 2002::2/64 (eth0) y 2001::1/64 (tun0)

Configuración:

  • Habilitado el reenvío de IPv4 e IPv6 en Ubuntu
  • Ruta agregada en macOS:sudo route add -inet6 2001::/64 -interface vmnet1

diagrama_configuración_configuración

Problema: no puedo ping6 2001::1desde macOS. Sin embargo, puedo hacerlo ping6 2002::2. Probé con la configuración "Compartir con mi Mac", "Autodetección" y también "Privado para Mac" de VMware.

Respuesta1

No basta con enrutar 2001::/64 a través de vmnet1; tambien tienes que especificarcual puerta de enlaceen vmnet1 los paquetes deben enviarse a –2002::2 en este caso.

Sin una especificación de puerta de enlace, el origen intentará resolver directamente el destino mediante ARP (para IPv4) o NDP (ICMPv6 Neighbor Discovery). Sin embargo, IPv6 generalmente considera que las direcciones pertenecen a interfaces o enlaces individuales, no a todo el host; por lo tanto, los hosts IPv6 generalmente ignoran las solicitudes de descubrimiento de vecinos si llegan a través de una interfaz que no tiene esa dirección asignada.(Esto es similar a arp_ignore=1 de Linux para IPv4).

Por lo tanto, el sistema Ubuntu no responderá a las consultas NDP para 2001::1 que lleguen a través de eth0, porque no existe dicha dirección en eth0; solo está asignada en tun0. Sin embargo, responderá a las consultas NDP para 2002::2, por lo que su ruta debería verse así:

route add -inet6 2001::/64 2002::2

(Dicho esto, una vez que los paquetes se hayan enrutado exitosamente a través de L2 a la dirección MAC correcta, el sistema Ubuntuvoluntadaceptar y reconocer 2001::1 en el encabezado IP (L3), porque esa dirección está marcada como local en su tabla de enrutamiento).

información relacionada