Configuration d'IPv6 sur les serveurs VPS et les serveurs dédiés
Niveau : Débutant / Intermédiaire
Durée estimée : ~30 minutes
Objectif : Activer et configurer le réseau IPv6 sur un serveur dédié ou un VPS afin que le serveur soit joignable en IPv6 et que tous les services réseau fonctionnent correctement avec la nouvelle adresse.
Introduction
Votre serveur INTROSERV dispose probablement déjà d'une adresse IPv6 attribuée, mais elle n'est pas encore configurée. Dans ce guide de configuration du réseau IPv6 sur un VPS, vous allez activer IPv6 sur un serveur Linux, attribuer une adresse IPv6 statique, configurer la passerelle IPv6 sous Linux et vérifier la connectivité. Le guide couvre Ubuntu (Netplan), Debian (/etc/network/interfaces) et AlmaLinux (nmcli).
Qu'est-ce que l'IPv6 ?
IPv6 (Internet Protocol version 6) est la génération actuelle du protocole Internet, conçue pour remplacer IPv4. Les différences pratiques les plus importantes pour les administrateurs de serveurs :
- Une adresse IPv6 fait 128 bits et s'écrit sous la forme de huit groupes de quatre chiffres hexadécimaux séparés par des deux-points :
2001:db8:85a3::8a2e:370:7334. - Une Global Unicast Address (GUA) est l'équivalent IPv6 d'une adresse IPv4 publique : elle est routable sur Internet. Votre VPS en recevra une.
- Une adresse link-local est attribuée automatiquement à chaque interface compatible IPv6 (préfixe
fe80::/10). Elle n'est pas routable au-delà du segment local, mais elle est indispensable à la découverte de voisins (neighbor discovery) et aux protocoles de routage. - Un sous-réseau (préfixe IPv6) définit quelle partie de l'adresse identifie le réseau. Pour un VPS typique, vous verrez un préfixe
/64ou/128. - La passerelle par défaut (IPv6) est le routeur auquel votre serveur envoie les paquets lorsque la destination ne se trouve pas sur le lien local. Votre fournisseur vous communique cette adresse.
Prérequis
Avant de commencer, assurez-vous que les conditions suivantes sont remplies :
- Système d'exploitation : Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 ou AlmaLinux/RHEL 8/9/10
- Accès : accès sudo ou root au serveur via SSH
- Attribution IPv6 : une adresse IPv6, un préfixe de sous-réseau et une passerelle par défaut fournis par votre hébergeur. Retrouvez-les dans votre panneau de contrôle avant de commencer.
- Connaissances requises : maîtrise de la ligne de commande Linux et édition de base des fichiers de configuration
Chez INTROSERV, vous trouvez l'adresse IPv6, le préfixe et la passerelle attribués dans le Client Area : accédez à votre service, puis ouvrez l'onglet Network ou IP Addresses. Les offres VPS INTROSERV reçoivent généralement un préfixe /112, tandis que les serveurs dédiés reçoivent un préfixe /64. Si aucune adresse IPv6 n'est indiquée, contactez le support INTROSERV pour demander une attribution.
Étape 1 : Vérifier l'état actuel d'IPv6
Avant de modifier quoi que ce soit, regardez ce que le noyau connaît déjà.
Exécutez :
ip -6 addr show
Sortie attendue sur un serveur sur lequel aucune configuration IPv6 n'a encore été appliquée :
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
L'adresse fe80:: est l'adresse link-local, attribuée automatiquement par le noyau quelle que soit la configuration. L'absence d'entrée avec scope global signifie qu'aucune Global Unicast Address n'est encore configurée.
Vérifiez également si IPv6 est activé dans le noyau :
sudo sysctl net.ipv6.conf.all.disable_ipv6
Sous Debian 13, les utilisateurs standard n'ont pas /usr/sbin dans leur $PATH ; exécuter sysctl sans sudo renverra donc command not found. De plus, une installation minimale de Debian 13 n'inclut pas sudo par défaut. Vous devrez passer à l'utilisateur root (su -), installer sudo (apt install sudo) et ajouter votre utilisateur au groupe sudoers avant de poursuivre.
Sortie attendue :
net.ipv6.conf.all.disable_ipv6 = 0
La valeur 0 signifie qu'IPv6 est activé. Si vous voyez 1, IPv6 a été désactivé au niveau du noyau.
Pour le réactiver temporairement :
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
Pour rendre le changement permanent, recherchez dans /etc/sysctl.conf ou dans les fichiers de /etc/sysctl.d/ une ligne net.ipv6.conf.all.disable_ipv6 = 1, supprimez-la ou commentez-la, puis exécutez :
sudo sysctl -p
Étape 2 : Trouver le nom de l'interface
Vous avez besoin du nom exact de votre interface réseau publique avant de modifier un fichier de configuration.
Exécutez :
ip -br link
Sortie attendue :
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> eth0 UP 00:50:56:00:00:01 <BROADCAST,MULTICAST,UP,LOWER_UP>
L'interface à l'état UP avec une adresse MAC est votre interface principale. Les noms courants sont eth0, ens3, ens18, ens33, ens160 (fréquent sous VMware et avec les noyaux récents) et des variantes similaires ensXX/enpXsX. Dans toutes les étapes de configuration ci-dessous, utilisez le nom exact affiché par ip -br link.
Étape 3 : Configurer une adresse IPv6 statique
La méthode de configuration dépend de votre distribution. Ubuntu 18.04 et versions ultérieures utilisent Netplan ; Debian utilise /etc/network/interfaces par défaut ; AlmaLinux utilise NetworkManager ou les scripts d'interface situés dans /etc/sysconfig/network-scripts/.
Avant de continuer, rassemblez les valeurs suivantes depuis le panneau de contrôle de votre fournisseur :
| Champ | Exemple |
|---|---|
| Adresse IPv6 | 2001:db8:1000::10 |
| Longueur du préfixe | 64 |
| Passerelle par défaut (IPv6) | 2001:db8:1000::1 |
Remplacez ces valeurs d'exemple par les valeurs réelles dans toutes les étapes ci-dessous.
3.1 Ubuntu (Netplan)
Ubuntu utilise la configuration IPv6 de Netplan. Les fichiers de configuration se trouvent dans /etc/netplan/.
Commencez par lister le contenu du répertoire /etc/netplan/ pour trouver votre fichier de configuration :
ls /etc/netplan/
Un nom de fichier codé en dur comme 00-installer-config.yaml n'existe pas sur la plupart des VPS. Sur les images cloud-init, le fichier s'appelle généralement 50-cloud-init.yaml. Dans les étapes suivantes, utilisez le nom réel obtenu avec la commande précédente.
Sauvegardez le fichier existant (remplacez 50-cloud-init.yaml par le nom réel de votre fichier) :
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
Ouvrez le fichier :
sudo nano /etc/netplan/50-cloud-init.yaml
Ajoutez les blocs addresses et routes sous votre interface. Un fichier complet comprenant IPv4 (déjà configuré) et la nouvelle adresse IPv6 statique ressemble à ceci :
network: version: 2 ethernets: eth0: addresses: - 203.0.113.10/24 # existing IPv4 address - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 203.0.113.1 # existing IPv4 gateway - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 8.8.8.8 - 2001:4860:4860::8888 # Google public DNS over IPv6
Si votre serveur obtient son adresse IPv4 par DHCP (cas fréquent sur de nombreux VPS fraîchement déployés), votre fichier sera légèrement différent. Ne copiez pas aveuglément la configuration IPv4 statique ci-dessus, sous peine de perdre votre connexion IPv4 fonctionnelle. Voici un exemple avec dhcp4: true :
network: version: 2 ethernets: eth0: dhcp4: true addresses: - 2001:db8:1000::10/64 # new IPv6 address routes: - to: default via: 2001:db8:1000::1 # IPv6 default gateway nameservers: addresses: - 2001:4860:4860::8888 # Google public DNS over IPv6
Netplan utilise YAML. L'indentation est significative : utilisez des espaces, jamais de tabulations. Une seule ligne mal alignée peut faire échouer la configuration sans message d'erreur ou empêcher son application.
Testez la configuration avant de l'appliquer :
sudo netplan try
netplan try applique la configuration avec un minuteur de 120 secondes. Si vous ne confirmez pas, elle est automatiquement annulée : la commande peut donc être exécutée sans risque via SSH. Si la sortie est correcte, confirmez :
# Press Enter when prompted, or type: sudo netplan apply
Utilisez toujours netplan try plutôt que netplan apply lorsque vous travaillez via SSH. Si la nouvelle configuration interrompt votre connexion, l'annulation automatique vous permettra de vous reconnecter.
3.2 Debian (/etc/network/interfaces)
Sous Debian, la méthode classique pour ajouter IPv6 dans /etc/network/interfaces consiste à ajouter un second bloc iface pour la même interface, avec la famille inet6.
Faites d'abord une sauvegarde :
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
Ouvrez le fichier :
sudo nano /etc/network/interfaces
Votre bloc IPv4 existant ressemblera à ceci :
auto eth0 iface eth0 inet static address 203.0.113.10 netmask 255.255.255.0 gateway 203.0.113.1
Ajoutez le bloc IPv6 immédiatement en dessous :
iface eth0 inet6 static address 2001:db8:1000::10 netmask 64 gateway 2001:db8:1000::1
N'ajoutez pas de seconde ligne auto eth0. La directive auto unique active à la fois les blocs inet et inet6 à l'initialisation de l'interface.
Appliquez la nouvelle configuration sans redémarrage complet :
sudo ifdown eth0 && sudo ifup eth0
Exécuter ifdown eth0 via SSH coupe votre connexion. Lancez cette commande depuis la console série/web du fournisseur, ou utilisez ifreload -a. Notez que ifreload -a nécessite le paquet ifupdown2, qui n'est pas inclus dans l'installation de base de Debian. Installez-le avec sudo apt install ifupdown2 pour recharger les interfaces sans interrompre les sessions actives.
3.3 AlmaLinux / RHEL (nmcli)
Sous AlmaLinux et RHEL 8/9, NetworkManager est le gestionnaire par défaut. Utilisez nmcli pour ajouter l'adresse IPv6 sans modifier de fichiers à la main.
Trouvez le nom de votre connexion :
nmcli connection show
Sortie attendue :
NAME UUID TYPE DEVICE eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
Ajoutez l'adresse IPv6 statique :
sudo nmcli connection modify eth0 \ ipv6.method manual \ ipv6.addresses "2001:db8:1000::10/64" \ ipv6.gateway "2001:db8:1000::1"
Appliquez la configuration sans couper la connexion SSH :
sudo nmcli device reapply eth0
Étape 4 : Tester la connectivité IPv6
Une fois la configuration appliquée, vérifiez que l'adresse est attribuée et que le routage fonctionne.
4.1 Vérifier que l'adresse est attribuée
ip -6 addr show eth0
Sortie attendue :
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP inet6 2001:db8:1000::10/64 scope global valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe00:1/64 scope link valid_lft forever preferred_lft forever
Vous devriez voir votre Global Unicast Address avec scope global. L'adresse link-local (scope link) sera également présente.
4.2 Vérifier la passerelle par défaut
ip -6 route show
Sortie attendue :
2001:db8:1000::/64 dev eth0 proto kernel metric 100 default via 2001:db8:1000::1 dev eth0 proto static metric 100
La ligne default via confirme que votre passerelle IPv6 par défaut est correctement configurée.
4.3 Tester la connectivité IPv6
Pour tester la connectivité IPv6 vers un hôte public connu, utilisez ping6 (ou ping -6 sur les systèmes récents) :
ping6 -c 4 2606:4700:4700::1111
Sortie attendue :
PING 2606:4700:4700::1111(2606:4700:4700::1111) 56 data bytes 64 bytes from 2606:4700:4700::1111: icmp_seq=1 ttl=57 time=1.23 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=2 ttl=57 time=1.19 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=3 ttl=57 time=1.21 ms 64 bytes from 2606:4700:4700::1111: icmp_seq=4 ttl=57 time=1.20 ms
Si ping6 échoue alors que l'adresse est attribuée, le problème vient presque toujours de l'une de ces trois causes : la passerelle par défaut est incorrecte, le pare-feu de votre fournisseur bloque ICMPv6, ou l'attribution IPv6 n'a pas été activée de leur côté.
Vous pouvez aussi tester la connectivité depuis l'extérieur avec un outil public tel que https://ipv6-test.com. Saisissez l'adresse IPv6 de votre serveur et lancez un test d'accessibilité.
4.4 Vérifier la résolution DNS via IPv6
Commencez par vous assurer que l'utilitaire dig est installé.
Sous AlmaLinux 10, dig n'est pas inclus dans l'installation de base :
sudo dnf install -y bind-utils
Sur les images Debian minimales, le paquet peut également être absent :
sudo apt install -y dnsutils
Vérifiez que votre serveur peut résoudre des noms d'hôte via le serveur DNS IPv6 :
dig AAAA google.com @2001:4860:4860::8888
Une réponse réussie comprend une ANSWER SECTION contenant un ou plusieurs enregistrements AAAA.
Étape 5 : Adapter le pare-feu pour IPv6
Si votre serveur exécute un pare-feu logiciel, vous devez autoriser explicitement le trafic IPv6. Par défaut, de nombreuses configurations de pare-feu ne couvrent que IPv4.
Chez INTROSERV, tous les ports sont ouverts par défaut au niveau du réseau pour les VPS et les serveurs dédiés, à quelques exceptions près (les ports de messagerie 25, 465, 587, 2525 et le port LDAP 389 sont filtrés afin de protéger la réputation des adresses IP). Vous n'avez donc pas besoin d'ouvrir de ports dans un pare-feu côté fournisseur pour le trafic web standard ou SSH. Vous restez responsable du pare-feu au niveau du système d'exploitation de votre serveur. Consultez le guide Sécurité réseau et filtrage des ports pour plus de détails.
Ubuntu/Debian (UFW)
Sous Debian, UFW n'est pas inclus dans l'installation de base. Installez-le d'abord si nécessaire :
sudo apt install -y ufw
UFW applique les règles à IPv4 et à IPv6 lorsque IPV6=yes est défini dans sa configuration. Vérifiez :
grep IPV6 /etc/default/ufw
Sortie attendue :
IPV6=yes
Si la valeur est IPV6=no, ouvrez le fichier et modifiez-la :
sudo nano /etc/default/ufw
Rechargez ensuite UFW :
sudo ufw reload
Si UFW n'a pas encore été activé, ufw reload renverra Firewall not enabled. Ce n'est pas un problème : les règles seront appliquées automatiquement lorsque vous activerez le pare-feu avec sudo ufw enable.
Vos règles ufw allow existantes (SSH, HTTP, HTTPS) s'appliqueront désormais aussi à IPv6.
AlmaLinux / RHEL (firewalld)
firewalld gère IPv6 nativement via son modèle de zones. Si votre interface se trouve dans la bonne zone, le trafic IPv6 est géré automatiquement. Vérifiez :
sudo firewall-cmd --get-active-zones
Pour des services comme SSH et HTTPS :
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Si un service est déjà autorisé dans la zone, firewall-cmd affiche Warning: ALREADY_ENABLED. C'est normal et ce n'est pas une erreur. Sous AlmaLinux, ssh et dhcpv6-client sont autorisés par défaut dans la zone public.
ICMPv6 est indispensable au bon fonctionnement d'IPv6. Il gère la découverte de voisins, la découverte du Path MTU et les annonces de routeur (router advertisements), soit les équivalents IPv6 d'ARP. Ne bloquez pas ICMPv6 entièrement. La plupart des outils de pare-feu l'autorisent par défaut ; si vous écrivez des règles nftables ou ip6tables brutes, autorisez explicitement icmpv6.
Retour arrière
Ubuntu (Netplan)
Restaurez la sauvegarde et appliquez-la (remplacez 50-cloud-init.yaml par le nom réel de votre fichier) :
sudo cp /etc/netplan/50-cloud-init.yaml.bak /etc/netplan/50-cloud-init.yaml sudo netplan apply
Debian (/etc/network/interfaces)
Restaurez la sauvegarde :
sudo cp /etc/network/interfaces.bak /etc/network/interfaces sudo ifdown eth0 && sudo ifup eth0
AlmaLinux (nmcli)
Supprimez les paramètres IPv6 de la connexion :
sudo nmcli connection modify eth0 ipv6.method auto sudo nmcli connection modify eth0 ipv6.addresses "" ipv6.gateway "" sudo nmcli connection modify eth0 ipv6.method ignore sudo nmcli device reapply eth0
NetworkManager n'autorise pas à définir ipv6.method ignore tant que des ipv6.addresses statiques existent. Définir d'abord la méthode sur auto permet d'effacer correctement les adresses.
Désactiver IPv6 sur l'ensemble du système (urgence)
Si vous devez désactiver complètement IPv6 sur toutes les interfaces :
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Pour rendre le changement persistant, ajoutez ce qui suit dans /etc/sysctl.d/99-disable-ipv6.conf :
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
Exécutez ensuite sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf.
Dépannage
Ping6 échoue immédiatement avec « Network unreachable »
La passerelle par défaut (IPv6) est absente ou incorrecte. Exécutez ip -6 route show et vérifiez que l'entrée default via existe et correspond à la passerelle indiquée dans le panneau de votre fournisseur.
L'adresse apparaît, mais scope est uniquement link, pas global
L'adresse a été ajoutée à la mauvaise interface, ou le fichier de configuration contient une faute de frappe dans l'adresse ou le préfixe. Relisez attentivement l'attribution de votre fournisseur.
Netplan apply renvoie une erreur d'analyse
L'indentation YAML est incorrecte. Exécutez cat -A /etc/netplan/50-cloud-init.yaml (ou avec le nom réel de votre fichier) pour révéler les tabulations (affichées sous la forme ^I) et remplacez-les par des espaces.
La connexion SSH tombe après ifdown sous Debian
Utilisez la console web du fournisseur ou un accès VNC/IPMI pour reprendre la main. Restaurez /etc/network/interfaces depuis la sauvegarde et exécutez ifup eth0.
UFW bloque toujours IPv6 après avoir défini IPV6=yes
Les règles ajoutées avant la modification n'ont été enregistrées que pour IPv4. Exécutez sudo ufw reset, puis ajoutez de nouveau vos règles : elles s'appliqueront alors aux deux familles.
La commande sudo ufw reset est destructive. Elle rétablit toutes les règles du pare-feu à leurs valeurs par défaut. Assurez-vous de savoir quels ports autoriser de nouveau (comme SSH) avant de l'exécuter, afin de ne pas vous enfermer dehors.
Conclusion
Voilà, c'est terminé. Votre serveur INTROSERV dispose désormais d'une adresse IPv6 fonctionnelle, d'une passerelle par défaut correctement configurée et d'un pare-feu couvrant les deux familles de protocoles. Prochaines étapes : demandez un enregistrement PTR via le Client Area d'INTROSERV et mettez à jour vos hôtes virtuels Nginx ou Apache afin qu'ils écoutent sur la nouvelle adresse IPv6.
Version du document : 1.0
Dernière mise à jour : mai 2026
Responsable : Équipe de documentation technique