Désactiver IPV6 sur Debian

desactiver ipv6 linux

On ne va pas discuter du pourquoi on souhaite désactiver ipv6 sur son serveur Debian. Le sujet a été débattu des centaines de fois.
Le seul cas intéressant est que si on doit le faire lorsque l’on configure le réseau… Voilà la méthode 🙂

Désactiver IPV6 : ok. Mais est-il actif ?

Avant de vouloir le désactiver il faut au moins vérifier s’il est activé.

# more /proc/net/if_inet6 
00000000000000000000000000000001 01 80 10 80       lo
200141d00001cd6b0000000000000001 04 80 00 80     eth0
fe80000000000000021cc0fffe3c31ea 04 40 20 80     eth0

Si le fichier existe ET s’il y a quelque chose dedans (car le fichier peut exister mais être vide) : ipv6 est actif. Ici on voit qu’il y a des instructions ipv6 pour le loopback et l’interface eth0. Autre moyen de vérifier, le bon vieux ifconfig :

# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:1c:c0:3c:31:ea  
          inet adr:91.121.196.109  Bcast:91.121.196.255  Masque:255.255.255.0
          adr inet6: 2001:41d0:1:cd6l::1/128 Scope:Global
          adr inet6: fe80::21c:c0ff:fe3c:31ej/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:490675 errors:0 dropped:0 overruns:0 frame:0
          TX packets:389368 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          RX bytes:285829198 (272.5 MiB)  TX bytes:57626220 (54.9 MiB)

lo        Link encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28719 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28719 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:3650151 (3.4 MiB)  TX bytes:3650151 (3.4 MiB)

On voit deux instructions inet6 pour l’interface eth0.

Désactiver IPV6 avec la méthode SYSCTL

Il faut passer plusieurs instructions à sysctl pour désactiver IPV6. On désactive ipv6 pour toutes les interfaces :

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

On désactive l’auto configuration pour toutes les interfaces :

sysctl -w net.ipv6.conf.all.autoconf=0

On désactive ipv6 de la configuration par défaut :

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

On désactive l’auto configuration par défaut :

sysctl -w net.ipv6.conf.default.autoconf=0

Bonne nouvelle, la configuration est prise en compte en temps réel. Il suffit de refaire un ifconfig ou un more /proc/net/if_inet6 pour vérifier que inet6 n’apparait plus pour le premier et que le fichier est vide pour le second.

 Graver dans le marbre

Dernière étape, écrire ces instructions en dur dans le fichier /etc/sysctl.conf. D’abord vérifier qu’il n’y a pas déjà des instructions à ce sujet dans le fichier, et si tout est ok, ajouter en fin de fichier les instructions suivantes :

# désactivation de ipv6 pour toutes les interfaces
net.ipv6.conf.all.disable_ipv6 = 1

# désactivation de l’auto configuration pour toutes les interfaces
net.ipv6.conf.all.autoconf = 0

# désactivation de ipv6 pour les nouvelles interfaces (ex:si ajout de carte réseau)
net.ipv6.conf.default.disable_ipv6 = 1

# désactivation de l’auto configuration pour les nouvelles interfaces
net.ipv6.conf.default.autoconf = 0

Pour que les modifications soient prises en compte immédiatement :

# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0

Dernière étape, je pense optionnelle, mais dans le doute… Commenter les instructions ipv6 du fichier /etc/network/interfaces

# more /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 91.121.196.109
    netmask 255.255.255.0
    network 91.121.196.0
    broadcast 91.121.196.255
    gateway 91.121.196.254

#iface eth0 inet6 static
#    address 2001:41D0:1:CD6b::1
#    netmask 128
#    post-up /sbin/ip -f inet6 route add 2001:41D0:1:CDef:ff:ff:ff:ff dev eth0
#    post-up /sbin/ip -f inet6 route add default via 2001:41D0:1:Ceff:ff:ff:ff:ff
#    pre-down /sbin/ip -f inet6 route del default via 2001:41D0:1:Ceff:ff:ff:ff:ff
#    pre-down /sbin/ip -f inet6 route del 2001:41D0:1:Ceff:ff:ff:ff:ff dev eth0

Et voilà. Un reboot pour la forme et vérifier que tout est bien en place.

5 commentairesLaisser un commentaire

  • Bonjour,
    Merci pour ces infos, simple pratique….parfait.

    J’ajouterais cependant pour vérifier en final que tout est ok le ‘netstat -a’ suite au modification, qui en théorie devrait nous retourner une absence de socket en IPV6.

    En effet, apres un reboot de l’équipement, les interfaces en ipv6 sont bien absentes, en, revanche des démons peuvent etre encore en ecoute sur inet6, si bien que je pense qu’il existe encore un autre paramètre à supprimer afin de garantir que la stack IPV6 n’est plus disponible…..je suis preneur de cette info

    Cordialement

  • Bonjour Jean-Marc,

    Merci pour ton retour.
    Je pense qu’avec cette méthode, la pile IPV6 est bien désactivée. Par contre effectivement cela n’impacte pas les logiciels et démons.
    Partant de là, il faut inspecter chaque soft et vérifier son utilisation d’ipv6

    A bientôt

  • Merci pour ces infos, claires et précises.
    Cela est très utiles afin de garantir son anonymat, quand on se connecte à un VPN qui en général ne gère souvent que les IPV4.

  • Merci. De la part d’un débutant qui installe son premier serveur à domicile. Bonnes fêtes de fin d’année et bonne année 2016.

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *