Guide d'administration système : services IP

Chapitre 16 Configuration et administration du client DHCP

Ce chapitre traite du client DHCP (Dynamic Host Configuration Protocol) faisant partie de Oracle Solaris. Il décrit le mode de fonctionnement des protocoles DHCPv4 et DHCPv6 du client et explique comment vous pouvez modifier le comportement du client.

L'un de ces protocoles, à savoir le protocole DHCPv4, fait depuis longtemps partie de Oracle Solaris. Il permet aux serveurs DHCP de transmettre des paramètres de configuration tels que les adresses réseau IPv4 aux nœuds IPv4.

L'autre protocole, DHCPv6, joue le même rôle auprès des serveurs DHCP en leur donnant la possibilité de communiquer des paramètres de configuration (adresses réseau IPv6, par exemple) aux nœuds IPv6. DHCPv6 est la contrepartie sans état à la spécification « Autoconfiguration d'adresse sans état IPv6 » (RFC 2462). Ce protocole peut être utilisé indépendamment du mode sans état ou lui être associé afin d'obtenir des données de configuration.

Le présent chapitre contient les informations suivantes :

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.

Activation et désactivation d'un client DHCP Oracle Solaris

Pour activer le client DHCP sur un système qui exécute déjà Oracle Solaris sans le service DHCP, vous devez d'abord annuler la configuration du système. Au démarrage du système, vous devez ensuite exécuter plusieurs commandes afin de configurer le système et d'activer le client DHCP.


Remarque –

Dans de nombreux déploiements, il est d'usage de configurer des parties vitales de l'infrastructure en fonction d'adresses IP statiques, au lieu de faire appel au service DHCP. Les raisons pour lesquelles il est préférable de désigner comme clients des périphériques du réseau (routeurs et certains serveurs, par exemple) sortent du cadre de ce manuel.


ProcedureActivation du client DHCP Oracle Solaris

Cette procédure est uniquement nécessaire si le protocole DHCPv4 n'a pas été activé lors de l'installation de Oracle Solaris. Elle ne présente aucun intérêt pour DHCPv6.

  1. Connectez-vous au système client en tant que superutilisateur.

  2. Si ce système fait appel à la préconfiguration plutôt qu'à la configuration interactive, modifiez le fichier sysidcfg. Ajoutez la sous-clé dhcp au mot-clé network_interface dans le fichier sysidcfg.

    Par exemple, network_interface=hme0 {dhcp}. Pour plus d'informations, reportez-vous à la page de manuel sysidcfg(4).

  3. Annulez la configuration et mettez le système hors tension.


    # sys-unconfig
    

    Reportez-vous à la page de manuel sys-unconfig(1M) pour plus d'informations sur les données de configuration qui sont supprimées par cette commande.

  4. Réinitialisez le système après la mise hors tension.

    Si le système recourt à la préconfiguration, la sous-clé dhcp du fichier sysidcfg configure le système pour utiliser le client DHCP au redémarrage du système.

    Dans le cas contraire, vous êtes invité à spécifier les informations de la configuration système par les programmes sysidtool au redémarrage du système. Pour plus d'informations, reportez-vous à la page de manuel sysidtool(1M).

  5. Lorsque vous êtes invité à utiliser DHCP pour configurer les interfaces réseau, choisissez Oui.

ProcedureDésactivation d'un client DHCP Oracle Solaris

  1. Connectez-vous au système client en tant que superutilisateur.

  2. Si vous avez utilisé un fichier sysidcfg pour préconfigurer le système, supprimez la sous-clé dhcp du mot-clé network_interface.

  3. Annulez la configuration et mettez le système hors tension.


    # sys-unconfig
    

    Reportez-vous à la page de manuel sys-unconfig(1M) pour plus d'informations sur les données de configuration qui sont supprimées par cette commande.

  4. Réinitialisez le système après la mise hors tension.

    Si le système fait appel à la préconfiguration, vous n'êtes pas invité à spécifier les informations de configuration et le client DHCP n'est pas configuré.

    Dans le cas contraire, vous êtes invité à spécifier les informations de la configuration système par les programmes sysidtool au redémarrage du système. Pour plus d'informations, reportez-vous à la page de manuel sysidtool(1M).

  5. Lorsque vous êtes invité à utiliser DHCP pour configurer les interfaces réseau, choisissez Non.

