Comme je l'ai mentionné dans Ce que vous devez savoir sur IPv6 , différentes méthodes existent pour configurer une adresse IPv6 sur une machine. Nous nous concentrerons principalement sur la configuration d'une adresse IPv6 sur un système Red Hat Enterprise Linux (RHEL) 7 et 8 et expliquerons brièvement différentes méthodes d'attribution.
[Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.]
Configuration d'IPv6 sur RHEL 7 et 8
Un système Red Hat Enterprise Linux est configuré pour obtenir automatiquement une adresse IPv6. Ce sont les lignes du fichier de configuration où la magie opère (j'ajoute une explication à chaque ligne) :
[root@rhel8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
………
………
IPV6INIT="yes" ← Enable initialization on the interface
IPV6_AUTOCONF="yes" ← Accept Router Advertisements (RA’s)
IPV6_DEFROUTE="yes" ← The default IPv6 route is assigned to the interface
IPV6_FAILURE_FATAL="no" ← Opposite of ‘may-fail’
IPV6_ADDR_GEN_MODE="stable-privacy" ← IPv6 stable-privacy addressing s(RFC7217)
NAME="enp1s0"
………
………
Pour plus d'informations sur ce que font ces paramètres de connexion, exécutez :
man nm-settings-ifcfg-rh
Autoconfiguration d'adresse sans état (SLAAC)
Si le IPV6_AUTOCONF
la variable est définie sur yes
, la méthode SLAAC est utilisée pour configurer l'adresse IPv6 de l'hôte à l'aide du protocole NDP (Neighbor Discovery Protocol). La technique appliquée ici est celle expliquée dans la section Multidiffusion de l'article précédent, où il y a un échange de messages ICMPv6 de sollicitation de client et d'annonce de routeur.
Nous utilisons le terme sans état car il n'y a pas de service pour garder une trace des adresses IPv6 qui ont été attribuées aux clients. Au lieu de cela, l'adresse IPv6 est composée d'une technique appelée Extended Unique Identifier (EUI-64) où 16 bits sont ajoutés à l'adresse Media Access Control (MAC) (qui a 48 bits), créant ainsi une adresse IPv6 unique au monde.
DHCPv6
Pour utiliser DHCPv6, les éléments suivants doivent apparaître dans le fichier de configuration :
IPV6_AUTOCONF="no"
DHCPV6C=”yes”
Si le DHCPv6
la variable est définie sur yes
, puis un client obtient une adresse IP du pool DHCPv6. Le service DHCPv6 garde ensuite une trace des adresses IPv6 attribuées à quels clients. Parmi l'adresse IP, d'autres informations telles que les serveurs DNS, la durée du bail, les noms d'hôte et d'autres attributs sont transmises au client. Un administrateur doit configurer le pool d'adresses IPv6 pour pouvoir servir les clients.
Manuel
Il est également possible (mais non recommandé) de configurer manuellement une adresse IPv6. La configuration manuelle nécessite beaucoup d'efforts, est sujette aux erreurs et il est difficile de savoir quelles adresses IPv6 sont attribuées à quels clients. Sur un grand réseau, un serveur DHCPv6 est préférable pour effectuer cette tâche.
Pour configurer manuellement IPv6 sur Red Hat Enterprise Linux 7 et 8, votre version des éléments suivants doit être ajoutée au fichier de configuration :
[root@rhel8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp1s0
………
………
IPV6ADDR=2a01:1b0:5389:4::22f2
IPV6_DEFAULTGW=2a01:1b0:5389:4::22f0
………
………
Ou, vous pouvez configurer manuellement via NetworkManager :
nmcli con mod enp1s0 ipv6.addresses "2a22:1d0:5222:4::22f2/64" gw6 "2a22:1d0:5222:4::22f0/64"
nmcli con mod enp1s0 ipv6.method manual
Tester la connectivité IPv6
Pour tester la connectivité IPv6, nous pouvons exécuter un ping6 sur www.redhat.com :
ping6 -c2 www.redhat.com
PING www.redhat.com(g2a02-26f0-b200-018f-0000-0000-0000-0d44.deploy.static.akamaitechnologies.com (2a02:26f0:b200:18f::d44)) 56 data bytes
64 bytes from g2a02-26f0-b200-018f-0000-0000-0000-0d44.deploy.static.akamaitechnologies.com (2a02:26f0:b200:18f::d44): icmp_seq=1 ttl=58 time=8.43 ms
--- www.redhat.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.425/8.425/8.425/0.000 ms
Pendant que le ping était en cours d'exécution, j'ai exécuté Wireshark en arrière-plan pour voir ce qui se passait sous le capot. Voici le paquet de requête ICMPv6 (envoyé par moi) et le paquet de réponse ICMPv6 que j'ai reçu en retour.
Requête ICMPv6
No. Time Source Destination Protocol Length Info
18 3.471783469 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d 2a02:26f0:7b:28a::d44 ICMPv6 118 Echo (ping) request id=0x68d7, seq=1, hop limit=64 (reply in 24)
Frame 18: 118 bytes on wire (944 bits), 118 bytes captured (944 bits) on interface 0
Ethernet II, Src: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee), Dst: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Destination: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Address: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Address: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d, Dst: 2a02:26f0:7b:28a::d44
0110 .... = Version: 6
.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
.... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0)
.... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0)
.... .... .... 1010 0010 1001 1110 0100 = Flow Label: 0xa29e4
Payload Length: 64
Next Header: ICMPv6 (58)
Hop Limit: 64
Source: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
Destination: 2a02:26f0:7b:28a::d44
[Source GeoIP: NL]
[Destination GeoIP: ]
Internet Control Message Protocol v6
Type: Echo (ping) request (128)
Code: 0
Checksum: 0xdff6 [correct]
[Checksum Status: Good]
Identifier: 0x68d7
Sequence: 1
[Response In: 24]
Data (56 bytes)
Réponse ICMPv6
No. Time Source Destination Protocol Length Info
24 3.607831042 2a02:26f0:7b:28a::d44 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d ICMPv6 118 Echo (ping) reply id=0x68d7, seq=1, hop limit=59 (request in 18)
Frame 24: 118 bytes on wire (944 bits), 118 bytes captured (944 bits) on interface 0
Ethernet II, Src: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff), Dst: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Destination: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
Address: HonHaiPr_74:2a:27 (ad:bc:dd:fa:da:ee)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
Address: Ubiquiti_77:dd:a5 (aa:bb:cc:dd:ee:ff)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IPv6 (0x86dd)
Internet Protocol Version 6, Src: 2a02:26f0:7b:28a::d44, Dst: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
0110 .... = Version: 6
.... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
.... 0000 00.. .... .... .... .... .... = Differentiated Services Codepoint: Default (0)
.... .... ..00 .... .... .... .... .... = Explicit Congestion Notification: Not ECN-Capable Transport (0)
.... .... .... 1000 0110 0011 0011 0111 = Flow Label: 0x86337
Payload Length: 64
Next Header: ICMPv6 (58)
Hop Limit: 59
Source: 2a02:26f0:7b:28a::d44
Destination: 2a01:1b0:5389:2:ccff:cdcd:6ccd:dc0d
[Source GeoIP: ]
[Destination GeoIP: NL]
Internet Control Message Protocol v6
Type: Echo (ping) reply (129)
Code: 0
Checksum: 0xdef6 [correct]
[Checksum Status: Good]
Identifier: 0x68d7
Sequence: 1
[Response To: 18]
[Response Time: 136.048 ms]
Data (56 bytes)
Notez que de nombreuses organisations choisissent de bloquer les requêtes ping pour des raisons de sécurité, c'est donc généralement une bonne idée d'essayer de tester plusieurs sites lors du test de votre connectivité.