DNS, DHCP ???

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 :

  • une adresse de passerelle par défaut ;
  • au moins une adresse de DNS pour résoudre les noms en adresses IP.

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 ?

DHCP

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.

DNS

Que devient DNS avec IPv6 ? Un même serveur DNS est-il capable de résoudre des noms en IPv4 et en IPv6 ?

Résolution des noms

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:44d7
Tout 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 :

  • du champ « A » pour enregistrer l'IPv4 correspondant à un nom d'hôte ;
  • du champ « AAAA » pour enregistrer l'IPv6 correspondant à un nom d'hôte.

Les DNS de Free

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:

  • 212.27.54.252 ;
  • 212.27.53.252.

Les adresses IPv6 sont elles aussi assez simples à trouver si l'on sait comment faire:

  • 2a01:e00::2 ;
  • 2a01:e00::2.

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 ?

A la découverte du monde IPv6

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.

ndisc6

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

rdisc6

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 :

  • il n'y a pas de DHCP dans le coup ;
  • le préfixe qui nous est attribué est bien 2a01:e35:2f35:d0::/64 ;
  • les durées de validité et de préférence sont identiques et de 86400 secondes (24 heures) ;
  • les DNS proposés sont 2a01:e00::2 et 2a01:e00::1 ;
  • le routeur (passerelle par défaut) est 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 ?

tcptraceroute6

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.

  • le «hop» 1 nous confirme une fois encore l'adresse IP (globale) de notre passerelle par défaut;
  • le «hop» 22 nous apprend que la cible www.kame.net se situe au japon et que son port 80 est ouvert;
  • le «hop» 23 nous dit que la cible est vivante et que le port 80 est ouvert.