Guide d'administration système : services IP

Client DHCP Oracle Solaris

Le client DHCP Oracle Solaris correspond au démon dhcpagent faisant partie de Oracle Solaris. Lorsque vous installez Oracle Solaris, vous êtes invité à configurer les interfaces réseau par le biais du service DHCP. Si vous choisissez d'utiliser le protocole DHCPv4, ce dernier est activé sur votre système pendant l'installation de Oracle Solaris. Il n'existe aucune option spécifique au protocole DHCPv6 à appliquer lors de l'installation. Et qu'en est-il si IPv6 est activé ? DHCPv6 est également activé sur un réseau local compatible avec DHCPv6.

Vous ne devez effectuer aucune autre action sur le client Oracle Solaris pour utiliser le protocole DHCP. La configuration du serveur DHCP détermine les informations communiquées aux systèmes clients DHCP faisant appel au service DHCP.

Si un système client exécute déjà Oracle Solaris sans le service DHCP, vous devez le reconfigurer pour pouvoir utiliser le service DHCP. Vous pouvez également reconfigurer un système client DHCP de façon à ce qu'il cesse d'utiliser le protocole DHCP et qu'il exploite les informations de réseau statiques que vous fournissez. Pour plus d'informations, reportez-vous à la section Activation et désactivation d'un client DHCP Oracle Solaris.

Serveur DHCPv6

Aucun serveur DHCPv6 n'est disponible par le biais de Sun Microsystems pour &ProductBase. Les serveurs proposés par des tiers sont compatibles avec DHCPv6 de Sun. Si le réseau comporte un serveur DHCPv6, le client DHCPv6 de Sun l'utilise.

Pour plus d'informations sur le serveur DHCPv4 Sun, reportez-vous à la section Serveur DHCP Oracle Solaris.

Différences entre DHCPv4 et DHCPv6

Les deux principales différences entre DHCPv4 et DHCPv6 concernent les aspects suivants :

Modèle administratif

DHCPv4 exige une configuration explicite du client. Vous devez configurer le système DHCPv4 pour effectuer une procédure d'adressage chaque fois que cela est nécessaire, soit lors de l'installation initiale du système ou soit de façon dynamique par le biais des options ifconfig(1M).

DHCPv6 ne nécessite pas de configuration explicite du client. DHCP est une caractéristique inhérente du réseau. Le signal permettant d'utiliser ce protocole est acheminé dans les messages des publications du routeur à partir des routeurs locaux. Le client DHCP crée et détruit automatiquement les interfaces logiques chaque fois que cela est nécessaire.

Le mécanisme DHCPv6 est très similaire, d'un point de vue administratif, à la configuration d'adresse sans état (automatique) IPv6 existante. Dans le cas d'une configuration d'adresse sans état, il est nécessaire d'appliquer un indicateur au routeur local afin d'indiquer que, pour un nombre donné de préfixes, chaque client est tenu de configurer automatiquement une adresse par lui-même en utilisant le préfixe publié plus un jeton d'interface local ou un nombre aléatoire. En ce qui concerne DHCPv6, les mêmes préfixes sont exigés mais les adresses sont acquises et gérées via un serveur DHCPv6 au lieu d'être assignées de façon aléatoire.

Adresse MAC et ID de client

DHCPv4 utilise l'adresse MAC et un ID de client facultatif pour identifier le client dans le but d'assigner une adresse. Chaque fois que le même client se connecte au réseau, il obtient la même adresse dans la mesure du possible.

DHCPv6 procède essentiellement de la même manière, mais rend l'ID de client obligatoire et impose une structure. L'ID de client dans DHCPv6 se compose de deux parties : Un identificateur unique DHCP (DUID) et un identificateur d'association d'identité (IAID). Le DUID identifie le système client (et non pas seulement une interface, comme dans DHCPv4), et l'IAID identifie l'interface sur ce système.

