AnonymFlow
securite-reseauINFO

Fuga IPv6 con VPN: tu sistema prefiere IPv6, y por eso justamente se filtra

Una fuga IPv6 no es un fallo de tu VPN. Es tu sistema operativo aplicando la RFC 6724, que le dice que prefiera IPv6 sobre IPv4. Si el túnel solo transporta IPv4, la ruta preferida pasa por fuera. Cómo comprobarlo, y la línea que lo corrige en WireGuard.

Por Eric Gerard · Editor · AnonymFlow6 min de lecturaFoto vía Pexels

Tu VPN está conectada. El túnel está activo, el cliente dice protegido, y tu tráfico IPv4 pasa realmente por él. Y un sitio que visitas registra igualmente tu dirección real, porque te alcanzó por IPv6.

Aquí no hay ningún fallo que encontrar. Son dos sistemas correctos que no se ponen de acuerdo, y ese desacuerdo está escrito en una norma.

Tu sistema no se comporta mal, está aplicando la RFC 6724

Cuando un destino es accesible tanto por IPv4 como por IPv6, algo tiene que elegir. Ese algo es la RFC 6724, que define una tabla de política por defecto para la selección de direcciones. Tres de sus filas importan aquí:

Prefix        Precedence Label
::1/128               50     0
::/0                  40     1
::ffff:0:0/96         35     4

::/0 es IPv6 en general. ::ffff:0:0/96 es la forma en que las direcciones IPv4 se representan en esa tabla. Cuarenta gana a treinta y cinco, y la regla de selección de destino es explícita: si Precedence(DA) > Precedence(DB), entonces se prefiere DA.

La RFC enuncia la consecuencia en lenguaje llano en lugar de dejar que la deduzcas: otro efecto de la tabla de política por defecto es preferir la comunicación con direcciones IPv6 a la comunicación con direcciones IPv4, si hay direcciones de origen correspondientes disponibles.

Así que para cada sitio de doble pila que visitas, tu sistema operativo tira primero de IPv6. Es un comportamiento correcto, y es muy anterior a tu VPN.

Por qué eso se convierte en una fuga

Pon ahora encima una VPN que solo transporta IPv4.

Tu máquina conserva una dirección IPv6 nativa de tu operador. El túnel no reclama el tráfico IPv6, así que nada lo intercepta. Tu sistema, siguiendo la regla anterior, prefiere IPv6 para cualquier destino que lo ofrezca. El resultado es que tu ruta preferida es la que rodea el túnel, y la ruta protegida solo recibe lo que IPv6 no pudo servir.

Por eso la fuga pasa tan fácilmente inadvertida. No parece una avería. Tu VPN informa de conectado porque lo está. Tus comprobaciones IPv4 pasan porque pasan de verdad. El tráfico que se escapa es precisamente el que tu sistema juzgó mejor.

Un técnico ante un armario de red abierto, con ambas manos entre un haz de cables blancos y azules que entran en un conmutador, cuyos indicadores se adivinan tras el cableado.
Un técnico ante un armario de red abierto, con ambas manos entre un haz de cables blancos y azules que entran en un conmutador, cuyos indicadores se adivinan tras el cableado.

Comprobar, y el error que vuelve inútil la comprobación

La comprobación es sencilla: con la VPN conectada, mira qué ve realmente un sitio, y lee específicamente la línea IPv6 en lugar de echar un vistazo a la IPv4 y seguir adelante.

Si la dirección IPv6 mostrada pertenece a tu conexión en lugar de al proveedor de VPN, IPv6 está fuera del túnel. Si no aparece ninguna dirección IPv6, o tu red no la tiene o está bloqueada, y ambos casos son sanos desde el punto de vista de las fugas.

Dos cosas arruinan esta comprobación en la práctica:

Probar antes de conectarse. La pregunta no es qué aspecto tienes sin protección. Es qué se escapa mientras te crees protegido.

Probar una sola vez. Una configuración que hoy transporta IPv6 puede dejar de hacerlo tras una reconexión, un cambio de red o el paso de wifi a datos móviles, porque las direcciones disponibles cambian con la red. Un único resultado limpio demuestra que la configuración era correcta en una red y en un momento.

La línea que decide, en WireGuard

WireGuard hace la causa especialmente legible, porque el mismo ajuste decide a la vez qué entra y hacia dónde salen las cosas. El manual de wg define AllowedIPs como una lista de direcciones IP (v4 o v6) separadas por comas, con máscaras CIDR, desde las cuales se permite el tráfico entrante de este par y hacia las cuales se dirige el tráfico saliente de este par, y añade que el comodín 0.0.0.0/0 puede especificarse para todas las direcciones IPv4, y ::/0 para todas las direcciones IPv6.

Léelo como una instrucción de enrutamiento, porque es lo que es. Un par configurado solo con 0.0.0.0/0 dirige IPv4 al túnel y no dice nada de IPv6, que sigue usando la ruta normal. Añadir ::/0 dirige también IPv6 hacia él.

Se aplica una condición: el túnel necesita una dirección IPv6 propia para que esto sirva. Si tu proveedor no asigna ninguna, enrutar ::/0 a un túnel sin extremo IPv6 no crea conectividad IPv6. Es entonces cuando bloquear IPv6 pasa a ser el repliegue honesto y no un atajo.

Bloquear IPv6 funciona, y cuesta algo

Desactivar IPv6 en la máquina elimina la ruta preferida, así que todo cae en IPv4 y entra en el túnel. Es eficaz, y es lo que hacen varios clientes VPN bajo la etiqueta protección contra fugas IPv6.

