Skip to main content
  1. Concetti/

IPv6 - Internet Protocol Version 6

·6 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Successore di IPv4 con spazio di indirizzamento a 128 bit. Risolve l'esaurimento degli indirizzi IPv4, elimina il broadcast, introduce multicast nativo e header a dimensione fissa. Non richiede NAT — ogni dispositivo puo' avere il suo IP pubblico univoco.

TL;DR
#

IPv4:  32 bit  → ~4,29 miliardi di indirizzi → esauriti dal 2011
IPv6: 128 bit  → 340 undecilioni (3,4 × 10³⁸) → praticamente infiniti

Differenze chiave:
  Broadcast → eliminato, sostituito da multicast
  NAT       → non necessario (ogni device ha IP pubblico)
  Header    → fisso 40 byte (IPv4 era variabile)
  TTL       → rinominato Hop Limit (nome piu' preciso)
  ARP       → sostituito da NDP (Neighbor Discovery Protocol)

Formato dell'indirizzo
#

IPv6 usa 128 bit rappresentati in esadecimale, divisi in 8 gruppi da 16 bit separati da ::

Indirizzo completo:
  1111:aaaa:2222:bbbb:3333:cccc:4444:dddd

Indirizzo con zeri compressi (:: sostituisce uno o piu' gruppi di zeri):
  fe80:0000:0000:0000:7a31:c1ff:fecb:b256
  fe80::7a31:c1ff:fecb:b256   ← forma compressa

CIDR notation come IPv4:

fe80::/64   → i primi 64 bit sono il prefisso di rete
              i secondi 64 bit sono l'interface identifier (host)

Tipi di indirizzi IPv6
#

Unicast   → uno a uno (come IPv4 normale)
Multicast → uno a molti — solo chi e' "iscritto" riceve
Anycast   → uno al piu' vicino — usato per routing efficiente (es. DNS)

NON ESISTE broadcast in IPv6

Prefissi speciali:

  ::1          → loopback (come 127.0.0.1 in IPv4)
  fe80::/10    → link-local — solo nella LAN, non esce dal router
                 generato automaticamente da ogni interfaccia
  ff00::/8     → multicast — il primo byte ff identifica sempre multicast
  ff02::       → multicast link-local   → resta nella LAN
  ff05::       → multicast site-local   → resta nel sito (campus/azienda)
  ff0e::       → multicast global       → attraversa internet
  2001:db8::/32 → range riservato per documentazione ed esempi

"Site" in ff05 significa il sito fisico — campus universitario, sede aziendale,datacenter. Il pacchetto attraversa i router interni ma non esce verso internet.

Scope del multicast in ordine crescente:

ff02:: → LAN         (non attraversa nessun router)
ff05:: → Sito        (attraversa router interni, non quelli verso internet)
ff0e:: → Internet    (attraversa tutto)

Header IPv6 — struttura fissa
#

A differenza di IPv4 (header variabile), IPv6 ha sempre 40 byte fissi:

┌─────────┬──────────────┬──────────────────────────────────┐
│ Version │ Traffic Class│           Flow Label             │
(4b)(8b)(20b)├─────────┴──────────────┴──────────────────────────────────┤
│      Payload Length (16b)    │ Next Header │  Hop Limit   │
│                              │    (8b)(8b)├──────────────────────────────┴─────────────┴──────────────┤
│                  Source IP Address (128b)(8 righe)├───────────────────────────────────────────────────────────┤
│               Destination IP Address (128b)(8 righe)└───────────────────────────────────────────────────────────┘

Confronto campi IPv4 vs IPv6:

IPv4              IPv6              Differenza
──────────────────────────────────────────────────────
TTL               Hop Limit         Stesso meccanismo, nome piu' preciso
Header Checksum   (rimosso)         I layer superiori gestiscono l'integrita'
Options           Extension Headers Piu' flessibile e processabile dai router
Identification    (rimosso)         La frammentazione e' gestita diversamente
Fragment Offset   (rimosso)         Solo il mittente frammenta in IPv6

Il campo Next Header indica cosa c'e' dopo l'header IPv6:

6   → TCP
17  → UDP
58  → ICMPv6 (include NDP, ping IPv6)

Hop Limit vs TTL
#

IPv4: TTL    → "Time To Live" (nome impreciso — conta hop, non tempo)
IPv6: Hop Limit → nome che dice esattamente cosa fa

Meccanismo identico:
  decrementato di 1 ad ogni router
  a 0 → pacchetto scartato + ICMPv6 Time Exceeded
  protegge dai loop di routing

Valori di default tipici (identici a IPv4):

Linux/macOS → 64
Windows     → 128
Router      → 255

Privacy Extensions e EUI-64
#

IPv6 puo' generare l'interface identifier (ultimi 64 bit) in due modi:

EUI-64 — derivato dal MAC address:

MAC:  7a:31:c1:cb:b2:56
      └─────────────────┐
IPv6: fe80::7831:c1ff:fecb:b256
            "fffe" inserito nel mezzo del MAC

Vantaggio: stabile e prevedibile. Svantaggio: tracciabile — il MAC e' dentro l'indirizzo IPv6.

Privacy Extensions (RFC 4941) — casuale:

IPv6: fe80::a3f2:9b1c:4d7e:2291
        generato casualmente
        cambia periodicamente (ore/giorni)

Linux e macOS moderni usano Privacy Extensions di default. Dal punto di vista Blue Team: rende piu' difficile tracciare un dispositivo nel tempo tramite il suo indirizzo IPv6 link-local.


Happy Eyeballs — come il browser sceglie IPv4 o IPv6
#

Browser interroga DNS per google.com
       ├── Record A    → 142.251.x.x   (IPv4)
       └── Record AAAA → 2a00:1450::x  (IPv6)
              ├── Tenta IPv6 immediatamente
              └── Dopo 50ms tenta anche IPv4
              Vince chi risponde prima
              (IPv6 ha la precedenza se funziona)

Risultato: puoi usare IPv6 senza saperlo. In una stessa sessione di navigazione puoi avere traffico IPv4 e IPv6 intercalati — dipende da quali siti hanno record AAAA.

Verifica con dig:

dig google.com A      # record IPv4
dig google.com AAAA   # record IPv6

Una connessione = un protocollo
#

Una volta stabilita una connessione TCP, il protocollo IP non cambia per tutta la durata di quella connessione:

Browser sceglie IPv6 per google.com
[SYN → SYN-ACK → ACK]   ← three-way handshake IPv6
       ├── GET /          → stessa connessione IPv6
       ├── GET /account   → stessa connessione IPv6
       └── GET /maps      → stessa connessione IPv6
 
Solo una nuova connessione TCP (nuovo handshake)
potrebbe usare un protocollo diverso.

In pratica il cambio e' rarissimo sullo stesso dominio — Happy Eyeballs sceglie sempre lo stesso protocollo se funziona.


IPv6 e sicurezza — niente NAT implicito
#

Con IPv4 + NAT il router bloccava le connessioni in ingresso non richieste come effetto collaterale. Con IPv6 ogni dispositivo e' direttamente esposto:

IPv4 + NAT:
  Internet → Router → [blocco implicito] → PC
  Protezione "gratis" dal NAT

IPv6 senza NAT:
  Internet → Router → PC (direttamente)
  Niente blocco implicito → firewall obbligatorio
Warning

In una rete IPv6 senza firewall configurato, ogni dispositivo e' raggiungibile direttamente da internet. E' uno dei motivi per cui l'adozione IPv6 nelle aziende richiede di ripensare completamente la sicurezza perimetrale.


Adozione globale (2026)
#

Globale:    ~45-49% (Google Statistics)
Francia:    86%     ← leader europeo
Germania:   68%
India:      ~70%
USA:        ~50%
Italia:     bassa
Cina:       <5%

Perche' cosi' lenta dopo 30 anni? IPv4 funziona ancora grazie al NAT e al CGNAT. Finche' funziona, non c'e' urgenza reale di migrare.


Scenario Reale Blue Team
#

In un dfir vedi traffico verso ff02:: — prefisso multicast link-local. Non e' traffico anomalo: e' NDP (Neighbor Discovery Protocol) normale.

In Wireshark filtra IPv6:

Filtro Wireshark: ipv6
Filtro solo multicast: ipv6.dst matches "^ff"
Filtro NDP: icmpv6.type == 135 || icmpv6.type == 136

Un volume anomalo di Neighbor Solicitation puo' indicare un tentativo di NDP spoofing — l'equivalente IPv6 dell'ARP poisoning.


Collegato a
#

Related