Dos directivas con un nombre casi idéntico aparecen en todos los ejemplos que funcionan, y copiar una sin la otra produce un túnel que parece correcto y descarta el prefijo de sucursal en silencio. Hacen trabajos distintos a cada lado de la misma frontera: una enseña al núcleo del servidor dónde vive un prefijo, y la otra enseña a OpenVPN qué cliente autenticado lo transporta. Si aciertas con las dos, el prefijo fluye; si aciertas con una, los paquetes tienen ruta pero no dueño.

Dos directivas, dos trabajos distintos

route-ipv6 es una instalación de ruta normal: el servidor añade una ruta del núcleo que apunta el prefijo a su interfaz de túnel. iroute-ipv6 pertenece a un contexto específico del cliente y declara la propiedad interna, de modo que el daemon sabe que el tráfico de ese prefijo debe enviarse a un cliente concreto y no al par que una ruta del núcleo nombre por casualidad.

Una trata de la tabla de reenvío del núcleo, la otra del modelo de enrutamiento interno del daemon. Mantenerlas separadas explica por qué una configuración que parece completa aún puede descartar el prefijo. También explica por qué la misma red aparece dos veces en todos los ejemplos que funcionan. Ninguna de las dos líneas es redundante.

En la instalación tradicional de espacio de usuario ambas son necesarias y se complementan. Una ruta del núcleo por sí sola deja al daemon sin capacidad de elegir un par. Una iroute por sí sola deja al núcleo sin camino hacia el túnel. De aquí viene también la mayor parte de la confusión sobre los archivos por cliente: el archivo no es una entrada de la tabla de rutas, y la entrada de ruta no es una declaración de propiedad.

ip -6 route show | grep fd00:7a
ip -6 route get fd00:7a::1

Dónde va cada una

La ruta va en la configuración gestionada del servidor, donde se aplica a ese proceso de servidor. La iroute va en el archivo específico del cliente, nombrado según la identidad autenticada del equipo de sucursal.

Un nombre de archivo que no coincide con la identidad efectiva nunca se lee, y el síntoma es idéntico al de una iroute ausente. Comprueba la identidad que autenticó el servidor y después comprueba el nombre de archivo carácter por carácter.

# /etc/openvpn/server/server.conf
route-ipv6 fd00:7a::/64
client-config-dir /etc/openvpn/server/ccd

# /etc/openvpn/server/ccd/branch-b
iroute-ipv6 fd00:7a::/64

Mantén el grupo y el prefijo de sucursal separados, porque solaparlos crea un rompecabezas que ninguna directiva puede resolver.

Lo que necesita otro cliente

Un segundo cliente que debe llegar a esa sucursal necesita un anuncio, no propiedad. Empuja el prefijo a los clientes que quieras, en el contexto de cliente o de grupo que encaje con tu configuración.

No lo envíes a la propia sucursal, porque ese equipo ya tiene el prefijo como red conectada.

Enviarlo a todos es una decisión con consecuencias: cada cliente cree entonces que la sucursal es alcanzable por el túnel, incluidos clientes a los que nunca quisiste dar ese acceso. Anunciar es en la práctica una decisión de acceso, aunque la directiva parezca fontanería. La referencia de opciones del servidor documenta iroute-ipv6 como propiedad específica del cliente, y esa es la distinción que merece conservarse.

El camino de vuelta en el equipo de sucursal

La propiedad solo ayuda si la sucursal reenvía paquetes y su LAN sabe responder. Activa el reenvío IPv6 en el equipo de sucursal y confirma que los equipos de su LAN envían el tráfico del grupo VPN de vuelta hacia la sucursal en lugar de hacia una ruta predeterminada que no conoce el grupo.

Ese camino de vuelta es el equivalente IPv6 del problema de la ruta ausente que la gente sufre con IPv4.

Compruébalo desde un equipo de la LAN con una consulta de la dirección del grupo VPN, no desde la propia sucursal. Una consulta hecha en el router responde a una pregunta distinta de la que hacen tus usuarios, y las dos discrepan con la frecuencia suficiente para que valga la pena el comando extra.

Cuando el par todavía no basta

Algunos despliegues no usan este camino en absoluto. La ruta de datos del núcleo y los servidores gestionados por el producto tienen su propio manejo de rutas compatible, y un ejemplo de espacio de usuario puede no trasladarse directamente.

Confirma qué ruta de datos usa tu compilación antes de copiar directivas de un tutorial escrito para la otra.

Por último, recuerda el ámbito de direcciones: un prefijo local único como fd00:7a::/64 es privado por diseño y no dice nada sobre la alcanzabilidad IPv6 pública. Trátalo como acceso interno y mantén la salida a internet como una cuestión aparte con su propia política.

Artículos relacionados