Administration du client DHCP

Dans des conditions d'utilisation normales, le logiciel client DHCP Oracle Solaris ne nécessite aucune opération d'administration. Le démon dhcpagent démarre automatiquement au redémarrage du système, rénégocie les baux et s'interrompt à l'arrêt du système. Vous ne pouvez pas lancer et interrompre manuellement le démon dhcpagent. En revanche, en tant que superutilisateur sur le système client, vous pouvez utiliser la commande ifconfig pour changer la façon dont le démon dhcpagent gère l'interface réseau, si nécessaire.

Options de la commande ifconfig utilisées par le client DHCP

Cette section récapitule les options de commande décrites dans la page de manuel ifconfig(1M) La version DHCPv4 de ces commandes se différencie de la version DHCPv6 simplement par le mot-clé « inet6 ». Insérez le mot-clé « inet6 » dans la version DHCPv6, mais omettez-le lorsque vous exécutez DHCPv4.

La commande ifconfig vous permet de réaliser les opérations suivantes :

Définition des paramètres de configuration du client DHCP

Le fichier /etc/default/dhcpagent qui se trouve sur le système client contient des paramètres ajustables pour dhcpagent. Vous pouvez utiliser un éditeur de texte pour modifier plusieurs paramètres ayant une incidence sur le fonctionnement du client. Le fichier /etc/default/dhcpagent est bien documenté, aussi pour plus d'informations, reportez-vous au fichier ainsi qu'à la page du manuel dhcpagent(1M).

Le fichier /etc/dhcp.interface constitue un autre emplacement dans lequel les paramètres affectant le client DHCP sont définis. Les paramètres spécifiés dans ce fichier sont utilisés par les scripts de démarrage du système avec la commande ifconfig. Cette opération a seulement un impact sur DHCPv4, car il n'existe pas d'équivalent pour DHCPv6.

Par défaut, le client DHCP est configuré comme suit :

Pour DHCPv4

Pour DHCPv4 et DHCPv6

Systèmes clients DHCP avec plusieurs interfaces réseau

Le client DHCP peut gérer simultanément plusieurs interfaces sur un même système. Il peut s'agit d'interfaces physiques comme d'interfaces logiques. Chaque interface possède sa propre adresse IP et sa propre durée de bail. Si plusieurs interfaces réseau sont configurées pour DHCP, le client émet des demandes distinctes pour les configurer. Le client conserve alors un jeu de paramètres de configuration réseau pour chaque interface. Bien que les paramètres soient stockés indépendamment les uns des autres, certains d'entre eux ont un caractère général. Les paramètres globaux s'appliquent à l'ensemble du système plutôt qu'à une interface réseau particulière.

Le nom d'hôte, le nom de domaine NIS et le fuseau horaire sont des exemples de paramètres globaux. Les paramètres globaux ont, en principe, des valeurs différentes pour chaque interface. Cependant, une seule valeur peut être utilisée pour chaque paramètre global associé à chaque système. Pour éviter qu'une requête portant sur un paramètre global ne génère plusieurs réponses, seuls les paramètres de l'interface réseau principale sont pris en compte. Vous avez la possibilité d'insérer le mot primary dans le fichier /etc/dhcp. interface pour l'interface que vous souhaitez traiter comme interface principale. Si vous omettez de spécifier le mot-clé primary, c'est la première interface dans l'ordre alphabétique qui est considérée comme interface principale.

Le client DHCP procède de la même manière pour gérer les baux des interfaces logiques et des interfaces physiques, à l'exception de la limitation suivante pour les interfaces logiques :

Noms d'hôtes du client DHCPv4

Par défaut, le client DHCPv4 Oracle Solaris ne fournit pas son propre nom d'hôte car il s'attend à ce que le serveur DHCP le fournisse. Le serveur DHCPv4 Oracle Solaris est configuré par défaut de manière à fournir des noms d'hôtes aux clients DHCPv4. Lorsque vous utilisez ensemble le serveur et le client DHCPv4 Oracle Solaris, ces paramètres par défaut ne posent aucun problème. Cependant, lorsque vous utilisez le client DHCPv4 Oracle Solaris avec des serveurs DHCP tiers, il se peut que le client ne reçoive aucun nom d'hôte du serveur. Si le client DHCP Oracle Solaris ne reçoit aucun nom d'hôte par le biais du service DHCP, le système client vérifie s'il n'existe pas un nom pouvant servir de nom d'hôte dans le fichier /etc/nodename. . Si le fichier est vide, le nom d'hôte prend la valeur unknown.

Si le serveur DHCP propose un nom dans l'option DHCP Hostname, le client utilise ce nom d'hôte, même si une autre valeur figure dans le fichier /etc/nodename. Si vous souhaitez que le client utilise un nom d'hôte spécifique, vous pouvez activer le client de façon à ce qu'il réclame ce nom, comme cela est décrit dans la procédure suivante.


Remarque –

La procédure présentée ci-après ne s'applique pas à tous les serveurs DHCP. Elle implique l'envoi d'un nom d'hôte spécifique au serveur DHCP par le client, lequel s'attend en retour à recevoir le même nom.

Le serveur DHCP n'est pas tenu, cependant, de respecter cette demande. C'est d'ailleurs ce qui se produit dans de nombreux cas. Il se contente souvent de renvoyer un autre nom.


ProcedureActivation d'un client DHCPv4 Oracle Solaris pour une demande de nom d'hôte spécifique

  1. Sur le système client, modifiez le fichier /etc/default/dhcpagent en tant que superutilisateur.

  2. Recherchez le mot-clé REQUEST_HOSTNAME dans le fichier /etc/default/dhcpagent et modifiez-le de la façon suivante :


    REQUEST_HOSTNAME=yes

    Si REQUEST_HOSTNAME est précédé d'un symbole de commentaire (#), supprimez le symbole #. Si le mot-clé REQUEST_HOSTNAME ne figure pas dans le fichier, insérez-le.

  3. Éditez le fichier /etc/hostname. interface sur le système client en ajoutant la ligne suivante :

    inet nom-hôte
    

    nom-hôte est le nom que le client doit utiliser.

  4. Entrez les commandes suivantes pour que le client effectue une négociation DHCP complète à l'issue du redémarrage :


    # ifconfig interface dhcp release
    # reboot
    

    Les données DHCP mises en mémoire cache sur le client sont supprimées. Le client relance le protocole pour demander de nouvelles données de configuration, ainsi qu'un nouveau nom d'hôte. Le serveur DHCP commence par s'assurer que le nom d'hôte n'est pas utilisé par un autre système sur le réseau. Il attribue ensuite le nom d'hôte au client. S'il est configuré à cet effet, le serveur DHCP peut se charger de mettre à jour les services de noms en fonction du nom d'hôte du client.

    Si vous préférez changer le nom d'hôte ultérieurement, répétez l'Étape 3 et l'Étape 4.

Systèmes clients DHCP et services de noms

Les systèmes Oracle Solaris prennent en charge les services de noms suivants : DNS, NIS, NIS+ et un magasin de fichiers local (/etc/inet/hosts). Pour être exploitable, chaque service de noms exige un certain niveau de configuration. Le fichier de configuration du commutateur du service de noms (voir nsswitch.conf(4)) doit également être configuré correctement pour indiquer les services de noms à utiliser.

Pour qu'un système client DHCP utilise un service de noms, il est indispensable de configurer le système en tant que client du service de noms. Par défaut, sauf si vous en avez décidé autrement lors de l'installation du système, seuls les fichiers locaux sont pris en compte.

Le tableau suivant récapitule les problèmes ayant trait à chaque service de noms et à DHCP. Il propose des liens vers de la documentation de référence contenant des informations utiles sur la configuration des clients pour chaque service de noms.

Tableau 16–1 Informations sur la configuration des services de noms pour les systèmes clients DHCP

Service de noms  

Informations relatives à la configuration du client 

NIS 

Si vous utilisez un service DHCP Oracle Solaris pour envoyer des informations concernant l'installation d'un réseau Oracle Solaris à un système client, vous pouvez utiliser une macro de configuration contenant les options NISservs et NISdmain. Ces options ont pour effet de transmettre les adresses IP des serveurs NIS et du nom de domaine NIS au client. Le client devient ensuite automatiquement un client NIS.