Comme indiqué dans le document RFC 3315, une association d'identité est le moyen utilisé par un serveur et un client pour identifier, regrouper et gérer un ensemble d'adresses IPv6 liées. Le client doit lier au moins une association d'identité (IA) distincte à chacune de ses interfaces réseau. Il utilise ensuite les IA assignées pour obtenir des informations de configuration d'un serveur pour cette interface. Pour plus d'informations sur les IA, reportez-vous à la section suivante (Détails du protocole).

Il est possible également d'associer DUID+IAID avec DHCPv4. Vous pouvez concaténer ces identificateurs sans ambiguïté pour vous en servir comme ID de client. Pour des raisons de compatibilité, cela ne s'applique pas aux interfaces IPv4 standard. En revanche, pour les interfaces logiques ("hme0:1"), DUID+IAID est utilisé si aucun ID de client n'est configuré.

À la différence d'IPv4 DHCP, DHCPv6 n'offre pas d'option « nom de client ». Il n'y a donc aucun moyen de nommer vos systèmes en les basant uniquement sur DHCPv6. Si vous avez besoin de connaître le nom DNS associé à une adresse fournie par DHCPv6, utilisez la résolution inverse DNS (requête adresse vers nom via la fonction getaddrinfo(3SOCKET)) pour obtenir le nom correspondant. Si vous utilisez uniquement DHCPv6 et souhaitez attribuer un nom spécifique à un nœud, vous devez alors définir /etc/nodename sur votre système.

Détails du protocole

Avec DHCPv4, le serveur DHCP fournit le masque du sous-réseau à associer à l'adresse assignée. Avec DHCPv6, le masque du sous-réseau (appelé aussi « longueur du préfixe ») est attribué par les publications du routeur et n'est pas géré par le serveur DHCP.

DHCPv4 dispose d'une option Hostname prévue pour définir le nom du nœud à l'échelle du système. DHCPv6 ne propose pas ce type d'option.

Pour configurer un ID de client pour DHCPv6, vous devez spécifier un DUID au lieu de permettre au système d'en choisir un automatiquement. Vous pouvez le faire de façon globale pour le démon ou procéder interface par interface. Pour définir le DUID global, respectez le format suivant (notez la présence du point initial) :

.v6.CLIENT_ID=<DUID>

