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.

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 -6etcurl -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.