IPv6 è il successore di IPv4 ed è stato pensato per risolvere un problema semplice: gli indirizzi IPv4 sono finiti. Molti provider lo attivano già sulle linee domestiche, spesso senza che l'utente se ne accorga. Conoscerne il funzionamento evita sorprese, soprattutto sul fronte della sicurezza, perché alcune abitudini maturate con IPv4 non valgono più.
Indirizzi molto più lunghi
Un indirizzo IPv6 è lungo 128 bit invece di 32. Si scrive in esadecimale, in otto gruppi da quattro cifre separati da due punti:
2001:0db8:0000:0000:0000:ff00:0042:8329
Per renderlo leggibile si applicano due regole:
- gli zeri iniziali di ogni gruppo si possono omettere (
0db8diventadb8); - una sola sequenza di gruppi tutti a zero si può sostituire con
::.
L'indirizzo precedente diventa quindi 2001:db8::ff00:42:8329. Il blocco 2001:db8::/32 è riservato alla documentazione, ed è per questo che compare negli esempi.
Prefissi: il provider ti assegna una rete intera
Con IPv4 casalingo ricevi un singolo indirizzo pubblico. Con IPv6 il provider assegna invece un prefisso, cioè un blocco di indirizzi, tipicamente un /56 o un /48, talvolta solo un /64. La convenzione standard prevede che ogni rete locale (ogni segmento, ogni VLAN) usi un /64.
In pratica:
| Prefisso ricevuto | Reti /64 disponibili |
|---|---|
| /64 | 1 |
| /60 | 16 |
| /56 | 256 |
| /48 | 65.536 |
Un /64 contiene di per sé un numero di indirizzi enorme, 2 alla 64esima. Non ha senso "risparmiarli": la scarsità tipica di IPv4 qui scompare.
Come i dispositivi ottengono l'indirizzo
In IPv6 ci sono due meccanismi principali:
- SLAAC (configurazione automatica senza stato): il router annuncia periodicamente il prefisso della rete con messaggi chiamati Router Advertisement, e ogni dispositivo si costruisce da solo un indirizzo all'interno di quel prefisso.
- DHCPv6: un server assegna gli indirizzi in modo simile al DHCP di IPv4. Va notato che Android non supporta DHCPv6 per l'assegnazione degli indirizzi, quindi nelle reti con dispositivi Android SLAAC resta indispensabile.
Ogni interfaccia ha inoltre un indirizzo link-local, che inizia con fe80::, valido solo sul segmento locale e usato per le comunicazioni di servizio, come il dialogo con il router.
Molti sistemi operativi generano anche indirizzi temporanei per la privacy, che cambiano periodicamente e vengono usati per le connessioni in uscita, così che i siti non possano tracciare un dispositivo tramite un indirizzo fisso.
Niente NAT: ogni dispositivo è indirizzabile
Questo è il cambiamento più importante sul piano pratico. In IPv6 non serve il NAT: ogni dispositivo ha un indirizzo globale, raggiungibile in teoria da qualsiasi punto di Internet.
Con IPv4 il NAT bloccava di fatto le connessioni in ingresso, anche se non era stato progettato come misura di sicurezza. In IPv6 questa protezione implicita non esiste. La protezione deve arrivare dal firewall del router, che deve:
- consentire il traffico in uscita e le relative risposte;
- bloccare le connessioni in ingresso non richieste;
- permettere i messaggi ICMPv6 essenziali, senza i quali IPv6 non funziona correttamente.
Quasi tutti i router moderni applicano questa politica per impostazione predefinita, ma vale la pena verificarlo nella sezione firewall IPv6. Per esporre un servizio non si fa port forwarding: si apre una regola che consente il traffico verso l'indirizzo e la porta di quel dispositivo.
ICMPv6: non va bloccato in blocco
In IPv4 molti amministratori bloccavano ICMP senza troppe conseguenze. In IPv6 è un errore. ICMPv6 trasporta funzioni fondamentali:
- la scoperta dei vicini (l'equivalente di ARP);
- gli annunci del router;
- i messaggi "pacchetto troppo grande", necessari perché in IPv6 i router non frammentano i pacchetti in transito.
Bloccarlo produce problemi difficili da diagnosticare, come siti che si aprono a metà o connessioni che si bloccano con pacchetti grandi.
Dual stack: IPv4 e IPv6 insieme
Oggi la situazione più comune è il dual stack: la rete usa contemporaneamente IPv4 e IPv6. Quando un sito ha entrambi gli indirizzi, il sistema operativo tende a preferire IPv6 e ricade su IPv4 se la connessione non riesce in tempi brevi, grazie a un meccanismo chiamato Happy Eyeballs.
Per chi gestisce un server o un sito, dual stack significa:
- pubblicare nel DNS sia il record A (IPv4) sia il record AAAA (IPv6);
- verificare che firewall e servizi ascoltino anche su IPv6;
- controllare che log, limitazioni di accesso e regole di blocco considerino anche gli indirizzi IPv6.
Un errore frequente è proteggere bene un server su IPv4 e lasciare aperto lo stesso servizio su IPv6, dove nessuno ha configurato regole.
In sintesi
- IPv6 usa indirizzi a 128 bit e il provider assegna un prefisso, non un singolo indirizzo.
- Ogni rete locale usa un /64; i dispositivi si configurano con SLAAC o DHCPv6.
- Senza NAT ogni dispositivo è indirizzabile: il firewall del router diventa essenziale.
- ICMPv6 non va bloccato indiscriminatamente, perché serve al funzionamento del protocollo.
- In dual stack controlla che regole di sicurezza e servizi siano coerenti su entrambi i protocolli.