---
title: "Adressage IPv6 — Types & Notation"
domain: network
subdomain: addressing
type: snippet
tags: [ipv6, addressing, link-local, ula, gua, eui-64, slaac, dhcpv6, multicast, ndp]
difficulty: intermediate
status: stable
updated: "2025-05-14"
---
## Structure d'une adresse IPv6

```text
128 bits = 8 groupes de 16 bits, séparés par ':'
Chaque groupe = 4 chiffres hexadécimaux

Exemple complet (non compressé) :
  2001:0db8:0000:0000:0001:0000:0000:0001

Règles de compression :
  1. Supprimer les zéros en tête DANS chaque groupe
     0db8 → db8 | 0001 → 1 | 0000 → 0
  2. Remplacer une ou plusieurs suites de groupes à 0000 par '::'
     (une seule fois dans l'adresse)

Exemples de compression :
  2001:0db8:0000:0000:0001:0000:0000:0001
  → 2001:db8:0:0:1:0:0:1          (étape 1 seulement)
  → 2001:db8::1:0:0:1             (étape 2 — remplace la suite la plus longue)
  NB : 2001:db8::1::1 est INVALIDE (double '::')

  fe80:0000:0000:0000:021a:2bff:fe3c:4d5e
  → fe80::21a:2bff:fe3c:4d5e

  0000:0000:0000:0000:0000:0000:0000:0001
  → ::1   (loopback)
```

## Types d'adresses IPv6

| Type                | Préfixe       | Portée        | Usage                                              |
|---------------------|---------------|---------------|----------------------------------------------------|
| GUA (Global Unicast)| 2000::/3      | Global        | Routage Internet — équivalent IP publique          |
| LLA (Link-Local)    | fe80::/10     | Lien local    | Obligatoire sur toute interface, non routable      |
| ULA (Unique Local)  | fc00::/7      | Site          | Équivalent RFC 1918 — fd00::/8 en pratique         |
| Loopback            | ::1/128       | Hôte          | Équivalent 127.0.0.1                               |
| Non spécifiée       | ::/128        | —             | Source avant assignation d'adresse                 |
| Multicast           | ff00::/8      | Variable      | Groupes de diffusion (remplace broadcast)          |
| Anycast             | —             | Global        | Même adresse sur plusieurs nœuds, routage au plus proche |

```text
GUA — 2000::/3 (bits 001xxxxx...) :
  Plage effective : 2000:: à 3fff:ffff:...
  Structure typique : /48 site | /16 sous-réseau | /64 interface
  Exemple : 2001:db8:1234:0001::1/64

LLA — fe80::/10 :
  Toujours présente, générée automatiquement (EUI-64 ou aléatoire)
  Utilisée par NDP, OSPF, EIGRP comme source de hello
  Non routée — scope = segment Ethernet uniquement

ULA — fc00::/7 (fd00::/8 recommandé) :
  Bit L=1 → fd00::/8 (unique local, à usage pratique)
  40 bits aléatoires → unicité quasi-garantie entre sites
  Format : fdXX:XXXX:XXXX::/48
```

## EUI-64 — Génération de l'identifiant d'interface

```text
Convertir une adresse MAC 48 bits en identifiant d'interface 64 bits :

  1. Diviser le MAC en deux moitiés de 3 octets
  2. Insérer FF:FE au milieu
  3. Inverser le bit U/L (bit 7 = Universal/Local) du premier octet
     bit 7 à 0 → mettre à 1 (MAC administré globalement → universel)
     bit 7 à 1 → mettre à 0

Exemple : MAC 00:1A:2B:3C:4D:5E
  1. Diviser   : 00:1A:2B | 3C:4D:5E
  2. Insérer   : 00:1A:2B:FF:FE:3C:4D:5E
  3. Bit U/L   : 00 = 00000000 → bit 7 → 00000010 = 02
  Résultat EUI-64 : 02:1A:2B:FF:FE:3C:4D:5E → 021a:2bff:fe3c:4d5e

LLA résultante : fe80::21a:2bff:fe3c:4d5e
GUA résultante : 2001:db8:1::21a:2bff:fe3c:4d5e/64

Note : Privacy Extensions (RFC 4941) génèrent une partie interface
       aléatoire et rotative pour les hôtes clients — désactiver en prod serveur.
```

## Multicast IPv6

```text
Format : ffXY::/16
  X = flags (0 = bien connu, 1 = transitoire)
  Y = scope (1=nœud, 2=lien, 5=site, e=global)

ff02:: = link-local multicast (scope=2, non routé)
```