Si un système client DHCP exécute déjà Oracle Solaris, le client NIS n'est pas automatiquement configuré sur ce système lorsque le serveur DHCP envoie les informations NIS au client. 

Si le serveur DHCP est configuré pour communiquer des informations NIS au système client DHCP, vous pouvez connaître les valeurs transmises au client si vous utilisez la commande dhcpinfo sur le client de la façon suivante :

# /sbin/dhcpinfo NISdmain

# /sbin/dhcpinfo NISservs


Remarque –

Pour DHCPv6, veillez à inclure -v6 ainsi que divers mots-clés de protocole dans la commande.

# /sbin/dhcpinfo -v6 NISDomain

# /sbin/dhcpinfo -v6 NISServers


Utilisez les valeurs renvoyées pour le nom de domaine NIS et les serveurs NIS lorsque vous configurez le système en tant que client NIS. 

Pour configurer un client NIS pour un système client DHCP Oracle Solaris, procédez de manière habituelle comme indiqué au Chapitre 5, Setting Up and Configuring NIS Service du System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).


Astuce –

Vous pouvez créer un script en y faisant figurer les commandes dhcpinfo et ypinit afin d'automatiser la configuration du client NIS sur des systèmes clients DHCP.


NIS+ 

Si le client NIS+ d'un système client DHCP est configuré de façon conventionnelle, le serveur DHCP risque parfois de communiquer au client des adresses différentes. Cela pose un problème en terme de sécurité dans la mesure où la fonction de sécurité NIS+ intègre l'adresse IP dans la configuration. Pour s'assurer que votre client possède toujours la même adresse, configurez le client NIS+ pour un système client DHCP de façon non standard, comme cela est décrit dans la section Configuration des clients DHCP en tant que clients NIS+.

Si une adresse IP a été assignée de façon manuelle au système client DHCP, l'adresse du client est systématiquement la même. Vous pouvez configurer le client NIS+ de façon conventionnelle, comme indiqué à la section Setting Up NIS+ Client Machines du System Administration Guide: Naming and Directory Services (NIS+).

/etc/inet/hosts

Vous devez configurer le fichier /etc/inet/hosts d'un système client DHCP devant utiliser /etc/inet/hosts pour son service de noms.

Le nom d'hôte du système client DHCP est ajouté à son propre fichier /etc/inet/hosts par les outils DHCP. Il convient, cependant, d'ajouter manuellement le nom d'hôte aux fichiers /etc/inet/hosts des autres systèmes dans le réseau. Si le système serveur DHCP utilise /etc/inet/hosts pour la résolution de nom, vous devez également insérer manuellement le nom d'hôte du client sur le système.

DNS 

Si le système client DHCP reçoit le nom de domaine DNS via DHCP, le fichier /etc/resolv.conf du système client est configuré automatiquement. Le fichier /etc/nsswitch.conf est également mis à jour automatiquement afin d'ajouter dns à la ligne hosts après tout autre service de noms dans l'ordre de recherche. Pour plus d'informations au sujet de DNS, reportez-vous au manuel System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Configuration des clients DHCP en tant que clients NIS+

Vous pouvez utiliser le service de noms NIS+ sur des systèmes Oracle Solaris faisant office de clients DHCP. Toutefois, si votre serveur DHCP est capable de fournir des adresses différentes à différents moments, cela permet de contourner l'une des fonctions de sécurité de NIS+, à savoir la création d'informations d'identification DES (Data Encryption Standard). Pour travailler dans des conditions de sécurité optimales, configurez le serveur DHCP de façon à ce qu'il propose systématiquement la même adresse. Lorsque vous configurez un client NIS+ qui n'a pas recours à DHCP, vous ajoutez au serveur NIS+ des informations d'identification DES uniques pour le client. Il y a différentes façons de créer des informations d'identification. Vous pouvez, par exemple, utiliser le script nisclient ou la commande nisaddcred.

