Ignorer les liens de navigation | |
Quitter l'aperu | |
![]() |
Utilisation de DHCP dans Oracle Solaris 11.1 Oracle Solaris 11.1 Information Library (Français) |
1. A propos de DHCP (présentation)
2. Administration du service DHCP ISC
3. Configuration et administration du client DHCP
Différences entre DHCPv4 et DHCPv6
Gestion des données de configuration réseau par les protocoles client DHCP
Traitement des données de configuration réseau par le client DHCPv4
Traitement des données de configuration réseau par le client DHCPv6
Activation et désactivation d'un client DHCP
Désactivation d'un client DHCP
Options de la commande ipadm utilisées par le client DHCP
Définition des paramètres de configuration du client DHCP
Systèmes clients DHCP avec plusieurs interfaces réseau
Activation d'un client DHCPv4 pour qu'il demande un nom d'hôte spécifique
Systèmes clients DHCP et services de noms
Scripts d'événement client DHCP
Le client DHCP est le démon dhcpagent. Si vous installez Oracle Solaris avec l'interface graphique d'installation du LiveCD, les protocoles DHCPv4 et DHCPv6 sont activés sur le système installé. Si vous installez Oracle Solaris en utilisant le programme d'installation en mode texte, vous êtes invité à sélectionner la manière dont le réseau doit être configuré sur le système installé. Si vous spécifiez la configuration automatique du réseau, les protocoles DHCPv4 et DHCPv6 sont activés sur le système installé.
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 .
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, soit de façon dynamique par le biais de la commande ipadm. Reportez-vous à la page de manuel ipadm(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.
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 (bge0:1), DUID+IAID est utilisé si aucun ID de client n'est configuré.
A 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 à l'aide de la fonction getaddrinfo(3SOCKET)) pour obtenir le nom correspondant. Si vous utilisez uniquement DHCPv6 et souhaitez attribuer un nom spécifique à un noeud, vous devez alors spécifier le nom du noeud à l'aide de la commande svccfg comme suit :
# svccfg -s svc:/system/identity:node setprop config/nodename = astring: hostname
Les deux principales différences entre DHCPv4 et DHCPv6 sont les suivantes :
Modèle administratif
DHCPv4 – L'administrateur active DHCP pour chaque interface. L'administration se fait sur la base d'une interface logique.
DHCPv6 – Aucune configuration explicite n'est utile. Ce protocole est activé sur une interface physique donnée.
Détails du protocole
DHCPv4 – Le serveur DHCP fournit le masque de sous-réseau pour chaque adresse. Une option de nom d'hôte définit le nom de l'hôte à l'échelle du système.
DHCPv6 – Le masque de sous-réseau est fourni par les publications du routeur, et non par le serveur DHCPv6. Il n'existe pas d'option de nom d'hôte DHCPv6.
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 noeud à 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 :
bge0.v6 CLIENT ID=DUID
A 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.
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. Par exemple :
bge0.v6 CLIENT ID=DUID
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.
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 ait été 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. Sur Oracle Solaris par exemple, les options préférentielles peuvent contenir le domaine d'adresse DNS ou NIS d'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.
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 :
bge0.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 :
bge0.v6.PARAM_REQUEST_LIST=21,22,23,24
A 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
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.
Cependant, pour le protocole DHCPv4, vous devez demander le démarrage du client, si cela n'a pas été fait lors de l'installation d'Oracle Solaris. Reportez-vous à la section Activation du client DHCP.
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 ipadm delete-addr. 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.
L'exemple suivant illustre la procédure d'arrêt immédiat de DHCPv6 :
ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf ex# pkill -HUP -x in.ndpd ex# ipadm delete-addr -r dhcp-addrobj
Au démarrage, s'il existe des configurations DHCP sur le système, dhcpagent démarre dans le cadre des processus de script de démarrage. dhcpagent configure alors les interfaces réseau comme décrit dans la section Mode de fonctionnement du protocole DHCP.
A 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 ipadm :
ipadm delete-addr dhcp-addrobj
ou
ipadm delete-addr -r dhcp-addrobj
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 1, A propos de DHCP (présentation).
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 ipadm. 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.
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 demande. 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.
Un client envoie un message de sollicitation pour localiser les serveurs.
Les serveurs envoient un message de publication pour signaler qu'ils se mettent à la disposition du service DHCP.
Un client envoie un message de demande pour solliciter des paramètres de configuration, ainsi que des adresses IP, aux serveurs possédant les valeurs de préférence les plus élevées. Les valeurs de préférence sont définies par l'administrateur et vont de 0 à 255.
Le serveur envoie un message de réponse dans lequel figurent les baux des adresses et les données de configuration.
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 demande, 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 demande.
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 informations de configuration actuelles dans un fichier, si ce fichier existe. Le nom de fichier pour DHCPv4 est /etc/dhcp/interface.dhc et /etc/dhcp/interface.dh6 est pour DHCPv6. Par défaut, le bail est enregistré au lieu d'être libéré. Le serveur DHCP ne peut donc pas détecter si l'adresse IP est en cours d'utilisation, ce qui permet au client de récupérer facilement l'adresse lors de la prochaine initialisation. L'action par défaut est la même que celle initiée par la commande ipadm delete-addr dhcp-addrobj.
Si le bail dans ce fichier est encore valide au redémarrage du système, dhcpagent envoie une demande 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 demande. Dans le cas de DHCPv6, Il s'agit du message de confirmation.
Si le serveur DHCP autorise cette demande, 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.