L'IPv6 a cessé d'être un sujet d'avenir. Une part importante du trafic mobile en Amérique du Nord est native IPv6, plusieurs grands fournisseurs de messagerie acceptent mieux le courriel émis en IPv6 correctement configuré, et un service joignable dans les deux familles réduit sa dépendance aux couches de traduction. Sur nos VPS, chaque VM reçoit quatre adresses IPv6 en plus de son IPv4.
Ce guide couvre la configuration statique sous Ubuntu 24.04 avec Netplan, la publication DNS, le DNS inverse et le filtrage.
1. Faire l'état des lieux
ip -6 addr show
ip -6 route show
ping6 -c3 2620:fe::fe
Trois cas se présentent. Si une adresse globale (commençant par 2 ou
3) est présente et que le ping répond, tout est déjà en place. Si
vous ne voyez qu'une adresse en fe80::, seul le lien-local existe. Si
l'adresse est là mais que le ping échoue, la route par défaut manque.
2. Configurer l'adresse avec Netplan
Ubuntu Server utilise Netplan. Les fichiers vivent dans
/etc/netplan/ ; le YAML y est sensible à l'indentation, qui doit
être faite d'espaces.
sudo tee /etc/netplan/60-ipv6.yaml <<'EOF'
network:
version: 2
ethernets:
ens3:
dhcp4: true
accept-ra: false
addresses:
- "2602:xxxx:xxxx:1::10/64"
routes:
- to: "::/0"
via: "2602:xxxx:xxxx:1::1"
on-link: true
nameservers:
addresses: [2620:fe::fe, 2606:4700:4700::1111, 9.9.9.9]
EOF
sudo chmod 600 /etc/netplan/60-ipv6.yaml
sudo netplan try
netplan try applique la configuration et la annule
automatiquement au bout de 120 secondes si vous ne confirmez pas. Sur
une machine distante, c'est le filet qui vous évite de perdre l'accès sur une
faute de frappe. Confirmez avec Entrée, puis sudo netplan apply.
Adressage statique ou autoconfiguration ? Si votre hébergeur
annonce le préfixe par Router Advertisement, laissez
accept-ra: true et retirez le bloc addresses : la VM
se configure seule. Le mélange des deux, RA actif et adresse statique, produit des routes par défaut concurrentes et des pertes intermittentes
difficiles à diagnostiquer.
3. Vérifier la connectivité
ip -6 addr show ens3
ip -6 route get 2620:fe::fe
ping6 -c3 2606:4700:4700::1111
traceroute6 -n ipv6.google.com
curl -6 -s https://ifconfig.co
curl -6 doit renvoyer exactement l'adresse que vous avez
configurée. Une adresse différente signale une IPv6 temporaire générée par les
extensions de confidentialité, acceptable sur un poste, gênant sur un serveur
dont le DNS inverse doit correspondre.
# fixer l'adresse source sortante
sudo tee /etc/sysctl.d/99-ipv6-serveur.conf <<'EOF'
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
EOF
sudo sysctl --system
4. Publier l'enregistrement AAAA
Un enregistrement AAAA suffit à rendre le service joignable en IPv6. Gardez la même valeur de TTL que le A pour éviter des comportements asymétriques pendant une migration.
exemple.com. 300 IN A 198.51.100.42
exemple.com. 300 IN AAAA 2602:xxxx:xxxx:1::10
Ne publiez l'AAAA qu'une fois le service réellement joignable en
IPv6. Un client en double pile privilégie l'IPv6 : si le port n'écoute
qu'en IPv4, l'utilisateur attend l'expiration du délai avant le repli. Pour un
serveur web, contrôlez la présence de listen [::]:443 ssl; dans
Nginx ; pour tout service, sudo ss -tulpen | grep ':::'.
5. Configurer le DNS inverse (PTR)
L'enregistrement PTR associe une adresse IP à un nom. Il n'est pas géré chez votre registraire mais chez le détenteur du préfixe, donc chez votre hébergeur, via sa console. Chez FFxF, le reverse DNS est configurable sur chaque adresse attribuée à la VM.
Il est indispensable pour l'envoi de courriel : la plupart des grands destinataires rejettent ou classent en indésirable un message venu d'une adresse IPv6 sans PTR, ou dont le PTR ne « boucle » pas.
dig -x 2602:xxxx:xxxx:1::10 +short
# doit renvoyer : mail.exemple.com.
dig +short mail.exemple.com AAAA
# doit renvoyer : 2602:xxxx:xxxx:1::10
Les deux résolutions doivent se répondre l'une à l'autre. Un PTR qui pointe vers un nom sans AAAA correspondant est traité comme une absence de PTR.
6. Filtrer l'IPv6
L'erreur classique : un pare-feu bien réglé en IPv4, et rien en IPv6. Les adresses IPv6 des serveurs sont balayées comme les autres, les préfixes sont publics et les plages actives se déduisent du DNS.
grep IPV6 /etc/default/ufw # doit afficher IPV6=yes
sudo ufw status verbose # les règles doivent apparaître en (v6)
Si IPV6=no, corrigez le fichier puis
sudo ufw disable && sudo ufw enable. Les règles écrites
ensuite couvrent les deux familles automatiquement.
Ne bloquez pas tout l'ICMPv6. Contrairement à l'IPv4, le protocole en dépend pour fonctionner : découverte des voisins, découverte du MTU de chemin. Filtrer l'ICMPv6 sans discernement provoque des connexions qui s'établissent puis se figent sur les gros transferts. UFW autorise le nécessaire par défaut ; ne le retirez pas.
7. Faire écouter les services
Une adresse configurée ne sert à rien si les démons n'écoutent qu'en IPv4.
sudo ss -tulpen | grep -E ':::|\[::\]'
- Nginx : ajoutez
listen [::]:80;etlisten [::]:443 ssl;. - OpenSSH : écoute sur les deux familles par défaut, sauf si
ListenAddressrestreint. - Postfix :
inet_protocols = all. - Docker : nécessite
"ipv6": trueet un préfixe dédié dansdaemon.jsonpour donner de l'IPv6 aux conteneurs.
Checklist
- Adresse globale et route par défaut présentes (
ip -6 route). ping6etcurl -6sortent avec l'adresse attendue.- AAAA publié seulement après vérification de l'écoute du service.
- PTR configuré et cohérent avec l'AAAA.
- Pare-feu actif en v6, ICMPv6 préservé.
- Test final sur test-ipv6.com depuis un client, et depuis le serveur.