El coste es real de todos modos. Pierdes IPv6 para todo lo demás en esa máquina, incluidas las redes donde es el único transporte utilizable, y el ajuste sobrevive al motivo que te llevó a cambiarlo. Seis meses después, un problema de conectividad sin relación se vuelve muy difícil de diagnosticar porque ya nadie recuerda que IPv6 estaba apagado.

Enrutar IPv6 por el túnel conserva la capacidad y resuelve el mismo problema. Prefiérelo siempre que tu proveedor lo permita, y trata el bloqueo como el repliegue para cuando no lo permita.

El kill switch no cubre esto

Conviene decirlo aparte, porque ambos se confunden en la misma pantalla de ajustes.

Un kill switch vigila que el túnel caiga y corta el tráfico cuando ocurre. Una fuga IPv6 sucede con el túnel activo. No hay caída que detectar, ni evento de fallo, ni nada a lo que el interruptor pueda reaccionar. Un kill switch que funciona a la perfección se quedará ahí haciendo su trabajo impecablemente mientras el tráfico IPv6 pasa por delante.

Si tu cliente ofrece protección contra fugas IPv6 como interruptor aparte, es un mecanismo distinto, y tener uno no te da el otro.

En resumen

Una fuga IPv6 no es tu VPN estropeándose. Es la RFC 6724 diciéndole a tu sistema que prefiera IPv6, un túnel que solo transporta IPv4, y la consecuencia perfectamente lógica de esos dos hechos.

Comprueba con la VPN conectada, lee la línea IPv6 y repítelo tras cambiar de red. En WireGuard, AllowedIPs es el ajuste que decide, y ::/0 es lo que dirige IPv6 al túnel. Donde el túnel no tenga IPv6 propio, bloquear IPv6 es un repliegue legítimo, con un coste que conviene anotar en algún sitio donde vayas a encontrarlo.

La tabla de política por defecto, los valores de precedencia, la regla de selección de destino y el enunciado de que la tabla prefiere la comunicación IPv6 a la IPv4 proceden de la RFC 6724. La definición de AllowedIPs y la notación comodín para 0.0.0.0/0 y ::/0 proceden de la página de manual wg(8). Ambas se consultaron en el momento de la redacción.

Guías relacionadas

Selección editorial
4.6 / 5

Asegura tu conexión con NordVPN

Threat Protection bloquea rastreadores y malware · kill switch · 30 días de garantía

Auditoría Deloitte 2024Garantía de 30 días14M+ usuarios
Ver la oferta
Todo lo que necesitas saber.

Preguntas frecuentes

¿Qué es exactamente una fuga IPv6?

Es tráfico que sale de tu máquina por IPv6 mientras tu VPN solo transporta IPv4. El túnel está activo, tu tráfico IPv4 está protegido, todo parece normal, pero cualquier sitio accesible por IPv6 ve tu dirección real. Nada ha fallado. Tu VPN hace aquello para lo que fue configurado, y tu sistema hace lo que la norma le indica. Simplemente no coinciden sobre qué rutas existen.

¿Por qué mi sistema prefiere IPv6?

Porque la RFC 6724 se lo indica. La tabla de política por defecto que define da a ::/0 una precedencia de 40 y a las direcciones IPv4 representadas (::ffff:0:0/96) una precedencia de 35, y la regla de selección de destino dice que si Precedence(DA) > Precedence(DB), entonces se prefiere DA. La RFC enuncia la intención directamente: otro efecto de la tabla de política por defecto es preferir la comunicación con direcciones IPv6 a la comunicación con direcciones IPv4, si hay direcciones de origen correspondientes disponibles. Para cualquier destino de doble pila, IPv6 gana por diseño.

¿Cómo sé si tengo una fuga?

Conecta la VPN y luego mira qué ve realmente un sitio. Si la dirección IPv6 mostrada pertenece a tu propia conexión y no al proveedor de VPN, tu tráfico IPv6 está fuera del túnel. Hazlo con la VPN conectada, no antes: lo que importa es exactamente lo que se escapa mientras te crees protegido. Probar una sola vez tampoco basta: una fuga puede aparecer tras una reconexión, un cambio de red o el paso de wifi a datos móviles.

¿Cómo lo corrijo en WireGuard?

Enrutando también IPv6 hacia el túnel. El manual de wg define AllowedIPs como una lista de direcciones IP (v4 o v6) separadas por comas, con máscaras CIDR, desde las cuales se permite el tráfico entrante de este par y hacia las cuales se dirige el tráfico saliente de este par, y señala que el comodín 0.0.0.0/0 puede especificarse para todas las direcciones IPv4, y ::/0 para todas las direcciones IPv6. Una configuración que solo lleva 0.0.0.0/0 envía IPv4 por el túnel y deja que IPv6 se las arregle. Añadir ::/0 dirige también IPv6 hacia él, siempre que el túnel disponga realmente de una dirección IPv6.

¿No sería mejor desactivar IPv6 sin más?

Funciona, y es el instrumento contundente. Desactivar IPv6 elimina la ruta preferida, así que todo cae en IPv4 y entra en el túnel. El coste es que pierdes IPv6 en esa máquina para todo lo demás, incluidas las redes donde es el único transporte utilizable, y que tienes que acordarte de haberlo hecho. Enrutar IPv6 por el túnel conserva la capacidad y resuelve el mismo problema, y por eso es la mejor opción por defecto cuando tu proveedor lo permite.

¿Un kill switch me protege de una fuga IPv6?

No por sí solo, y conviene deshacer este malentendido. Un kill switch reacciona a la CAÍDA del túnel. Una fuga IPv6 ocurre con el túnel perfectamente ACTIVO: no hay ningún fallo que detectar ni nada que cortar. Algunos clientes bloquean IPv6 por separado bajo la etiqueta protección contra fugas IPv6, que es un mecanismo distinto del kill switch aunque la misma pantalla de ajustes los muestre uno junto a otro.