Désactiver l’IPV6

Comment désactiver l'IPV6 sous Linux ?

L’IPV6 (Internet Protocol Version 6) est désormais de plus en plus présent sur les distributions Linux. Sur un serveur, il est recommandé de minimiser le nombre de services et de désactiver les protocole et support matériel inutilisés. Si un serveur est placé sur un réseau IPV4, la désactivation d’IPV6 et donc préférable (une chose de moins à gérer…).

L’IPV6 est il activé sur ma machine ?

Vous pouvez déterminer si IPV6 est activé sur un système Linux, en testant l’existence du fichier « /proc/net/if_inet6 ». Si le fichier n’existe pas, lPV6 n’est pas activé/supporté :

srv ~ # ls /proc/net/if_inet6
ls: impossible d'accéder à /proc/net/if_inet6: Aucun fichier ou dossier de ce type

Si le fichier existe, il contient la liste des interfaces réseaux pour lesquelles le protocole est supporté :

15:26:20 mafalda ~ # cat /proc/net/if_inet6
fe80000000000000025056fffc00c008 05 40 20 80   vmnet8
00000000000000000000000000000001 01 80 10 80       lo
fe80000000000000025056fffec00001 04 40 20 80   vmnet1
fe80000000000000020cdbfafed3f062 02 40 20 80     eth0

Dans cette exemple l’IPV6 est supporté par le système et activé pour les interfaces vmware (« vmnet8 », « vmnet1 ») ainsi que pour l’interface « eth0 » et le loopback.

