Tutoriel Linux

IPv6 sur Debian : quand le désactiver, et surtout quoi vérifier avant

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Désactiver IPv6 sur Debian, ça peut dépanner un serveur qui résout mal ses noms DNS, une application ancienne qui écoute sur la mauvaise pile, ou un routage provider mal configuré. Mais je ne le ferais pas comme premier réflexe. Si le problème vient d’un DNS cassé ou d’une route absente, couper IPv6 masque seulement le vrai souci.

Dans cet article, on va d’abord vérifier si IPv6 est vraiment en cause, tester le routage et la résolution DNS, puis voir comment le désactiver temporairement ou durablement en gardant un chemin de retour.

Tux vérifiant le routage IPv6 sur un serveur Debian avant désactivation
Avant de désactiver IPv6 sur Debian, il faut vérifier DNS, routage et services exposés.

Avant de couper IPv6, vérifiez si la machine l’utilise vraiment

Commencez par regarder les adresses et la route IPv6. Sur Debian, la commande la plus lisible reste ip :

ip -6 addr show

ip -6 route show

Si vous voyez une adresse globale, souvent en 2xxx: ou 3xxx:, et une route par défaut vers ::/0, la machine peut probablement sortir en IPv6. Si vous ne voyez que du fe80::, vous avez surtout des adresses locales de lien. Ce n’est pas la même situation.

Vérifiez ensuite ce que le système choisit quand il résout un nom :

getent ahosts debian.org

resolvectl query debian.org

Si les réponses IPv6 arrivent en premier mais que la connectivité IPv6 ne suit pas, vous pouvez obtenir des lenteurs, des timeouts ou des erreurs qui ressemblent à un problème applicatif. Dans ce cas, le guide sur le cache DNS sous Linux peut aussi aider à séparer cache local, résolution et vraie connectivité.

Tester IPv4 et IPv6 séparément

Avant de changer une configuration réseau, faites un test simple en forçant chaque pile :

ping -4 -c 3 debian.org

ping -6 -c 3 debian.org

Avec curl, c’est encore plus parlant pour une application web :

curl -4 -I https://www.debian.org/

curl -6 -I https://www.debian.org/

Si IPv4 répond vite et qu’IPv6 bloque, vous avez un signal utile. Regardez aussi l’interface qui porte la route, surtout sur un serveur avec plusieurs cartes réseau :

ip route get 1.1.1.1

ip -6 route get 2606:4700:4700::1111

Sur un serveur distant, ne touchez pas encore à la configuration si vous n’avez pas de console de secours, KVM, IPMI, accès provider, ou au moins une session SSH ouverte en parallèle. Un changement réseau qui coupe votre seule session, ça arrive vite.

Désactiver IPv6 temporairement avec sysctl

Pour un test court, utilisez sysctl. Cela permet de voir si le symptôme disparaît sans modifier tout de suite les fichiers de configuration.

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

Sur certaines machines, je vérifie aussi l’interface concernée. Remplacez eth0 par le nom réel de votre interface, visible avec ip link :

ip link

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

Relancez ensuite vos tests :

ip -6 addr show

ping -6 -c 3 debian.org

curl -6 -I https://www.debian.org/

Pour revenir en arrière immédiatement :

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

Je préfère toujours cette étape temporaire avant de rendre le changement permanent. Elle évite de redémarrer un serveur sur une configuration qu’on n’a pas vraiment validée.

Rendre la désactivation persistante sur Debian

Si le test confirme que votre serveur doit vraiment fonctionner sans IPv6, créez un fichier dédié dans /etc/sysctl.d. Évitez de modifier un fichier système au hasard sans sauvegarde.

printf '%s\n' \
'net.ipv6.conf.all.disable_ipv6 = 1' \
'net.ipv6.conf.default.disable_ipv6 = 1' \
| sudo tee /etc/sysctl.d/99-disable-ipv6.conf

Appliquez ensuite les paramètres :

sudo sysctl --system

Vérifiez le résultat :

sysctl net.ipv6.conf.all.disable_ipv6
sysctl net.ipv6.conf.default.disable_ipv6

ip -6 addr show
ip -6 route show

Si vous voulez revenir à l’état précédent, supprimez le fichier, remettez les valeurs à 0, puis rechargez sysctl :

sudo rm /etc/sysctl.d/99-disable-ipv6.conf
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0
sudo sysctl --system

Sur un serveur avec IP fixe, vérifiez aussi la configuration réseau de Debian. Une route, une passerelle ou un DNS mal renseigné peut donner l’impression qu’IPv6 est le problème alors que la configuration de base est simplement incomplète. J’ai détaillé cette partie dans l’article sur l’adresse IP fixe sous Debian.

Contrôler les services après le changement

Après une modification IPv6, ne vous contentez pas d’un ping. Vérifiez les services qui écoutent sur le serveur :

sudo ss -ltnp

systemctl --failed

journalctl -p warning..alert -b --no-pager

Regardez en particulier les services qui écoutaient sur [::], les reverse proxies, les agents de supervision, les VPN, les conteneurs et les pare-feu. Pour ce contrôle, l’article sur les ports ouverts sous Linux avec ss et netstat est un bon complément.

Si un service ne repart pas proprement, utilisez les logs avant de retoucher la pile réseau :

journalctl -u nom-du-service -b --no-pager

journalctl -b -p warning..alert --no-pager

Le guide sur journalctl et les logs du dernier démarrage vous aidera à isoler ce qui a changé depuis le dernier boot.

Quand je garderais IPv6 actif

Je désactive IPv6 seulement si un test clair montre qu’il casse le service attendu, ou si l’environnement réseau ne le supporte pas proprement. Sur une machine récente, un VPS, un reverse proxy, un serveur mail, un VPN ou une infrastructure cloud, IPv6 peut être utilisé par plus de composants qu’on ne le pense.

Avant de le couper durablement, gardez cette séquence :

  • vérifier les adresses avec ip -6 addr show ;
  • vérifier la route avec ip -6 route show ;
  • tester DNS et connectivité avec getent, resolvectl, ping -6 et curl -6 ;
  • désactiver temporairement avec sysctl -w ;
  • contrôler les services et les ports ;
  • seulement ensuite rendre le réglage persistant.

Sources utiles : documentation IPv6 du wiki Debian, manuel sysctl, paramètres réseau IPv6 du noyau Linux, manuel ip-route Debian et manuel resolvectl Debian.

sudo apt update && sudo apt upgrade