Pour pouvoir générer des informations d'identification NIS+, le client doit avoir un nom d'hôte statique qui permette de créer et de stocker ce type d'information. Si vous avez l'intention d'utiliser NIS+ et DHCP, il est impératif de définir des informations d'identification réservées à tous les noms d'hôtes des clients DHCP. Quels que soit l'adresse IP et le nom d'hôte associé reçus par un client DHCP, le client peut utiliser les mêmes informations d'identification DES.

La procédure suivante montre comment générer des informations d'identification pour l'ensemble des noms d'hôtes DHCP. Elle n'a d'intérêt que si vous connaissez les noms d'hôtes utilisés par les clients DHCP. Lorsque le serveur DHCP génère les noms d'hôtes, par exemple, vous avez une idée précise des noms d'hôtes susceptibles d'être reçus par un client.

ProcedureConfiguration des clients DHCP Oracle Solaris en tant que clients NIS+

Un système client DHCP censé devenir un client NIS+ doit exploiter les informations d'identification appartenant à un autre système client NIS+ dans le domaine NIS+. Cette procédure permet de produire uniquement des informations d'identification pour le système, lesquelles s'appliquent exclusivement au superutilisateur connecté au système. Tout autre utilisateur se connectant au système client DHCP doit posséder ses propres informations d'identification au niveau du serveur NIS+. Ces informations d'identification sont définies conformément à la procédure décrite dans le manuel System Administration Guide: Naming and Directory Services (NIS+).

  1. Créez les informations d'identification pour un client en entrant la commande suivante sur le serveur NIS+ :


    # nisgrep nisplus-client-name cred.org_dir > /tmp/file
    

    Cette commande inscrit l'entrée de table cred.org_dir pour le client NIS+ dans un fichier temporaire.

  2. Servez-vous de la commande cat pour afficher le contenu du fichier temporaire.

    Vous pouvez également utiliser un éditeur de texte.

  3. Copiez les informations d'identification réservées aux clients DHCP.

    Vous devez copier la clé publique et la clé privée (longues chaînes de chiffres et de lettres séparés par le signe deux-points). Les informations d'identification sont destinées à être collées dans la commande exécutée à l'étape suivante.

  4. Ajoutez les informations d'identification pour un client DHCP en tapant la commande suivante :


    # nistbladm -a cname=" dhcp-client-name@nisplus-domain" auth_type=DES \
    auth_name="unix.dhcp-client-name@nisplus-domain" \
    public_data=copied-public-key \ 
    private_data=copied-private-key
    

    Pour la clé-publique-copiée, collez les informations relatives à la clé publique à partir du fichier temporaire. Pour la clé-privée-copiée, collez les informations relatives à la clé privée à partir du fichier temporaire.

  5. Copiez à distance les fichiers à partir du système client NIS+ vers le système client DHCP en tapant les commandes suivantes sur le système client DHCP :


    # rcp nisplus-client-name:/var/nis/NIS_COLD_START /var/nis
    # rcp nisplus-client-name:/etc/.rootkey /etc
    # rcp nisplus-client-name:/etc/defaultdomain /etc
    

    Si vous obtenez un message signalant un problème de permission, il est possible que les systèmes ne soient pas configurés pour autoriser la copie à distance. Dans ce cas, il suffit de copier les fichiers en tant qu'utilisateur normal vers un emplacement intermédiaire. En tant que superutilisateur, copiez les fichiers depuis l'emplacement intermédiaire vers l'emplacement approprié sur le système client DHCP.

  6. Copiez le fichier du commutateur du service de noms qui convient pour NIS+ en entrant la commande suivante sur le système client DHCP :


    # cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    
  7. Redémarrez le système client DHCP.

    Le système client DHCP doit désormais être en mesure d'utiliser les services NIS+.


Exemple 16–1 Configuration d'un système client DHCP Oracle Solaris en tant que client NIS+

L'exemple suivant suppose que vous disposez d'un système nisei, considéré comme un client NIS+ dans le domaine NIS+ dev.example.net . Vous disposez également d'un système client DHCP (dhow) et souhaitez que dhow devienne un client NIS+.


