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
Problema: no puedo ping6 2001::1
desde 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).