Nous sommes déjà assez rompus aux protocoles de l'internet. Même si nous ne les manipulons qu'au travers d'IPv4, nous ne somme plus des « newbies », nous savons que la configuration IP n'est pas miraculeuse, que nous avons besoin, en plus d'une adresse IP, de quelques renseignements supplémentaires pour pouvoir exploiter les ressources de l'internet :
Avec IPv4, ces informations nous sont communiquées par le fournisseur d'accès de façon automatique. Par DHCP si le processus de connexion est assimilé à une connexion sur un réseau local (cas de Free), ou par PPP(oE) lors de l'identification RADIUS. mais qu'en est-il en IPv6 ?
Il existe bien un RFC décrivant un protocole DHCPv6, mais nous avons vu que le mécanisme d'auto-configuration était privilégié pour l'obtention de son adresse IP. Ici, donc, pas de DHCP. Mais alors, comment notre machine a-t-elle fait pour découvrir l'adresse de la passerelle par défaut ? Le ou les serveurs DNS récursifs ? Car nous avons vu sur la page précédente que ces adresses n'étaient pas ignorées.
Auto-configuration, soit. Mais comment notre système fait-il pour connaître le préfixe que nous attribue notre fournisseur d'accès ?
La réponse a été furtivement évoquée plus haut, des fonctionnalités supplémentaires ont été ajoutées à ICMP6, avec le protocole NDP (Network Discovery Protocol).
En bref, bien qu'il existe des implémentations de DHCPv6, il est généralement inutile d'y avoir recours, sauf cas très particulier.
Que devient DNS avec IPv6 ? Un même serveur DNS est-il capable de résoudre des noms en IPv4 et en IPv6 ?
Il y a déjà longtemps que les DNS (Bind en particulier) savent diffuser à leurs clients aussi bien des adresses IPv4 que des adresses IPv6, pour un nom d'hôte donné. Exemple :
~# host www.kame.net www.kame.net is an alias for orange.kame.net. orange.kame.net has address 203.178.141.194 orange.kame.net has IPv6 address 2001:200:dff:fff1:216:3eff:feb1:44d7Tout simplement, une requête DNS fournira si nécessaire les adresses IP v4 et v6 correspondant à un nom d'hôte.
Pour satisfaire ce besoin, un DNS dispose :
Comment connaître les adresses IP (v4 comme v6) des DNS que Free met à la disposition de ses clients ?
Les adresses IPv4 sont assez simples à retrouver, puisqu'elles figurent dans les informations fournies par DHCP, que nous trouvons sur notre Debian dans /var/lib/dhcp/dhclient.eth0.leases
(ou autre interface concernée):
lease {
interface "eth0";
...
option domain-name-servers 212.27.54.252,212.27.53.252;
...
}
Nous avons donc dans cet exemple deux DNS identifiés par leur IPv4:
Les adresses IPv6 sont elles aussi assez simples à trouver si l'on sait comment faire:
Nous allons interroger ces DNS en mode IPv4 et en mode IPv6 à propos de www.kame.net et comparer les résultats :
~$ host -4 www.kame.net 212.27.54.252 Using domain server: Name: 212.27.54.252 Address: 212.27.54.252#53 Aliases: www.kame.net is an alias for orange.kame.net. orange.kame.net has address 203.178.141.194 orange.kame.net has IPv6 address 2001:200:dff:fff1:216:3eff:feb1:44d7 ~$ host -6 www.kame.net 2a01:e00::2 Using domain server: Name: 2a01:e00::2 Address: 2a01:e00::2#53 Aliases: www.kame.net is an alias for orange.kame.net. orange.kame.net has address 203.178.141.194 orange.kame.net has IPv6 address 2001:200:dff:fff1:216:3eff:feb1:44d7
Quel que soit le serveur interrogé, en mode IPv4 comme en mode IPv6, nous obtenons bien les adresses IPv4 et IPv6 de la cible.
Bon. Mais comment notre système fait-il pour connaître la ou les adresses de DNS que notre fournisseur nous procure ?
Il existe une trousse à outils nommée ndisc6
(IPv6 diagnostic tools for Linux and BSD), facile à installer sur Debian, Ubuntu et dérivées par un aptitude install ndisc6
. Bien entendu, les autres distributions récentes proposent également cette trousse, qui contient entre autres, trois outils qui vont nous être utiles: rdisc6
, dans une moindre mesure ndisc6
et un tcptraceroute6
.
Permet de lancer une « découverte des voisins ». Comparable à la commande arping
du monde IPv4. Utilisons cet outil pour scruter notre passerelle par défaut. Commençons par son adresse de type lien local, telle que nous l'avons découverte avec la commande ip -6 route ls
:
:~$ ndisc6 fe80::207:cbff:fec3:e4da eth0 Solicitation de fe80::207:cbff:fec3:e4da (fe80::207:cbff:fec3:e4da) sur eth0... Adresse cible de lien : 00:07:CB:C3:E4:DA de fe80::207:cbff:fec3:e4da
~$ ndisc6 2a01:e35:2f35:d0::1 eth0 Solicitation de 2a01:e35:2f35:d0::1 (2a01:e35:2f35:d0::1) sur eth0... Adresse cible de lien : 00:07:CB:C3:E4:DA de 2a01:e35:2f35:d0::1
permet donc facilement de trouver l'adresse MAC correspondant à une adresse IPv6 sur le réseau local
Cet outil est magique. Voyons tout de suite ce qu'il est capable de nous apprendre :
~$ rdisc6 eth0 Solicitation de ff02::2 (ff02::2) sur eth0... Limite de saut (TTL) : 64 ( 0x40) Conf. d'adresse par DHCP : Non Autres réglages par DHCP : Non Préférence du routeur : moyen Durée de vie du routeur : 1800 (0x00000708) secondes Temps d'atteinte : non indiqué (0x00000000) Temps de retransmission : non indiqué (0x00000000) Préfixe : 2a01:e35:2f35:d0::/64 Durée de validité : 86400 (0x00015180) secondes Durée de préférence : 86400 (0x00015180) secondes Recursive DNS server : 2a01:e00::2 Recursive DNS server : 2a01:e00::1 DNS servers lifetime : 600 (0x00000258) secondes MTU : 1480 octets (valide) Adresse source de lien : 00:07:CB:C3:E4:DA de fe80::207:cbff:fec3:e4da
Là, nous sommes servis. Nous apprenons que :
2a01:e35:2f35:d0::/64
;2a01:e00::2
et 2a01:e00::1
;fe80::207:cbff:fec3:e4da
.Nous avons récupéré toutes les informations nécessaires, comme nous l'aurions fait en IPv4 par DHCP, mais ici, ce n'est pas DHCP. Alors, qu'est-ce que c'est ? (Ceux qui ont suivi sauront répondre : «NDP»).
De plus, que représente cette adresse ff02::2
qui semble être la source de toutes ces informations ?
Comme son nom l'indique, cette commande est équivalente au tcptraceroute
du monde IPv4 :
:~$ tcptraceroute6 www.kame.net traceroute vers orange.kame.net (2001:200:0:8002:203:47ff:fea5:3085) de 2a01:5d8:52f3:500d:21b:11ff:fe52:bfab, port 80, du port 56328, 30 sauts max, 60 octet/paquet 1 2a01:5d8:52f3:500d::1 (2a01:5d8:52f3:500d::1) 0.586 ms 0.493 ms 0.514 ms 2 2a01:5d8:e000:9d1::4 (2a01:5d8:e000:9d1::4) 48.728 ms 48.941 ms 48.161 ms 3 2a01:5d8:e000:9d1::fe (2a01:5d8:e000:9d1::fe) 50.412 ms 49.901 ms * ... 22 lo0.alaxala1.k2.wide.ad.jp (2001:200:0:4800::7800:1) 342.425 ms 342.790 ms 339.848 ms 23 orange.kame.net (2001:200:0:8002:203:47ff:fea5:3085) 343.017 ms [ouvert] 342.494 ms 338.770 ms
Comme vous le constatez, il n'y a rien de fondamentalement nouveau, si ce n'est que nous évoluons dans un monde IPv6.