Pour configurer une interface de façon à utiliser un DUID précis (et donner l'impression que le système est constitué de multiples clients indépendants pour le serveur DHCPv6), tapez la commande suivante :

hme0.v6.CLIENT ID=<DUID>

À chaque association d'identité (IA) correspond un type d'adresse. Une association d'identité pour des adresses temporaires (IA_TA) contient, par exemple, des adresses provisoires, alors qu'une association d'identité pour des adresses non temporaires (IA_NA) dispose d'adresses allouées de façon permanente. La version de DHCPv6 décrite dans ce manuel offre uniquement des associations IA_NA.

Oracle Solaris assigne sur demande une IAID à chaque interface. Cette dernière est stockée dans un fichier à l'intérieur du système de fichiers racine de façon à rester la même pendant tout le cycle de vie de la machine.

Interfaces logiques

Au niveau du client DHCPv4, chaque interface logique est considérée comme indépendante et comme une unité d'administration. Outre l'interface logique numéro zéro (laquelle adopte par défaut l'adresse MAC de l'interface comme identificateur), l'utilisateur a la possibilité de configurer des interfaces logiques spécifiques afin d'exécuter DHCP en spécifiant un CLIENT_ID dans le fichier de configuration dhcpagent. Exemple :

hme0:1.CLIENT_ID=orangutan

DHCPv6 ne procède pas de la même manière. L'interface logique numéro zéro sur une interface IPv6, à la différence d'IPv4, est toujours une adresse lien-local. une adresse lien-local sert à assigner automatiquement une adresse IP à un périphérique sur un réseau IP lorsque aucune autre méthode d'affectation n'est disponible, comme par exemple un serveur DHCP. L'interface logique numéro zéro ne peut pas être placée sous le contrôle de DHCP. Aussi, même si DHCPv6 est exécuté sur l'interface logique numéro zéro (appelée également interface « physique »), il alloue les adresses uniquement aux interfaces logiques n'ayant pas le numéro zéro.

En réponse à une demande du client DHCPv6, le serveur DHCPv6 renvoie une liste d'adresses à configurer par le client.

Négociation d'options

Dans DHCPv6, vous disposez d'une fonction de demande d'option qui donne une indication au serveur sur les préférences d'affichage du client. Si toutes les options possibles ont été transmises du serveur au client, il est possible qu'une partie des informations doive être abandonnée en chemin. Le serveur peut utiliser l'indication pour sélectionner les options à inclure dans la réponse. Il peut également l'ignorer et choisir d'inclure d'autres éléments. Par exemple, sur Oracle Solaris, les options de préférence peuvent contenir le domaine d'adresse DNS ou NIS de Oracle Solaris, mais ne contiendront probablement pas le serveur NetBIOS.

Le même type d'indication est fourni pour DHCPv4, mais sans la fonction de demande d'option spéciale. Au lieu de cela, DHCPv4 utilise la liste PARAM_REQUEST_LIST dans /etc/default/dhcpagent.

Syntaxe de configuration

Configurez le client DHCPv6 de la même manière que le client DHCPv4 existant, à l'aide de /etc/default/dhcpagent.

La syntaxe inclut en plus le marqueur ".v6", inséré entre le nom de l'interface (le cas échéant) et le paramètre à configurer. Par exemple, la liste des demandes d'option IPv4 globale est configurée comme suit :

PARAM_REQUEST_LIST=1,3,6,12,15,28,43

Il est possible de configurer une interface individuelle afin d'omettre l'option de nom d'hôte comme suit :

hme0.PARAM_REQUEST_LIST=1,3,6,15,28,43

Pour définir une liste de demandes globale pour DHCPv6, n'oubliez pas le point initial :

.v6.PARAM_REQUEST_LIST=23,24

Suivez cet exemple pour configurer une interface individuelle :

hme0.v6.PARAM_REQUEST_LIST=21,22,23,24

À titre de référence, voici à quoi ressemble un fichier /etc/default/dhcpagent pour la configuration DHCPv6 :


# The default DHCPv6 parameter request list has preference (7), unicast (12),
# DNS addresses (23), DNS search list (24), NIS addresses (27), and
# NIS domain (29).  This may be changed by altering the following parameter- 
# value pair.  The numbers correspond to the values defined in RFC 3315 and 
# the IANA dhcpv6-parameters registry. 
.v6.PARAM_REQUEST_LIST=7,12,23,24,27,29

Démarrage du client DHCP

Dans la plupart des cas, vous n'avez pas à intervenir pour lancer le client DHCPv6. Le démon in.ndpd démarre automatiquement DHCPv6 lorsque cela est nécessaire. Il peut être nécessaire de définir /etc/hostname6.$IFNAME pour configurer une interface afin de la monter pour IPv6 au démarrage. Le programme d'installation s'en charge, cependant, si vous activez IPv6 sur votre système au moment de l'installation.

Cependant, pour le protocole DHCPv4, vous devez demander le démarrage du client, si cela n'a pas été fait lors de l'installation de Oracle Solaris. Reportez-vous à la section Activation du client DHCP Oracle Solaris.

Le démon dhcpagent obtient les informations de configuration nécessaires aux autres processus impliqués dans l'initialisation du système. C'est pour cette raison que les scripts de démarrage du système lancent dhcpagent au tout début du processus d'initialisation et attendent l'arrivée des informations de configuration du réseau provenant du serveur DHCP.

Bien que la procédure par défaut consiste à exécuter DHCPv6, vous pouvez en décider autrement. Vous pouvez arrêter DHCPv6 à l'aide de la commande ifconfig. Rien ne vous empêche également de désactiver DHCPv6 pour éviter son lancement au redémarrage. Il suffit pour cela de modifier le fichier /etc/inet/ndpd.conf.

Voici par exemple comment arrêter immédiatement DHCPv6 sur l'interface appelée hme0.


ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf  
ex# pkill -HUP -x in.ndpd   
ex# ifconfig hme0 inet6 dhcp release

La présence du fichier /etc/dhcp. interface (par exemple, /etc/dhcp.ce0 sur un système Sun Fire 880) oblige les scripts de démarrage à utiliser DHCPv4 sur l'interface spécifiée. Dès qu'ils trouvent un fichier dhcp. interface, les scripts de démarrage exécutent dhcpagent.

Après le démarrage, dhcpagent attend de recevoir des instructions pour configurer une interface réseau. Les scripts de démarrage exécutent la commande ifconfig interface dhcp start, qui donne l'instruction à dhcpagent de démarrer DHCPv4 comme indiqué à la section Mode de fonctionnement du protocole DHCP. Si le fichier dhcp.interface contient des commandes, celles-ci sont ajoutées à l'option dhcp start de la commande ifconfig. Pour plus d'informations sur les options utilisées avec la commande ifconfig interface dhcp, reportez-vous à la page de manuel ifconfig(1M).

Communication DHCPv6

À la différence de DHCPv4, lequel est appelé par configuration manuelle, DHCPv6 est exécuté par les publications du routeur (RAs). Selon le mode de configuration du routeur, le système appelle automatiquement DHCPv6 au niveau de l'interface sur laquelle le message Router Advertisement a été reçu et utilise DHCP pour obtenir une adresse et d'autres paramètres, ou demande uniquement les données autres que l'adresse (serveurs DNS, par exemple) avec DHCPv6.

Le démon in.ndpd réceptionne le message des publications du routeur. Il effectue cette opération de façon automatique sur toutes les interfaces montées pour IPv6 sur le système. Lorsque in.ndpd découvre un RA exigeant l'exécution de DHCPv6, il fait appel à DHCPv6.

Pour éviter que in.ndpd ne démarre DHCPv6, il suffit de modifier le contenu du fichier /etc/inet/ndpd.conf.

Vous pouvez également arrêter DHCPv6 en utilisant l'une des versions suivantes de la commande ifconfig :

ifconfig <interface> inet6 dhcp drop

Ou :

ifconfig <interface> inet6 dhcp release

Gestion des données de configuration réseau par les protocoles client DHCP

Les protocoles client DHCPv4 et DHCPv6 procèdent de différentes manières pour gérer les données de configuration réseau. Avec DHCPv4, la négociation porte sur le bail d'une seule adresse et de quelques options supplémentaires. Avec DHCPv6, la négociation concerne un lot d'adresses et un ensemble d'options.

Pour plus d'informations sur l'interaction entre le client DHCPv4 et le serveur, reportez-vous au Chapitre 12Service DHCP Oracle Solaris (présentation).

Traitement des données de configuration réseau par le client DHCPv4

Après avoir obtenu un paquet de données du serveur DHCP, dhcpagent se charge de configurer l'interface réseau et d'afficher l'interface. Le démon contrôle l'interface pendant toute la durée du bail de l'adresse IP et gère les données de configuration dans une table interne. Les scripts de démarrage du système utilisent la commande dhcpinfo pour extraire les valeurs des options de configuration à partir de la table interne. Les valeurs servent à configurer le système et lui permettent de communiquer sur le réseau.

Le démon dhcpagent attend de façon passive pendant un laps de temps qui équivaut généralement à la moitié de la durée du bail. Il envoie ensuite une demande de prolongement du bail à un serveur DHCP. Si le système signale à dhcpagent que l'interface est arrêtée ou que l'adresse IP a changé, le démon ne prend pas le contrôle de l'interface tant qu'il n'en reçoit pas l'instruction de la commande ifconfig. Si dhcpagent constate que l'interface fonctionne et que l'adresse n'a pas changé, le démon demande un renouvellement de bail au serveur. Si le renouvellement n'est pas possible, dhcpagent arrête l'interface à la fin du bail.

Chaque fois que dhcpagent effectue une action ayant trait au bail, le démon recherche un fichier exécutable appelé /etc/dhcp/eventhook. S'il trouve un fichier exécutable ayant ce nom, dhcpagent lance ce fichier. Pour plus d'informations sur l'utilisation d'un fichier exécutable d'événement, reportez-vous à la section Scripts d'événement client DHCP.

Traitement des données de configuration réseau par le client DHCPv6

La communication DHCPv6 entre le client et le serveur commence par l'envoi d'un message de sollicitation par le client qui lui permet de localiser les serveurs. En guise de réponse, tous les serveurs disponibles pour le service DHCP envoient un message de publication. Le message du serveur contient plusieurs enregistrements IA_NA ainsi que d'autres options (telles que les adresses serveur DNS) susceptibles d'être fournies par le serveur.

Un client peut demander des adresses particulières (et même un grand nombre) en définissant ses propres enregistrements IA_NA/IAADDR dans son message de requête. Cela est généralement le cas lorsqu'il possède d'anciennes adresses enregistrées et qu'il souhaite obtenir les mêmes du serveur, dans la mesure du possible. Quel que soit le comportement du client (même s'il ne demande aucune adresse), le serveur peut fournir un nombre quelconque d'adresses au client lors d'une même transaction DHCPv6.

