Autoconfiguration IPv6
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