(First log in as superuser on the NIS+ server)
# nisgrep nisei cred.org_dir > /tmp/nisei-cred
# cat /tmp/nisei-cred
nisei.dev.example.net.:DES:unix.nisei@dev.example.net:46199279911a84045b8e0
c76822179138173a20edbd8eab4:90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830
c05bc1c724b
# nistbladm -a cname="dhow@dev.example.net." \
auth_type=DES auth_name="unix.dhow@dev.example.net" \
public_data=46199279911a84045b8e0c76822179138173a20edbd8eab4 \
private_data=90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830\
c05bc1c724b
# rlogin dhow
(Log in as superuser on dhow)
# rcp nisei:/var/nis/NIS_COLD_START /var/nis
# rcp nisei:/etc/.rootkey /etc
# rcp nisei:/etc/defaultdomain /etc
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
# reboot

Le système client DHCP dhow doit désormais être capable d'exploiter les services NIS+.



Exemple 16–2 Ajout d'informations d'identification à l'aide d'un script

Si vous souhaitez configurer un grand nombre de systèmes clients DHCP en tant que clients NIS+, le mieux est d'écrire un script. Un script est très pratique pour ajouter les entrées dans la table NIS+ cred.org_dir. Voici un exemple de script caractéristique.


#! /usr/bin/ksh  
# 
# Copyright (c) by Sun Microsystems, Inc. All rights reserved. 
# 
# Sample script for cloning a credential. Hosts file is already populated  
# with entries of the form dhcp-[0-9][0-9][0-9]. The entry we're cloning 
# is dhcp-001. 
#  
#  
PUBLIC_DATA=6e72878d8dc095a8b5aea951733d6ea91b4ec59e136bd3b3 
PRIVATE_DATA=3a86729b685e2b2320cd7e26d4f1519ee070a60620a93e48a8682c5031058df4
HOST="dhcp-" 
DOMAIN="mydomain.example.com"  
 
for 
i in 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
do         
     print - ${HOST}${i}         
     #nistbladm -r [cname="${HOST}${i}.${DOMAIN}."]cred.org_dir         
     nistbladm -a cname="${HOST}${i}.${DOMAIN}." \
         auth_type=DES auth_name="unix.${HOST}${i}@${DOMAIN}" \
         public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
done  
 
exit 0

Scripts d'événement client DHCP

Vous pouvez configurer le client DHCP Oracle Solaris de façon à l'utiliser comme un programme ou un script exécutable en vue d'effectuer toute actions nécessaire sur le système client. Le programme ou le script, appelé script d'événement, est exécuté automatiquement dès que certains événements liés au bail DHCP se produisent. Vous pouvez vous servir du script d'événement pour exécuter d'autres commandes, programmes ou scripts en réponse à des événements de bail spécifiques. Pour ce faire, vous devez fournir votre propre script d'événement.

Les mots-clés d'événement suivants sont utilisés par dhcpagent pour signifier des événements de bail DHCP :

Mot-clé d'événement

Description

BOUND et BOUND6

L'interface est configurée pour DHCP. Le client reçoit l'accusé de réception (DHCPv4 ACK) ou (DHCPv6 Reply ) du serveur DHCP, qui lui accorde la demande de bail pour une adresse IP. Le script d'événement est appelé immédiatement après la configuration de l'interface.

EXTEND et EXTEND6

Le client prolonge le bail de la ligne spécialisée. Le script d'événement est appelé dès que le client reçoit l'accusé de réception du serveur DHCP ayant trait à la demande de renouvellement.

EXPIRE et EXPIRE6

Le bail expire à la date butoir fixée. Pour DHCPv4, le script d'événement est appelé avant la suppression de l'adresse louée de l'interface et l'interface est signalée comme arrêtée. Pour DHCPv6, le script d'événement est appelé avant la suppression des dernières adresses louées de l'interface.

DROP et DROP6

Le client abandonne la ligne spécialisée pour retirer l'interface du contrôle de DHCP. Le script d'événement est appelé juste avant que l'interface n'échappe au contrôle de DHCP.

RELEASE et RELEASE6

Le client libère l'adresse IP. Le script d'événement est appelé juste avant que le client ne libère l'adresse sur l'interface et n'envoie le paquet DHCPv4 RELEASE ou DHCPv6 Release au serveur DHCP.