Voici comme se déroule le dialogue entre les clients et les serveurs.

Si la valeur de préférence dans le message de publication équivaut à 255, le client DHCPv6 sélectionne immédiatement ce serveur. Si le serveur privilégié ne répond pas ou ne parvient pas à adresser un message en réponse au message de requête, le client continue de rechercher des serveurs (en fonction de l'ordre de préférence) jusqu'à ce qu'il ne reste plus de messages de publication. Arrivé à ce stade, le client recommence la procédure en envoyant à nouveau des messages de sollicitation.

Le serveur choisi envoie un message de réponse contenant les adresses assignées et les paramètres de configuration en réponse à un message de sollicitation ou de requête.

Arrêt du client DHCP

Lors de la mise à l'arrêt, le client envoie un message de libération au serveur ayant alloué des adresses au client pour lui indiquer qu'il n'utilisera plus une ou plusieurs adresses assignées. Lors de l'arrêt normal du système client DHCPv4, dhcpagent écrit les données de configuration actuelles dans le fichier /etc/dhcp/ interface.dhc ou dans le fichier /etc/dhcp/ interface.dh6 pour DHCPv6. Par défaut, le bail est enregistré au lieu d'être libéré. Le serveur DHCP ignore donc si l'adresse IP est en cours d'utilisation, ce qui permet au client de récupérer facilement l'adresse lors du prochain démarrage. L'action par défaut est la même que celle initiée par la commande ifconfig <interface> dhcp drop.

Si le bail dans ce fichier est encore valide au redémarrage du système, dhcpagent envoie une requête abrégée afin d'utiliser la même adresse IP et les mêmes données de configuration. Dans le cas de DHCPv4, il s'agit du message de requête. Dans le cas de DHCPv6, Il s'agit du message de confirmation.

Si le serveur DHCP autorise cette requête, dhcpagent peut exploiter les informations qu'il a inscrites sur disque lors de l'arrêt du système. Dans le cas contraire, dhcpagent lance la séquence du protocole DHCP décrite à la section Mode de fonctionnement du protocole DHCP. Le client est en mesure ainsi d'obtenir de nouvelles données de configuration réseau.