IPv4 en notación IPv6

Las cuatro formas en que aparece una dirección IPv4 dentro de IPv6 y por qué ninguna de ellas es "su dirección IPv6".

Prueba 8.8.8.8, 192.168.1.1 o 127.0.0.1.

Una dirección IPv4 no tiene equivalente en IPv6. Las direcciones IPv6 las asigna tu proveedor; no se derivan de lo que ya tienes. Lo que sigue son cuatro notaciones distintas que incrustan una dirección IPv4, cada una con su propósito: ninguna es una dirección que puedas poner en un registro DNS y esperar que funcione.

IPv4 mapeada

Vigente

::ffff:203.0.113.5

Así representa un socket de doble pila a un par IPv4 ante una aplicación que solo entiende IPv6. Las verás en los registros de servidores en máquinas de doble pila: una entrada que dice ::ffff:203.0.113.5 es una conexión IPv4 corriente, no una IPv6. También se escribe ::ffff:cb00:7105.

Compatible con IPv4

Obsoleta

::203.0.113.5

Un mecanismo de transición temprano, declarado obsoleto por el RFC 4291 en 2006 y ya sin implementaciones. Aparece aquí porque todavía asoma en documentación y archivos de configuración antiguos, donde conviene tratarlo como un error y no copiarlo.

Prefijo 6to4

Obsoleta

2002:cb00:7105::/48

Un túnel automático que daba a cualquier host con IPv4 pública un /48 de espacio IPv6. El RFC 7526 lo declaró obsoleto: dependía de relés públicos cuya calidad nadie podía garantizar y producía conexiones que fallaban de formas que el usuario no podía diagnosticar.

NAT64 / prefijo bien conocido

Solo dentro de una red NAT64

64:ff9b::203.0.113.5

Así llega un cliente solo IPv6 a un servidor solo IPv4 a través de una pasarela NAT64. Es real y actual, pero solo tiene sentido dentro de una red que tenga una: en internet abierta la dirección no significa nada.

La dirección en sí

Decimal con puntos
203.0.113.5
Hexadecimal
0xCB007105
Entero de 32 bits
3.405.803.781
Binario
11001011.00000000.01110001.00000101

DocumentaciónTEST-NET (RFC 5737): reservado para ejemplos. Se puede publicar sin riesgo y nunca se enruta.

La premisa suele ser errónea, y no pasa nada

Casi todo el mundo que busca un conversor de IPv4 a IPv6 quiere algo que no existe: una función que tome la dirección que tiene y devuelva la dirección IPv6 que debería usar. Esa función no existe. Las direcciones IPv6 se asignan —tu operador o tu proveedor de alojamiento te entrega un bloque sacado del que le entregaron a él—, no se calculan a partir de una IPv4 que ya tengas.

Lo que sí existe son varias notaciones que meten una dirección IPv4 dentro de la sintaxis de IPv6, cada una inventada para un trabajo concreto. Saber cuál es cuál resulta de verdad útil, porque te las vas a encontrar en registros y archivos de configuración. Tomar cualquiera de ellas por «tu dirección IPv6», no.

La que vas a ver de verdad

::ffff:203.0.113.5 —la forma mapeada desde IPv4— explica casi todos los avistamientos del mundo real. Aparece cuando un programa escucha en un socket IPv6 y se conecta un cliente IPv4: el sistema operativo presenta al otro extremo de esta forma para que la aplicación solo tenga que manejar un tipo de dirección.

La consecuencia práctica muerde en dos sitios. El análisis de registros que espera cuartetos con puntos no casará con esas líneas. Y una lista de permitidos que compare cadenas no hará coincidir ::ffff:203.0.113.5 con 203.0.113.5: una regla que parece correcta, pasa la revisión y no se dispara jamás en silencio. Normaliza antes de comparar.

Qué son las demás

Compatible con IPv4 (::203.0.113.5) fue una idea temprana de transición, declarada obsoleta por el RFC 4291 en 2006 y sin ninguna implementación actual. Si te encuentras una en un archivo de configuración, es un error y no una elección.

6to4 (2002::/16) daba a cualquiera con una IPv4 pública un /48 automático de IPv6, encapsulado a través de relés públicos. El RFC 7526 lo declaró obsoleto en 2015: los relés no tenían un operador responsable y los fallos eran de la peor clase, intermitentes, lentos e imposibles de diagnosticar para el usuario.