INFORM et INFORM6

Une interface se procure des données de configuration nouvelles ou mises à jour à partir d'un serveur DHCP par l'intermédiaire du paquet DHCPv4 INFORM ou du message DHCPv6 Information-Request. Ces événements se produisent si le client DHCP obtient uniquement les paramètres de configuration du serveur, mais pas le bail d'une adresse IP.

LOSS6

Pendant la phase d'expiration, lorsqu'il reste un ou plusieurs baux valides, le script d'événement est appelé juste avant la suppression des adresses expirées. Les adresses effacées sont signalées par l'indicateur IFF_DEPRECATED.

Pour chacun de ces événements, dhcpagent exécute la commande suivante :


/etc/dhcp/eventhook interface event

interface représente l'interface faisant appel à DHCP et événement correspond à un des mots-clés d'événement décrits précédemment. Par exemple, la première fois que vous configurez l'interface ce0 pour DHCP, dhcpagent appelle le script d'événement de la façon suivante :


/etc/dhcp/eventhook ce0 BOUND

Pour utiliser la fonction de script d'événement, vous devez effectuer les opérations suivantes :

Le script d'événement hérite son environnement de programme de dhcpagent et s'exécute avec les privilèges root. Il peut faire appel à l'utilitaire dhcpinfo pour obtenir des informations supplémentaires au sujet de l'interface, si cela est nécessaire. Pour plus d'informations, reportez-vous à la page de manuel dhcpinfo(1).

Le démon dhcpagent attend que le script d'événement prenne fin pour tous les événements. Si le script d'événement ne se termine au bout de 55 secondes, dhcpagent envoie un signal SIGTERM au processus du script. Si le processus ne se termine par au bout de trois secondes supplémentaires, le démon envoie un signal SIGKILL pour interrompre le processus.

Vous trouverez un exemple de script d'événement dans la page de manuel dhcpagent(1M).

L'Exemple 16–3 illustre l'utilisation d'un script d'événement DHCP pour maintenir le contenu du fichier /etc/resolv.conf à jour. Lorsque les événements BOUND et EXTEND se produisent, le script remplace les noms du serveur de domaine et du serveur de noms. Lorsque les événements EXPIRE, DROP et RELEASE se produisent, le script supprime les noms du serveur de domaine et du serveur de noms du fichier.


Remarque –

Le script proposé en exemple considère que DHCP est la source qui fait autorité pour les noms du serveur de domaine et le serveur de noms. Il suppose également que toutes les interfaces sous le contrôle de DHCP renvoient des informations cohérentes et à jour. Il est possible que ces conditions ne soient pas réunies sur votre système.



Exemple 16–3 Script d'événement pour la mise à jour du fichier /etc/resolv.conf

#!/bin/ksh -p

PATH=/bin:/sbin export PATH
umask 0222

# Refresh the domain and name servers on /etc/resolv.conf

insert ()
{
	dnsservers=`dhcpinfo -i $1 DNSserv`
	if [ -n "$dnsservers" ]; then
		# remove the old domain and name servers
		if [ -f /etc/resolv.conf ]; then
			rm -f /tmp/resolv.conf.$$
			sed -e '/^domain/d' -e '/^nameserver/d' \
			    /etc/resolv.conf > /tmp/resolv.conf.$$
		fi

		# add the new domain
		dnsdomain=`dhcpinfo -i $1 DNSdmain`
		if [ -n "$dnsdomain" ]; then
			echo "domain $dnsdomain" >> /tmp/resolv.conf.$$
		fi

		# add new name servers
		for name in $dnsservers; do
			echo nameserver $name >> /tmp/resolv.conf.$$
		done
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

# Remove the domain and name servers from /etc/resolv.conf

remove ()
{
	if [ -f /etc/resolv.conf ]; then
		rm -f /tmp/resolv.conf.$$
		sed -e '/^domain/d' -e '/^nameserver/d' \
		    /etc/resolv.conf > /tmp/resolv.conf.$$
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

case $2 in
BOUND | EXTEND)
	insert $1
	exit 0
	;;
EXPIRE | DROP | RELEASE)
	remove
	exit 0
	;;
*)
	exit 0
	;;
esac