infra / reseaux-tcp-ip
IPv6
Explication
Ce que vous allez apprendre
- Comprendre pourquoi IPv6 existe et en quoi son espace d'adressage diffère radicalement d'IPv4
- Lire et compresser une adresse IPv6 (suppression des zéros, notation
::) - Reconnaître les adresses spéciales IPv6 (loopback, link-local, ULA, multicast)
- Comprendre SLAAC, l'auto-configuration d'adresse sans serveur DHCP centralisé
- Configurer et sécuriser une machine en environnement dual-stack (IPv4 + IPv6 actifs)
Dans quel contexte ?
Un administrateur système migre un serveur vers un hébergeur qui active IPv6 par défaut sur toutes les nouvelles instances. Le serveur se retrouve avec une adresse globale IPv6 routable en plus de son IPv4 habituelle, mais les règles de pare-feu existantes ne couvrent que iptables (IPv4). Sans y penser, le serveur expose ses services sans aucune protection sur sa nouvelle interface IPv6 — un oubli de sécurité fréquent lors de l'activation d'IPv6.
Le problème qu'IPv6 a été conçu pour résoudre
IPv4 offre environ 4,3 milliards d'adresses. Cela semblait immense dans les années 1980, mais s'est révélé largement insuffisant face à l'explosion du nombre d'appareils connectés (ordinateurs, téléphones, objets connectés). IPv6, avec ses 128 bits d'adressage, offre un espace tellement vaste qu'il est pratiquement impossible à épuiser dans un avenir prévisible — c'est la raison d'être fondamentale de son existence, bien avant toute autre amélioration technique.
| Préfixe IPv6 | Équivalent IPv4 | Rôle |
|---|---|---|
::1 | 127.0.0.1 | Loopback |
fe80::/10 | (pas d'équivalent direct) | Link-local, auto-attribuée |
fc00::/7 | 10.0.0.0/8, 192.168.0.0/16... | ULA, adressage privé |
2000::/3 | IP publique | Espace global routable |
Prérequis
Cette leçon suppose que tu es à l'aise avec l'adressage IPv4 et le CIDR (leçons 2-3) : IPv6 reprend les mêmes principes de préfixe/masque, appliqués à des adresses beaucoup plus longues.
Pourquoi la notation semble plus complexe
Une adresse IPv6 s'écrit en hexadécimal plutôt qu'en décimal, et sur 8 groupes plutôt que 4 : cela découle directement d'avoir 128 bits à représenter au lieu de 32. Les règles de compression (suppression des zéros, ::) existent uniquement pour rendre cette écriture plus lisible au quotidien — sans elles, chaque adresse serait beaucoup plus longue à taper et à mémoriser.
SLAAC : une machine peut se configurer toute seule
Une des innovations importantes d'IPv6 est de permettre à un hôte de générer lui-même une adresse valide, à partir des informations annoncées par le routeur local, sans dépendre d'un serveur DHCP centralisé. C'est un changement de philosophie qui simplifie le déploiement de grands réseaux, même si DHCPv6 reste disponible pour les cas où un contrôle plus centralisé est nécessaire.
Pas de broadcast, mais pas d'oubli de sécurité pour autant
IPv6 remplace entièrement le broadcast par le multicast, plus ciblé.
Piège fréquent
IPv6 n'est pas "plus sûr par nature" : un réseau en dual-stack (IPv4 et IPv6 actifs simultanément) doit sécuriser les deux piles avec la même rigueur. Un pare-feu configuré uniquement avec iptables (IPv4) laisse l'interface IPv6 totalement ouverte — pense à couvrir les deux avec ip6tables ou une table nftables de type inet.
Commandes & code
IPv6
# IPv4 : 32 bits, ~4.3 milliards d'adresses (épuisées) -> IPv6 : 128 bits, quasi illimité
# Notation : 8 groupes de 4 chiffres hexadécimaux séparés par ":"
2001:0db8:0000:0000:0000:ff00:0042:8329
# Règles de compression (raccourcir l'écriture)
# 1. Supprimer les zéros non significatifs de chaque groupe
2001:db8:0:0:0:ff00:42:8329
# 2. Remplacer UNE SEULE séquence de groupes à zéro consécutifs par "::"
2001:db8::ff00:42:8329
# Adresses spéciales IPv6
::1 # loopback (équivalent de 127.0.0.1)
:: # adresse non spécifiée (équivalent de 0.0.0.0)
fe80::/10 # link-local, auto-attribuée sur chaque interface
fc00::/7 # ULA (Unique Local Address), équivalent des plages privées RFC1918
2000::/3 # espace d'adressage global (routable sur Internet)
ff00::/8 # multicast (IPv6 n'a PAS de broadcast, remplacé par le multicast)# Voir les adresses IPv6 de la machine
ip -6 addr show
# inet6 fe80::a00:27ff:fe4e:66a1/64 scope link <- link-local, générée automatiquement
# inet6 2001:db8::10/64 scope global <- adresse globale routable
ip -6 route show # table de routage IPv6
ping6 -c4 2001:4860:4860::8888 # ping vers le DNS public IPv6 de Google
ping -6 exemple.com # ping en résolvant automatiquement en IPv6
# Configuration : SLAAC (auto-configuration sans état) vs DHCPv6 (avec état)
# SLAAC : le routeur annonce le préfixe réseau (Router Advertisement), l'hôte génère seul sa propre adresse
# DHCPv6 : comme DHCP en IPv4, un serveur attribue explicitement les adresses
# Vérifier la connectivité et les annonces de routeur (RA)
rdisc6 eth0 # écoute les Router Advertisements sur l'interface
# Dual-stack : faire coexister IPv4 et IPv6 (situation la plus courante aujourd'hui)
ss -tulpn -6 # sockets en écoute spécifiquement en IPv6
ss -tulpn -4 # équivalent en IPv4
# Serveur qui écoute sur les deux piles à la fois (nginx, exemple)
# listen 80;
# listen [::]:80;
# DNS avec IPv6
dig exemple.com AAAA # enregistrement IPv6 (équivalent du A en IPv4)
# Pare-feu : ne pas oublier ip6tables / nftables inet (couvre les deux familles) !
sudo nft add rule inet filter input ip6 saddr fe80::/10 acceptRésumé
- IPv6 utilise 128 bits ;
::compresse UNE séquence de groupes à zéro, jamais plus d'une fois dans une même adresse. - SLAAC permet à un hôte de s'auto-configurer sans DHCP, via les annonces de routeur (Router Advertisement).
- En environnement dual-stack, penser à sécuriser IPv6 avec la même rigueur qu'IPv4 (
nftablestableinetcouvre les deux).
Exercices pratiques
Mission : combler une brèche IPv6 sur un serveur dual-stack
Objectif : Identifier une exposition de service non intentionnelle via IPv6 sur un serveur pourtant protégé en IPv4.
Contexte
Ce serveur a une règle iptables (IPv4) bloquant le port 5432 (PostgreSQL) en entrée depuis l'extérieur. Il a été migré récemment vers un hébergeur qui active IPv6 par défaut, et possède désormais une adresse IPv6 globale routable en plus de son IPv4 habituelle. Aucune règle ip6tables équivalente n'a été configurée.