Come funzionano le subnet IPv6

Un indirizzo IPv6 è lungo 128 bit, scritti come otto gruppi di quattro cifre esadecimali. Gli zeri iniziali di ogni gruppo si possono omettere, e una sola sequenza di gruppi tutti a zero si può sostituire con ::. Così 2001:0db8:0000:0000:0000:ff00:0042:8329 diventa 2001:db8::ff00:42:8329, la forma raccomandata da RFC 5952.

Il prefisso dice quanti bit iniziali identificano la rete. Nelle reti locali si usa quasi sempre /64, perché l'autoconfigurazione SLAAC ha bisogno di 64 bit per l'host; a un'azienda o a un sito si assegna spesso un /48, che contiene 65.536 sottoreti /64, e a un'utenza domestica un /56, con 256 sottoreti.

In IPv6 non ci sono indirizzi di rete e broadcast da scartare come in IPv4: tutti gli indirizzi del blocco sono utilizzabili e il broadcast è sostituito dal multicast. I numeri diventano enormi, 2⁶⁴ indirizzi in un solo /64, ed è per questo che si ragiona per sottoreti e non per singoli host.

Errori frequenti

  • Usare due volte :: nello stesso indirizzo: diventerebbe ambiguo quanti gruppi di zeri rappresenta ciascuno.
  • Dividere una LAN in sottoreti più piccole di /64: SLAAC e molte funzioni di IPv6 smettono di funzionare.
  • Calcolare le sottoreti in decimale: i confini cadono sulle cifre esadecimali, ogni cifra vale 4 bit.

Domande frequenti

Quanti indirizzi ha un /64?

2⁶⁴, cioè 18.446.744.073.709.551.616: più di tutto lo spazio IPv4 elevato al quadrato.

Che cos'è la zona ip6.arpa?

È il dominio usato per la risoluzione inversa, da indirizzo a nome: le 32 cifre esadecimali dell'indirizzo si scrivono al contrario, separate da punti, seguite da ip6.arpa.

Come si scrive un indirizzo IPv6 in un URL?

Fra parentesi quadre, per non confondere i due punti con la porta: http://[2001:db8::1]:8080/.

Come funziona questo calcolo

L'indirizzo è letto come intero a 128 bit (espandendo :: con i gruppi di zeri mancanti e convertendo un'eventuale coda IPv4 in due gruppi). Maschera = 128 − prefisso bit a zero in coda; rete = indirizzo AND maschera; ultimo indirizzo = rete OR NOT maschera; indirizzi = 2^(128 − prefisso). Le sottoreti /n sono 2^(n − prefisso), ciascuna di 2^(128 − n) indirizzi. La forma compressa segue RFC 5952: minuscole, niente zeri iniziali e :: sulla sequenza di zeri più lunga di almeno due gruppi.