La mayoría de los planes de VPS incluyen IPv6, y la mayoría se quedan a medio configurar: la dirección está asignada, hay un registro AAAA, pero el cortafuegos o el servidor web nunca escuchan en ella. Un visitante con IPv6 prueba entonces el camino rápido, espera a que expire el plazo y solo después cae a IPv4. El sitio parece lento por motivos que ninguna prueba en IPv4 mostrará.

¿Funciona de verdad?

ip -6 addr show
ping6 -c2 ipv6.google.com
curl -6 -sS -o /dev/null -w '%{http_code}\
' https://yourdomain.com

La última línea es la que importa. Si se cuelga o falla mientras la versión IPv4 responde, tu registro AAAA apunta a una puerta detrás de la cual no hay nadie.

Los tres sitios que hay que mirar

  • El servidor web: Nginx necesita su propia línea listen: listen [::]:443 ssl;
  • El cortafuegos: ufw y firewalld tratan la v6 aparte; las reglas de iptables no se aplican en absoluto a ip6tables.
  • El DNS: un registro AAAA solo sirve si se cumplen los dos puntos anteriores.
# nginx
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;

Tu aplicación verá una dirección distinta

Un cliente IPv6 llega con una dirección como 2001:db8::1. El código que guarda una IP en una columna de 15 caracteres, o que la compara con una lista blanca de v4, se rompe en silencio. Un límite de peticiones basado en la dirección completa también se queda demasiado estrecho, porque un mismo cliente suele tener un /64 entero.

Detrás de Cloudflare o de cualquier proxy, la dirección que ve tu servidor es la del proxy. Lee la real en la cabecera reenviada: consulta Cloudflare y la IP real del visitante.

Si no vas a terminar el trabajo

Quita el registro AAAA. No tener IPv6 es una conexión IPv4 limpia y rápida. Un IPv6 roto es un tiempo de espera agotado en cada primera visita.