| Adresse             | Équivalent IPv4   | Usage                                     |
|---------------------|-------------------|-------------------------------------------|
| ff02::1             | 224.0.0.1         | All nodes (tous les nœuds du lien)        |
| ff02::2             | 224.0.0.2         | All routers (tous les routeurs du lien)   |
| ff02::5             | 224.0.0.5         | OSPFv3 — All OSPF routers                 |
| ff02::6             | 224.0.0.6         | OSPFv3 — All DR routers                   |
| ff02::9             | 224.0.0.9         | RIPng routers                             |
| ff02::a             | 224.0.0.10        | EIGRP routers                             |
| ff02::d             | 224.0.0.13        | PIM routers                               |
| ff02::fb            | 224.0.0.251       | mDNS                                      |
| ff02::1:2           | —                 | DHCPv6 — All DHCP agents (relays/servers) |
| ff02::1:3           | —                 | DHCPv6 — All DHCP servers                 |
| ff02::1:ffXX:XXXX   | —                 | Solicited-node multicast (NDP, par nœud)  |

```text
Solicited-node multicast :
  Préfixe ff02::1:ff00:0/104 + 24 derniers bits de l'adresse unicast
  Ex : 2001:db8::21a:2bff:fe3c:4d5e → ff02::1:ff3c:4d5e
  Utilisé par NDP pour la résolution d'adresse (remplace ARP broadcast)
```

## NDP — Neighbor Discovery Protocol

```text
Remplace ARP (IPv4) — basé sur ICMPv6

Messages NDP :
  RS  (Router Solicitation)    — hôte demande les infos réseau au routeur
  RA  (Router Advertisement)   — routeur annonce préfixe, gateway, flags
  NS  (Neighbor Solicitation)  — résolution d'adresse (équiv. ARP request)
  NA  (Neighbor Advertisement) — réponse à un NS (équiv. ARP reply)
  Redirect                     — routeur redirige vers meilleur next-hop

Flags dans les RA :
  M (Managed)   = 1 → DHCPv6 stateful pour l'adresse
  O (Other)     = 1 → DHCPv6 stateless pour les infos DNS/domaine
  M=0, O=0      → SLAAC pur (pas de DHCPv6)
```

```text
! Cisco — vérifications NDP
show ipv6 neighbors
show ipv6 neighbors detail
clear ipv6 neighbors

! Linux
ip -6 neigh
ip -6 neigh show dev eth0
```

## SLAAC — Stateless Address Autoconfiguration

```text
RFC 4862 — configuration automatique sans serveur DHCP

Processus :
  1. Interface génère une LLA (EUI-64 ou aléatoire) → test DAD
  2. Envoi d'un RS à ff02::2 (all routers)
  3. Routeur répond avec un RA : préfixe /64, gateway (LLA du routeur)
  4. Hôte construit son GUA : préfixe + partie interface (EUI-64 ou RFC 4941)
  5. DAD (Duplicate Address Detection) via NS/NA avant d'utiliser l'adresse

Conditions requises :
  - Sous-réseau DOIT être /64 (SLAAC n'est pas défini pour d'autres préfixes)
  - RA doit avoir le flag A (Autonomous) = 1

DAD (Duplicate Address Detection) :
  NS vers solicited-node multicast de sa propre adresse tentative
  Si NA reçu en retour → conflit → adresse non assignée
```

```text
! Cisco — configuration SLAAC côté routeur
conf t
ipv6 unicast-routing                          ! activer le routage IPv6

interface GigabitEthernet0/0
 ipv6 address 2001:db8:1:1::/64 eui-64       ! ou adresse manuelle
 ipv6 address fe80::1 link-local             ! LLA manuelle (facilite troubleshooting)
 ipv6 nd ra-interval 30                      ! intervalle RA (défaut 200s)
 no ipv6 nd ra suppress                      ! s'assurer que les RA sont envoyés
 no shutdown
```

## DHCPv6 Stateful vs Stateless

```text
Stateless (O=1, M=0) :
  L'adresse est auto-configurée via SLAAC
  DHCPv6 fournit uniquement : DNS, domaine, NTP, etc.
  Cisco interface : ipv6 nd other-config-flag

Stateful (M=1) :
  DHCPv6 attribue l'adresse + infos DNS
  Équivalent DHCPv4 classique
  Cisco interface : ipv6 nd managed-config-flag

Les deux flags sont dans les RA — les hôtes lisent M et O pour décider.
```

## Configuration Cisco — référence rapide

```text
conf t
! Activer le routage IPv6 (obligatoire)
ipv6 unicast-routing

! Adresses sur une interface
interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64              ! GUA manuelle
 ipv6 address fe80::1 link-local            ! LLA manuelle
 ipv6 enable                                ! active IPv6 sans adresse GUA (génère LLA auto)
 no shutdown

! Vérifications
show ipv6 interface brief
show ipv6 interface GigabitEthernet0/0
show ipv6 route
show ipv6 neighbors
ping ipv6 2001:db8:1::2
ping ipv6 ff02::2                           ! ping all-routers (debug)
```

<Tip>
Chaque interface Cisco avec `ipv6 enable` génère automatiquement une LLA fe80::/10 basée sur EUI-64. Forcer une LLA simple (`ipv6 address fe80::1 link-local`) sur tous les routeurs facilite le troubleshooting — dans les traces NDP et les tables de routage, `fe80::1` est immédiatement identifiable.
</Tip>
