# DHCPv6

DHCPv6 est un protocole de configuration dynamique (Dynamic Host Configuration Protocol version 6) pour IPv6.
L'adresse IPv6 de lien local (link-local) est générée par l'hôte lui-même, DHCPv6 n'attribue donc que l'adresse de monodiffusion globale.
DHCPv6 est l'une des deux méthodes de configuration automatique des adresses IPv6 ; la méthode la plus simple (par défaut) est SLAAC (Stateless Automatic Auto Configuration utilise les messages Neighbor Discovery Protocol RA et RS), qui ne requiert pas de serveur DHCP.
Il existe deux versions de DHCPv6 : avec et sans états.
La méthode d'attribution automatique des adresses IPv6 de monodiffusion globale est donc déterminée par la configuration du routeur IPv6 : SLAAC, DHCPv6 sans état ou DHCPv6 avec état.
DHCPv6 est un mécanisme d'attribution des adresses IPv6 et de paramétrage de la connexion au réseau qui fonctionne comme DHCP, son équivalent en IPv4.
Toutefois, contrairement à IPv4, l'adresse de la passerelle par défaut (Gateway) n'est jamais attribuée par le DHCP, mais est toujours renseignée par le routeur IPv6 qui envoie cette information aux hôtes du réseau toutes les 200 secondes, dans une trame Router Advertisement (RA).
L'autre mécanisme d'attribution est Neighbor Discovery Protocol.

## Numéros de ports

DHCPv6 utilise le port UDP numéro 546 du côté client et le port UDP numéro 547 du côté serveur.
Par exemple, en admettant que l'adresse lien-local du serveur soit fe80::0011:22ff:fe33:5566/64 et que l'adresse lien-local du client soit fe80::aabb:ccff:fedd:eeff/64,
* le client DHCPv6 envoie un Solicit (sollicite la disponibilité d'un serveur DHCPv6) de [fe80::aabb:ccff:fedd:eeff]:546 à [ff02::1:2]:547.
* le serveur DHCPv6 répond avec un Advertise (annonce qu'il est serveur DHCPv6) de [fe80::0011:22ff:fe33:5566]:547 à [fe80::aabb:ccff:fedd:eeff]:546.
* le client DHCPv6 répond avec un Request (demande qu'on lui alloue une adresse et ses paramètres associés) de [fe80::aabb:ccff:fedd:eeff]:546 à [ff02::1:2]:547 (les messages du client sont envoyés à l'adresse multicast conformément à la section 13 de la RFC 3315).
* le serveur DHCPv6 termine avec un Reply (répond à la demande formulée par le client) [fe80::0011:22ff:fe33:5566]:547 à [fe80::aabb:ccff:fedd:eeff]:546.

## Délégation de préfixe

Un client DHCPv6 peut également demander une délégation de préfixe. Ce sera typiquement le cas d'un routeur pour connexion de particuliers.
* Le client initie une connexion DHCPv6 sur son interface internet (WAN).
* Il reçoit une adresse pour cette interface (par exemple 2001:0db8:2d4:dd75:b9dd:570e:1420:f56/128).
* Il demande, puis reçoit alors un préfixe (par exemple 2001:0db8:26::/48).
* Il configure son interface LAN avec une adresse de ce préfixe, suivant la configuration écrite par l'administrateur du réseau local (par exemple 2001:0db8:26:1::/64).
Le client DHCPv6 peut alors devenir serveur DHCPv6 sur cette interface ou laisser ce rôle à un autre démon. Un démon radvd peut également lancer des Router Advertisements à partir de cette interface.

## Implémentations

* Jagornet DHCPv6, un serveur DHCPv6 certifié IPv6 Phase II Ready implémenté en Java
* WIDE-DHCPv6, une implémentation de DHCPv6 pour BSD et Linux
* Dibbler, une implémentation de DHCPv6 portable pour Linux et Windows
* ISC DHCP, version 4.1.0 et suivantes, pour Solaris, Linux et BSD
* Linux DHCPv6, développement arrêté, déprécié en faveur de ISC DHCP
* Microsoft Windows Vista et successeurs, intégré à Microsoft Windows
* Android ne supporte pas le DHCPv6, en septembre 2015.

## Documents normatifs

* RFC 3315, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)"
* RFC 3319, "Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers"
* RFC 3633, "IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6"
* RFC 3646, "DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)"
* RFC 3736, "Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6"
* RFC 4339, "IPv6 Host Configuration of DNS Server Information Approaches"
* RFC 5007, "DHCPv6 Leasequery"

## Support

Mac OS X depuis la version 10.7 et la plupart des distributions Linux acceptent le protocole DHCPv6. Windows Vista et supérieur également, mais Windows XP a besoin d'un ajout particulier. Android supporte aussi ce protocole.