Autoconfiguration IPv6

De Wiki doc

La configuration automatique IPv6 sans état (Stateless Address Autoconfiguration, SLAAC) permet à une machine de s'autogénérer une adresse IPv6 en se basant sur des messages NDP (Neighbor Discovery Protocol) émis par la passerelle du réseau auquel elle est connectée.

Sur la passerelle

Il est nécessaire de réunir 3 éléments pour que l'autoconfiguration fonctionne :

  • Toute les machines doivent avoir une adresse de lien local (fe80:..). C'est par ce lien que sont envoyés les messages NDP
  • Les bonnes options doivent êtres activés dans le noyau des machines
  • Un démon d'autoconfiguration doit tourner sur la passerelle du réseau

Configuration IP

L'adresse de lien local se génère d'elle même au démarrage de l'interface. Si vous avez purgé la configuration réseau avec un ip a f eth0, il suffit de démonter/remonter l'interface pour regénérer cette adresse :

ip l s eth0 down
ip l s eth0 up

Vous pouvez afficher vos adresse IPv6 avec la commande :

ip -6 a

et vous pouvez faire un ping vers les machines de votre réseau par leur adresse de lien local via l'interface en possédant une de cette façon :

ping fe80::5054:ff:fe12:3452%eth0

Le %eth0 est l'interface de sortie des paquets comportant l'adresse de lien local.

Afin que notre machine puisse servir de passerelle, il convient également de lui attribuer une adresse IP dans le réseau de nos clients :

ip a a 2002:100:101:102::/64 dev eth0

Options noyau

Par défaut, le noyau Linux est configuré pour activer le SLAAC. Il faut cependant activer le routage IPv6 pour que les message NDP soient émis :

Temporairement

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

ou

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

Persistant

À mettre dans /etc/sysctl.conf :

net.ipv6.conf.all.forwarding=1

Recharger la configuration de sysctl

sysctl -p /etc/sysctl.conf

Démon d'autoconfiguration

Il faut installer un démon SLAAC sur la machine qui servira de passerelle au réseau

apt install radvd

La configuration de cet outil est très simple. Il faut créer son fichier de configuration dans /etc/radvd.conf en ce basant sur l'exemple donné dans la page de man dédiée :

man 5 radvd.conf

Vous pouvez aller directement dans la section "EXEMPLES" avec un /EXAMPLES depuis le man.

À savoir :

interface eth0 { 
    AdvSendAdvert on; 
    prefix 2002:100:101:102::/64 
    { 
        AdvOnLink on;
        AdvAutonomous on; 
        AdvRouterAddr on; 
    }; 
};

Sur le client

L'autoconfiguration IPv6 est activée par défaut, cependant, je recommande de vérifier que les fichiers :

  • /proc/sys/net/ipv6/conf/all/autoconf
  • /proc/sys/net/ipv6/conf/all/accept_ra

soient à 1.

Sinon il est possible de l'activer via :

echo 1 > /proc/sys/net/ipv6/conf/all/autoconf
echo 1 > /proc/sys/net/ipv6/conf/all/accept_ra

ou

sysctl -w net.ipv6.conf.all.autoconf=1
sysctl -w net.ipv6.conf.all.accept_ra=1

Notez qu'il est possible de n'agir que sur une interface en particulier :

sysctl -w net.ipv6.conf.eth1.autoconf=1
sysctl -w net.ipv6.conf.eth1.accept_ra=1

Pour l'activer de façon persistant il faut mettre ces valeurs dans le fichier /etc/sysctl.conf :

net.ipv6.conf.all.autoconf=1
net.ipv6.conf.all.accept_ra=1

et recharger la configuration de sysctl :

sysctl -p /etc/sysctl.conf

À l'issue, vous pourrez observer qu'une adresse IPv6 s'est ajoutée à votre interface via la commande :

ip -6 a

Le processus d'autoconfiguration se lance tout seul au démarrage.

et que la passerelle est joignable :

ping 2002:100:101:102::

Une route par défaut est également ajoutée et visible via la commande :

ip -6 r

Sources