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. :

Type Name Value
A votre-domaine 82.26.157.10
AAAA votre-domaine 2a0c:b641:abcd::100
AAAA www 2a0c:b641:abcd::100
AAAA mail 2a0c:b641:abcd::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

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members