Quasi tutti i piani VPS includono IPv6, e quasi tutti restano configurati a metà: l'indirizzo è assegnato, un record AAAA esiste, ma il firewall o il server web non ci ascolta mai sopra. Un visitatore con IPv6 prova allora la strada veloce, aspetta che scada il tempo, e solo dopo ripiega su IPv4. Il sito sembra lento per ragioni che nessuna prova in IPv4 mostrerà mai.

Funziona davvero

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

È l'ultima riga quella che conta. Se si blocca o fallisce mentre la versione IPv4 risponde, il tuo record AAAA punta a una porta dietro cui non c'è nessuno.

I tre punti da controllare

  • Il server web — Nginx ha bisogno di una sua riga listen: listen [::]:443 ssl;
  • Il firewall — ufw e firewalld trattano la v6 a parte; le regole di iptables non valgono affatto per ip6tables.
  • Il DNS — un record AAAA serve solo se i due punti qui sopra sono veri.
# nginx
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;

La tua applicazione vedrà un indirizzo diverso

Un client IPv6 arriva con un indirizzo tipo 2001:db8::1. Il codice che salva un IP in una colonna da 15 caratteri, o che lo confronta con una lista di indirizzi ammessi in v4, si rompe in silenzio. Anche un limite di frequenza basato sull'indirizzo intero è troppo stretto, dato che un solo cliente di solito dispone di un /64 completo.

Dietro Cloudflare o un qualsiasi proxy, l'indirizzo che il tuo server vede è quello del proxy. Leggi quello vero dall'intestazione inoltrata — vedi Cloudflare e l'IP reale del visitatore.

Se non hai intenzione di finire il lavoro

Togli il record AAAA. Niente IPv6 significa una connessione IPv4 pulita e veloce. Un IPv6 rotto significa un timeout a ogni prima visita.