Une autre méthode permettant de voir si l’IPV6 est actif sur l’une des interfaces du système, consiste à rechercher l’adresse IPV6 qui lui est alloué (ligne « inet6 addr: » du retour d' »ifconfig ») :

15:43:17 mafalda ~ # ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:244 errors:0 dropped:0 overruns:0 frame:0
          TX packets:244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:21044 (20.5 KiB)  TX bytes:21044 (20.5 KiB)

Désactivation d’IPV6

Il est possible de désactiver l’IPV6 sur une seule ou sur toutes les interfaces d’une machine.

Première méthode : à la geek

Vous pouvez désactiver l’IPV6 en utilisant les fichiers de « /proc/sys » (pseudo système de fichier permettant de modifier dynamiquement les paramètres du noyau).L’IPV6 est géré via l’arborescence « net/ipv6/conf » de ce répertoire :

12:10:06 mafalda ~ # ls /proc/sys/net/ipv6/conf
all  default  eth0  lo  vboxnet0  vmnet1  vmnet8

Nous trouvons dans le répertoire le paramétrage des différentes interfaces réseau du système, la politique par défaut pour d’éventuelles nouvelles interfaces (default), et la politique générale (all).

Dans chaque répertoire, sont placés des fichiers destinés à configurer les paramètres ipv6. Celui qui nous intéresse pour la désactivation du protocole est « disable_ipv6 ».

Si IPV6 est activé sur une interface, « disable_ipv6 » du répertoire de l’interface contient la valeur « 0 », sinon, il contient « 1 ».

Pour désactiver l’IPV6 sur une interface, passer à « 1 » le contenu de son fichier « /proc/sys/net/ipv6/conf/$IFACE/disable_ipv6 ». La modification prend effet immédiatement.

12:14:47 mafalda ~ # cat /proc/sys/net/ipv6/conf/lo/disable_ipv6 
0
12:17:39 mafalda ~ # cat /proc/net/if_inet6 | grep lo
00000000000000000000000000000001 01 80 10 80       lo
12:18:10 mafalda ~ # echo 1 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
12:18:22 mafalda ~ # cat /proc/net/if_inet6 | grep lo
12:18:25 mafalda ~ # cat /proc/sys/net/ipv6/conf/lo/disable_ipv6
1

Dans cette exemple, nous commençons par vérifier que l’IPV6 est actif sur le loopback. Nous retrouvons le « lo » dans la liste des interfaces supportant le protocole (dans /proc/net/if_inet6). Nous désactivons le support en passant à 1 le contenu de « /lo/disable_ipv6 » et vérifions qu’il à bien disparu des interface IPV6.

Pour désactiver l’IPV6 sur toutes les interfaces de la machine, passer à « 1 » le contenu de « /proc/sys/net/ipv6/conf/all/disable_ipv6 » et de « /proc/sys/net/ipv6/conf/default/disable_ipv6 » (politique par défaut).

Par sécurité, mettez à « 0 » les paramètres de configuration automatique de l’IPV6 « /proc/sys/net/ipv6/conf/all/autoconf », « /proc/sys/net/ipv6/conf/default/autoconf » afin d’éviter qu’une configuration par défaut soit appliquée aux interfaces :

12:35:57 mafalda ~ # echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
12:36:19 mafalda ~ # echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
12:37:41 mafalda ~ # echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
12:37:59 mafalda ~ # echo 0 > /proc/sys/net/ipv6/conf/default/autoconf

Le résultat est immédiat :

12:41:34 mafalda ~ # cat /proc/net/if_inet6
12:41:39 mafalda ~ #

Seconde méthode : sysctl

« sysctl » Permet de modifier les paramètres du noyau directement. Les clés à modifier sont les mêmes que dans la méthode « geek » :

12:48:27 mafalda ~ # sysctl -w net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6 = 1
12:55:34 mafalda ~ # sysctl -w net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.autoconf = 0
12:55:34 mafalda ~ # sysctl -w net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6 = 1
12:55:34 mafalda ~ # sysctl -w net.ipv6.conf.default.autoconf=0
net.ipv6.conf.default.autoconf = 0

La prise en compte des modification est immédiate :

12:57:34 mafalda ~ # cat /proc/net/if_inet6
12:57:40 mafalda ~ #

Rendre les modifications pérennes

Afin de rendre les modifications pérennes, il convient de modifier le fichier « /etc/sysctl.conf » pour y ajouter le paramétrage des clés modifiées manuellement ci dessus.

Pour désactiver l’IPV6 nous ajoutons les lignes suivantes au fichier :

# désactivation du support pour les interfaces actuelles
net.ipv6.conf.all.disable_ipv6 = 1
 
# désactivation du support de l’autoconfiguration
net.ipv6.conf.all.autoconf = 0
 
# désactivation du support par défaut pour les nouvelles interfaces
net.ipv6.conf.default.disable_ipv6 = 1
 
# et de l'autoconfiguration 
net.ipv6.conf.default.autoconf = 0

Pour que les modifications soient prises en compte immédiatement, rechargez le fichier via « sysctl » :

13:30:40 mafalda ~ # 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

Références

6 réflexions au sujet de « Désactiver l’IPV6 »

  1. Bonjour,

    Un Grand Merci ! … pour tout ces tutos.

    Clair et très précis !

    Concernant la désactivation de l’Ipv6, n’est il pas nécessaire, voir indispensable d’enregistrer le fichier et à appliquer les modifications ?

    # sysctl -n -e -q -p /etc/sysctl.conf

    ps: je m’abonne !

    Amicalement, loreleil.

    1. Merci pour le compliment… C’est encourageant… 🙂

      En effet, pour que les modifications du fichier « /etc/sysctl.conf » soient prise en compte, il faut recharger le fichier via « sysctl » comme tu le présente (le post intègre le rechargement du fichier maintenant, merci).

      En revanche, je te déconseille le « -e » qui désactive les messages d’erreurs en cas de clés inconnues… Il est toujours préférable de savoir que l’on à fait une faute de frappe… (ça évite de chercher pourquoi une option ne fonctionne pas 😉 )

      Merci pour tes encouragements et tes retours, FHH

  2. Pourquoi vouloir supprimer IPv6 ? Actuellement, l’ICANN n’a plus d’IPv4 à distribuer. Et dans une année, le RIPE n’en aura pas non plus. On peut donc dire que dans quelques années, ils n’y aura plus d’IPv4 disponibles. Ils faut donc commencer à migrer à IPv6 peu à peu !

    1. Les raisons menant à la désactivation (et non la suppression) sont plus ou moins légitimes… 2 d’entre elles pourraient être :

      • « le client l’a demandé », et bien que je bénéficie d’une certaine liberté, quand le « client » spécifie : « pas d’IPV6 », on désactive en affichant « IPV6 ready » ;
      • « il faut commencer à migrer doucement »… Ok, mais l’architecture de prod n’est pas un banc de test ! Sur des structures un peu conséquente, pour entamer la migration on test d’abord, ensuite on prépare son réseau en y ajoutant les services qui vont bien pour faire cohabiter le V4 et le V6 dans un premier temps et enfin on commence à migrer. C’est à ce moment là que l’on ré active l’IPV6. Durant toute la phase de préparation, il n’est pas utilisé sur les serveurs de prod, donc il n’a rien a y faire.

      Enfin ce n’est qu’un avis, chaqu’un mène sa barque comme il l’entend…

  3. Sous Debian, moi je fais:

    echo « blacklist ipv6 » >> /etc/modprobe.d/blacklist

    et reboot

    J’ai bon aussi ?

    Sinon, quid des applications qui ralent dans les logs que ipv6 est mort.

    Exemple: ssh … ajouter Listen 0.0.0.0
    Dans apache, aussi il faut faire quelques trucs…
    Bacula aussi…

    Toujours ennuyeux ces warning dans les logs…

    A+

    1. Oui, ça marche aussi… tant que ipv6 est compilé en module…

      Sur une wheezy fraichement installée, l’IPV6 n’est plus un module (CONFIG_IPV6=y dans mon « /boot/config-2.6.32-5-vserver-amd64 ») alors …

      Et puis ça râle vraiment moins sans charger le module ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *