Comment désactiver la configuration automatique sur IPv6 sous Linux?

23

Comment désactiver définitivement la configuration automatique d'IPv6 sous Linux? Lorsque j'essaie de supprimer manuellement une adresse d'une interface avec:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Il réapparaîtra quelques secondes plus tard, je veux qu'il disparaisse définitivement, mais sans désactiver IPv6 tous ensemble.

Grumbel
la source

Réponses:

22

La configuration automatique peut être désactivée temporairement pour eth1 avec:

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

ou pour toutes les interfaces avec:

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

La réactivation fonctionne en utilisant 1 au lieu de 0 dans l'appel.

La désactivation permanente peut être effectuée avec une entrée à /etc/sysctl.conf. Sur Debian Etch (probablement sur les plus récents aussi), sans paramétrer le accept_ra, le système se configurera automatiquement en utilisant l'adresse locale Link ( fe80..)

Comme Gart l'a mentionné ci-dessous, la configuration automatique des adresses et la découverte du routeur seront désactivées si l'hôte lui-même est un routeur et accept_rane l'est pas 2, c'est-à-dire

net.ipv6.conf.<iface|all|default>.forwarding=1

et

net.ipv6.conf.<iface|all|default>.accept_ra=0 ou net.ipv6.conf.<iface|all|default>.accept_ra=1.

ifaceest ton interface

Grumbel
la source
3
De plus, la configuration automatique des adresses et la découverte du routeur seront désactivées si l'hôte lui-même est un routeur, c'est net.ipv6.conf.all.forwarding=1-à- dire qu'il est défini.
Gart
4

net.ipv6.conf.all.accept_ra = 0 ci-dessus ne doit pas être effectué, car les RA sont nécessaires pour indiquer la liaison et la déconnexion du préfixe (conformément à la RFC5942), ainsi que la configuration automatisée d'un certain nombre d'autres paramètres, tels que MTU, timeouts de découverte de voisin, etc.

Si vous souhaitez désactiver la configuration automatique, désactivez le système de configuration automatique comme ci-dessus ou désactivez le A (bit de configuration automatique) dans l'option d'informations de préfixe (PIO) dans le RA.

Des notes
la source
3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

Cela n'a pas fonctionné pour moi sur Debian Wheezy. Après avoir examiné /etc/sysctl.conf, je devais utiliser

sudo sysctl -w net.ipv6.conf.default.autoconf=0
Nick B.
la source
3

La sysctlsolution n'a pas fonctionné pour nous sur Ubuntu 18.04 Bionic. Nous l'avons résolu en:

Edition /etc/netplan/01-netcfg.yaml, configuration:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Vous devrez peut-être utiliser le nom de votre interface au lieu de eth0. Après avoir enregistré le fichier, exécutez:

netplan apply ou reboot

Si vous avez déjà reçu une IP IPv6 de la configuration automatique et que vous souhaitez la supprimer sans redémarrer, vous pouvez exécuter:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Bien sûr, vous devez remplacer l'adresse IP et le périphérique dans cette commande.

Jeroen Vermeulen - MageHost
la source
cela fait que ma journée me gratte la tête depuis quelques mois: D
anthonysomerset
2
Je gratte généralement Google jusqu'à ce que je le trouve.
Jeroen Vermeulen - MageHost
1
Cela a fonctionné lorsque je l'ai essayé, mais le problème est de désactiver accept-ra est assez dangereux, comme mentionné par Mark S - cela semble fonctionner mais plus tard, vous constaterez peut-être que vous manquez des paquets car ils atteignent un point de fragmentation ou un routeur de basculement est utilisé. Il brise également les pings. La raison pour laquelle j'essayais de le faire était de faire correspondre de manière fiable mon enregistrement SPF dans le courrier sortant, mais j'ai réalisé que j'aurais dû utiliser un masque de réseau dans l'enregistrement, car en IPv6, une plage d'adresses appartient effectivement à une machine, pas une seule adresse .
Phil McKerracher
2

Le problème avec Ubuntu 18 et ipv6 est que systemd-networkd contrôle les paramètres du noyau, donc bien que l'on puisse désactiver ipv6 avec sysctl, networkd sera plus qu'heureux de les allumer pour vous, si la configuration ne dit pas le contraire.

Ma solution pour désactiver ipv6 consiste à configurer link-local dans netplan sur un scalaire vide (à condition que vous n'ayez aucune IP ipv4 link-local)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

La configuration compilera la configuration de networkd qui sera publiée dans /run/systemd/network/10-netplan-eth0.network et qui convaincra networkd de ne pas mettre en place ipv6 pour eth0

Si vous souhaitez désactiver ipv6 également sur le bouclage, il est facile de le faire en définissant le paramètre du noyau net.ipv6.conf.all.disable_ipv6 sur 1. networkd ne semble pas contrôler le bouclage.

sysctl -w net.ipv6.conf.all.disable_ipv6=1
Daniel
la source
J'aime vraiment votre solution très propre. Comme nous n'utilisons pas d'adresses lien-local, l'ajout du scalaire vide est la solution parfaite. Après cela, nous avons dû redémarrer le serveur car Netplan Apply a conservé les adresses IPv6 déjà attribuées sur nos deux interfaces Ethernet. Mais après le redémarrage, tout fonctionne comme vous l'avez dit. Je ne pense pas qu'il y ait une raison de s'embêter à désactiver IPv6 sur l'interface de bouclage, donc j'ai juste sauté la partie sysctl. Merci!
Zoltan