NAT64 (64:ff9b::/96) está vigente y se usa a diario. Los operadores móviles en particular llevan redes solo IPv6 y traducen en el borde, así que un teléfono solo IPv6 llega por aquí a servicios solo IPv4. Es real, pero es una propiedad de la red en la que estás, no una dirección que puedas repartir.

Por qué los dos protocolos no pueden hablar sin más

Es una pregunta razonable después de treinta años de transición. La respuesta es que IPv6 no es IPv4 con direcciones más largas: es un protocolo distinto con una cabecera distinta, y un router que maneja uno no tiene forma de reenviar un paquete del otro. En una cabecera IPv4 no hay sitio donde poner una dirección de 128 bits.

Por eso todo camino entre ambos necesita algo en medio: un equipo de doble pila que hable los dos, un traductor como NAT64, o un proxy que termine una conexión y abra otra. Esa es toda la razón de que la transición haya ido lenta, y de que la respuesta práctica a «¿cómo doy soporte a IPv6?» sea casi siempre «monta doble pila» y no «convierte algo».

Relacionado

Para ver por qué protocolo estás llegando de verdad a internet, el comprobador de IP indica la familia de direcciones que ha usado tu conexión. Para dividir en subredes la dirección que tienes, la calculadora de subredes cubre el lado IPv4.

Preguntas que esta página existe para responder

¿Cuál es el equivalente IPv6 de mi dirección IPv4?

No hay ninguno, y esto es lo más importante de la página. Las direcciones IPv6 son asignadas por quien proporciona su conectividad: provienen de su ISP o de su proveedor de hosting, a partir de un bloque que se les ha asignado. No puede derivar uno de una dirección IPv4 que ya posee, como tampoco podría derivar un número de teléfono de una dirección postal. Lo que hacen las notaciones aquí es incorporar una dirección IPv4 dentro de la sintaxis de IPv6 para fines técnicos específicos, lo cual es algo diferente.

¿Por qué el registro de mi servidor muestra ::ffff:203.0.113.5?

Porque el socket está escuchando en IPv6 y la conexión llegó a través de IPv4. Un socket de doble pila representa pares IPv4 para la aplicación en esa forma asignada a IPv4, por lo que el código solo tiene que manejar un tipo de dirección. Es una conexión IPv4 normal. Si está analizando registros o comparando direcciones con una lista permitida, elimine primero el prefijo ::ffff:; tratarlo como una dirección distinta es una fuente común de reglas que silenciosamente no coinciden.

¿Debo usar una dirección 6to4?

No. 6to4 era un mecanismo de túnel automático que le daba a cualquier host con una dirección IPv4 pública un /48 de espacio IPv6 a través del prefijo 2002::/16. Quedó formalmente obsoleto por RFC 7526 en 2015 porque dependía de enrutadores de retransmisión públicos de los que nadie era responsable, lo que producía conexiones lentas o rotas de maneras que los usuarios no podían diagnosticar. Si necesita IPv6, consígalo de su proveedor o utilice un corredor de túneles con un operador responsable.

¿Para qué sirve 64:ff9b::?

Es el prefijo bien conocido para NAT64, definido en RFC 6052. Un cliente solo IPv6 que necesita llegar a un servidor solo IPv4 envía a 64:ff9b:: con la dirección IPv4 incrustada en los últimos treinta y dos bits; se traduce una puerta de enlace NAT64 en la ruta. Está actual y ampliamente implementado, sobre todo por los operadores de telefonía móvil que ejecutan redes sólo IPv6. Sin embargo, sólo significa cualquier cosa dentro de una red que opere dicha puerta de enlace; la dirección no se puede enrutar en Internet abierta.

¿Los hosts IPv4 e IPv6 pueden comunicarse entre sí directamente?

No. Son protocolos separados con diferentes formatos de paquetes y no existe una interoperación directa; precisamente por eso la transición ha tardado treinta años. La comunicación entre ellos siempre requiere algo en el medio: un host de doble pila que hable ambos, un traductor como NAT64 o un proxy que termine uno y origine el otro. Por eso también "simplemente convertir la dirección" no es una solución para nada.

Última revisión . ¿Has visto algo desactualizado? Dínoslo.