IPv6 sur VPS : configuration et bonnes pratiques

IPv6 sur VPS : configuration et bonnes pratiques

Activez et configurez IPv6 proprement sur votre VPS Linux. Adressage, firewall, DNS, services à jour. IPv6 n'est plus optionnel en 2026 : Cloudflare, Google, Apple le privilégient et certains réseaux mobiles sont déjà v6-only.

Introduction

IPv4 est saturé depuis longtemps. IPv6 apporte :

  • Un espace d'adressage virtuellement infini (340 undécillions d'IPs)
  • Pas de NAT (chaque service public a sa propre IP)
  • Meilleure efficacité réseau (header simplifié, autoconfig)
  • Connectivité native vers les ~40% du trafic mondial déjà en IPv6

En 2026, ne pas supporter IPv6 c'est exclure une partie de vos utilisateurs. Heureusement c'est simple à configurer.

Prérequis

  • VPS Linux avec IPv6 alloué par l'hébergeur (Netrix VeryCloud fournit du /64 par défaut)
  • Accès root
  • Notes : votre IPv6 et le gateway IPv6 fournis par VeryCloud

Étape 1 : Vérifier l'IPv6 actuel

ip -6 addr show
ip -6 route show
ping6 -c 4 google.com

Si vous voyez une adresse 2a0c:... ou 2001:... (autres que fe80:: link-local), IPv6 est partiellement actif. Si pas de réponse au ping6, il manque la config gateway.

Étape 2 : Configuration statique IPv6 (Netplan - Ubuntu/Debian récents)

sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: false
      addresses:
        - 2a0c:b641:abcd::100/64
      routes:
        - to: ::/0
          via: 2a0c:b641:abcd::1
      nameservers:
        addresses:
          - 2606:4700:4700::1111
          - 2606:4700:4700::1001
          - 2001:4860:4860::8888

Appliquez :

sudo netplan apply

Vérifiez :

ip -6 addr show eth0
ping6 -c 4 2606:4700:4700::1111
ping6 -c 4 ipv6.google.com

Étape 3 : Configuration via ifupdown (Debian classique)

sudo nano /etc/network/interfaces
iface eth0 inet6 static
    address 2a0c:b641:abcd::100
    netmask 64
    gateway 2a0c:b641:abcd::1
    dns-nameservers 2606:4700:4700::1111 2606:4700:4700::1001
sudo ifdown eth0 && sudo ifup eth0

Étape 4 : Tester la connectivité IPv6

Tests basiques

# DNS
host google.com
host -t AAAA google.com

# Ping
ping6 -c 4 ipv6.google.com

# HTTP via IPv6
curl -6 https://ifconfig.co
# Doit retourner votre adresse IPv6

Test complet en ligne

Visitez https://test-ipv6.com depuis votre VPS (en SSH avec curl et links) ou depuis votre navigateur : vous devriez avoir 10/10.

Étape 5 : Configurer le firewall UFW pour IPv6

UFW gère IPv4 et IPv6 ensemble par défaut. Vérifiez :

sudo nano /etc/default/ufw
IPV6=yes
sudo ufw reload
sudo ufw status verbose

Vous voyez deux entrées par règle (v4 et v6).

Règles spécifiques IPv6

# Autoriser une IP IPv6 spécifique
sudo ufw allow from 2a0c:b641:abcd::100 to any port 22

# Bloquer une plage IPv6
sudo ufw deny from 2a01:cb05::/32

# Allow HTTPS depuis n'importe où (IPv4 + IPv6)
sudo ufw allow 443/tcp

Étape 6 : Configurer le firewall iptables (si pas UFW)

sudo apt install -y iptables-persistent

Règles IPv6 minimales

# Politique par défaut : DROP
sudo ip6tables -P INPUT DROP
sudo ip6tables -P FORWARD DROP
sudo ip6tables -P OUTPUT ACCEPT

# Loopback
sudo ip6tables -A INPUT -i lo -j ACCEPT

# Sessions établies
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMPv6 (ESSENTIEL, ne pas bloquer !)
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT

# SSH
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP/HTTPS
sudo ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

# Sauvegarder
sudo ip6tables-save | sudo tee /etc/iptables/rules.v6

⚠️ Ne bloquez JAMAIS tout ICMPv6 : il sert à la découverte voisinage (équivalent ARP en IPv4), à la PMTU discovery, etc. Bloquer ICMPv6 casse IPv6.

Étape 7 : Faire écouter vos services en IPv6

Nginx

sudo nano /etc/nginx/sites-available/site.conf
server {
    listen 80;
    listen [::]:80;
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name votre-domaine.fr;
    # ...
}
sudo nginx -t && sudo systemctl reload nginx

Vérifiez :

ss -tlnp | grep ':80\|:443'
# Devrait montrer des lignes avec :::80 et :::443 (= écoute IPv6)

Apache

sudo nano /etc/apache2/ports.conf
Listen 80
Listen 443
# Apache écoute par défaut sur IPv4 + IPv6 (configurer Listen 0.0.0.0:80 force v4 only)

SSH

sudo nano /etc/ssh/sshd_config
ListenAddress 0.0.0.0
ListenAddress ::

Ou commentez les deux pour écouter sur tout.

Postfix

sudo postconf -e "inet_protocols = all"
sudo systemctl restart postfix

Étape 8 : DNS - configurer les enregistrements AAAA

Pour que votre site soit accessible en IPv6, ajoutez des enregistrements AAAA chez votre registrar/DNS.

Chez Cloudflare, Gandi, OVH, etc. :

TypeNameValue
Avotre-domaine82.26.157.10
AAAAvotre-domaine2a0c:b641🔡:100
AAAAwww2a0c:b641🔡:100
AAAAmail2a0c:b641🔡:101

Vérifiez la propagation :

dig AAAA votre-domaine.fr
host -t AAAA votre-domaine.fr

Étape 9 : reverse DNS (PTR) IPv6

Le reverse DNS est crucial pour les serveurs mail. Sur l'espace Netrix VeryCloud :

  1. Section rDNS / Reverse DNS
  2. Sélectionnez votre IPv6
  3. Entrez : mail.votre-domaine.fr

Testez :

host 2a0c:b641:abcd::100
# Doit retourner : mail.votre-domaine.fr

Étape 10 : Désactiver IPv6 (cas inverse)

Parfois on veut désactiver IPv6 (compatibilité, debug). Temporaire :

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1

Permanent :

echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.d/99-disable-ipv6.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.d/99-disable-ipv6.conf
sudo sysctl --system

Étape 11 : SLAAC vs DHCPv6

Deux modes d'autoconfig IPv6 :

  • SLAAC (StateLess Address AutoConfiguration) : le client génère son IP à partir du préfixe annoncé par le routeur (RA). C'est le mode par défaut sur VPS.
  • DHCPv6 : un serveur DHCP distribue les IPs (plus rare sur VPS, plus courant en entreprise).

Sur les VPS VeryCloud, SLAAC est généralement actif si vous laissez dhcp6: false mais accept-ra: yes dans Netplan :

network:
  ethernets:
    eth0:
      accept-ra: true

Étape 12 : Privacy Extensions (RFC 4941)

Par défaut, votre IPv6 SLAAC est dérivée de la MAC → traçable. Sur un serveur, ce n'est pas un problème (IP statique de toute façon). Sur un client (laptop, mobile), activez les privacy extensions :

sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2
sudo sysctl -w net.ipv6.conf.default.use_tempaddr=2

Étape 13 : Monitoring IPv6

Trafic IPv6

sudo apt install -y iftop
sudo iftop -i eth0 -F 2a0c:b641:abcd::/64

Sessions IPv6 actives

ss -6 -tn

Vérifier les serveurs DNS IPv6

cat /etc/resolv.conf
nslookup google.com 2606:4700:4700::1111

Dépannage

ping6 timeout vers internet

Le gateway est probablement faux. Vérifiez :

ip -6 route show

Vous devez avoir une route default ::/0 via <gateway>. Comparez avec ce que VeryCloud vous a fourni.

Site accessible en IPv4 mais pas IPv6

Le serveur web n'écoute peut-être pas sur IPv6 :

ss -tlnp | grep 443

Vous devez voir LISTEN 0 ... :::443 ... (avec :::). Si seulement 0.0.0.0:443, le service est IPv4-only. Adaptez la config (étape 7).

ICMPv6 bloqué

Test :

ping6 fe80::1%eth0    # link-local gateway

Si pas de réponse, ICMPv6 est bloqué dans iptables. Vérifiez :

sudo ip6tables -L INPUT -n -v | grep icmpv6

MTU IPv6 trop élevé

Sur des liens encapsulés (VPN, etc.), réduisez la MTU :

sudo ip link set eth0 mtu 1480

Pour persister, modifiez Netplan.

"No IPv6 connectivity"

Souvent c'est un problème de RA non reçu :

sudo sysctl -w net.ipv6.conf.eth0.accept_ra=2
sudo rdisc6 eth0

rdisc6 (paquet ndisc6) montre si le routeur annonce bien des RAs.

Commandes utiles

# IPs IPv6
ip -6 addr show

# Routes IPv6
ip -6 route show

# Neighbor table (équivalent ARP)
ip -6 neigh show

# Ping avec interface spécifique
ping6 -I eth0 ipv6.google.com

# Test port en IPv6
nc -6 -zv 2606:4700:4700::1111 80

# Voir les routes vers une IP
ip -6 route get 2606:4700:4700::1111

# Traceroute IPv6
traceroute6 ipv6.google.com

# Sniffer paquets IPv6
sudo tcpdump -i eth0 ip6

# Stats interface
ip -6 -s link show eth0

Conclusion

Avec IPv6 configuré :

  • Votre site est accessible aux ~40% du trafic IPv6 mondial
  • Vous évitez NAT/CGN aux endroits qui le supportent
  • Vous êtes prêt pour les réseaux mobiles IPv6-only (Verizon, T-Mobile, Free Mobile)
  • Vos clients en IPv6 ont une latence légèrement meilleure (pas de NAT64)

Pour aller plus loin :

  • Configurez DNS64 + NAT64 si vous devez accéder à des services IPv4-only depuis un réseau IPv6 pur
  • Activez MPTCP IPv6 pour combiner WiFi + cellulaire
  • Mettez en place Happy Eyeballs côté client pour préférer IPv6 quand dispo

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres