Comment désactiver l’IPv6 sur Linux

L'IPv6 est la dernière version du protocole IP, on en parle dans l'article : IPv4 VS IPv6 : Les différences
Mais parfois sur votre Distribution Ubuntu, Debian, Mint, Fedora, CentOS ou autres, il peut arriver que l'IPv6 soit à l'origine de problème de connexion.
Dans ces cas là, on peut chercher à vouloir désactiver l'IPv6.
Le plus simple est de désactiver dans le noyau de Linux.

Dans cet article, nous allons voir comment désactiver l'IPv6 de Linux.

Comment désactiver l'IPv6 sur Linux

Comment vérifier si l'IPv6 est actif sur Linux

Pour vérifier si l'IPv6 est actif, vous pouvez utiliser la commande ip comme ceci :

ip a

Cela liste alors les interfaces réseaux et si votre carte réseau ou WiFi affiche une liste inet6 alors, l'IPv6 est bien actif.

Vérifier si l'IPv6 est actif

En effet :

  • inet est ipv4 seulement
  • inet6 is ipv6 seulement

Cette abréviation on peut la retrouver dans les fichiers de configuration de services et daemon, dans les interfaces à écouter.

Comment désactiver l'IPv6 sur Linux

Dans le noyau Linux

Vous pouvez modifier la configuration du kernel Linux de manière temporaire.
Pour cela :

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Pour désactiver IPv6 de manière permanent, éditez le fichier /etc/sysctl.conf et ajoutez les lignes :

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Désactiver l'ipv6 dans le noyau Linux

Plus de détails sur la commande sysctl :

Désactivez IPv6 dans le module du noyau

Une autre méthode consiste à désactiver le chargement du module IPv6 du noyau.
Cette méthode est moins recommandée car elle peut parfois causer des problèmes.

Pour ce faire :

Éditer le fichier de configuration de GRUB /etc/default/grub et ajoutez la ligne add ipv6.disable=1 :

GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Régénérez un fichier de configuration GRUB et écrasez le fichier existant:

grub2-mkconfig -o /boot/grub2/grub.cfg

Enfin redémarrez le PC afin de prendre en compte les changements :

shutdown -r now

Dans sshd

Le service et daemon sshd possède aussi sa propre configuration où vous spécifiez les interfaces à écouter.
On peut alors forcer l'IPv4 en éditant le fichier de configuration /etc/ssh/sshd_config.
Cherchez la ligne AddressFamily pour le passer de any à inet.

# vi /etc/ssh/sshd_config
....
AddressFamily inet
....

puis redémarrez le service sshd pour prendre en compte la nouvelle configuration :

systemctl restart sshd

Dans postfix

Enfin de même postfix possède un paramètre inet_interfaces qui permet d'indiquer l'interface réseau sur laquelle écouter.
Ainsi, on peut désactiver l'IPv6 pour forcer l'écoute sur l'IPv4.

Pour cela, éditer le fichier /etc/postfix/main.cf, puis modifier inet_interfaces de cette manière :

#inet_interfaces = localhost
inet_interfaces = 127.0.0.1

Enfin relancez postfix :

systemctl restart postfix

Liens