Configuration d'un serveur DHCP

Vous pouvez configurer un serveur DHCP en utilisant le fichier de configuration /etc/dhcpd.conf.

DHCP utilise également le fichier /var/lib/dhcp/dhcpd.leases pour stocker la base de données d'attribution client. Reportez-vous à la la section intitulée Base de données d'attribution pour plus d'informations.

Fichier de configuration

La première étape lors de la configuration d'un serveur DHCP consiste à créer le fichier de configuration stockant les informations réseau pour les clients. Des options globales peuvent être choisies pour tous les clients, ou des options spécifiques pour chaque système client.

Le fichier de configuration peut contenir des tabulations ou lignes vierges complémentaires pour faciliter le formatage. Les mots clés ne sont pas sensibles à la casse, et les lignes commençant par un dièse (#) correspondent à des commentaires.

Il y a deux types d'informations dans le fichier de configuration :

Certains paramètres doivent commencer par le mot-clé option. Les options configurent les options DHCP ; à l'opposé, les paramètres configurent des valeurs qui ne sont pas optionnelles ou contrôlent le comportement du serveur DHCP.

ImportantImportant
 

Si vous modifiez le fichier de configuration, les changements ne prendront pas effet tant que vous n'aurez pas redémarré le démon DHCP avec la commande service dhcpd restart.

Les paramètres (y compris les options) déclarés avant une section entre parenthèses ({ }) sont considérés comme des paramètres globaux. Ceux-ci s'appliquent à toutes les sections se trouvant en dessous.

Dans l'Exemple 12-1, les options routers, subnet-mask, domain-name, domain-name-servers et time-offset sont utilisées pour les déclarations host apex et raleigh.

Comme illustré dans l'Exemple 12-1, vous pouvez déclarer un subnet. Vous devez inclure une déclaration de subnet pour chaque sous-réseau de votre réseau. Sinon, le serveur DHCP ne démarrera pas.

Dans cet exemple, il y a des options globales pour tous les clients DHCP dans le sous-réseau et une gamme range est déclarée. Les clients reçoivent une adresse IP au sein de range.

Exemple 12-1. Déclaration de sous-réseau

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -5;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

Tous les sous-réseaux partageant le même réseau physique doivent être déclarés dans une déclaration shared-network comme illustré dans l'Exemple 12-2. Les paramètres se trouvant au sein du shared-network mais en dehors des déclarations subnet sont considérés comme des paramètres globaux. Le nom du fichier shared-network doit correspondre à un titre descriptif du réseau, comme test-lab pour décrire tous les réseaux dans un environnement de labo de tests.

Exemple 12-2. Déclaration de réseau partagé

shared-network nom {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        paramètres pour sous-réseau
        range 192.168.1.33 192.168.1.63;
    }
}

Comme illustré dans l'Exemple 12-3, la déclaration group peut être utilisée pour appliquer des paramètres globaux à un groupe de déclarations. Vous pouvez regrouper des réseaux partagés, des sous-réseaux, des hôtes ou autres.

Exemple 12-3. Déclaration de groupe

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -5;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

Pour configurer un serveur DHCP qui attribue une adresse IP dynamique à un système dans un sous-réseau, modifiez l'Exemple 12-4 avec vos valeurs. Un temps d'attribution par défaut, un temps d'attribution maximum et des valeurs de configuration réseau pour les clients sont déclarés. Cet exemple assigne une adresse IP dans la gamme range 192.168.1.10 et 192.168.1.100 aux systèmes clients.

Exemple 12-4. Paramètre range

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

Pour attribuer une adresse IP à un client sur la base de l'adresse MAC de la carte d'interface réseau, utilisez le paramètre hardware ethernet dans une déclaration host. Comme illustré dans l'Exemple 12-5, la déclaration host apex indique que la carte d'interface réseau avec l'adresse MAC 00:A0:78:8E:9E:AA doit toujours recevoir l'adresse IP 192.168.1.4.

Remarquez que vous pouvez également utiliser le paramètre optionnel host-name pour attribuer un nom d'hôte au client.

Exemple 12-5. Adresse IP statique utilisant DHCP

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

TuyauAstuce
 

Vous pouvez utiliser le fichier de configuration d'exemple dans Red Hat Linux 7.3 comme point de départ, puis y ajouter vos propres options de configuration personnalisées. Copiez-le à l'emplacement approprié à l'aide de la commande
cp /usr/share/doc/dhcp-<numéro-de-version>/dhcpd.conf.sample /etc/dhcpd.conf
(where <numéro-de-version>< correspond à la version DHCP que vous utilisez).

Pour obtenir une liste complète des options et de leur fonction, reportez-vous à la page de manuel dhcp-options.

Base de données d'attribution

Sur le serveur DHCP, le fichier /var/lib/dhcp/dhcpd.leases stocke la base de données d'attribution client DHCP. Ce fichier ne doit pas être modifié manuellement. Les informations d'attribution DHCP pour toutes les adresses IP récemment attribuées sont automatiquement stockées dans cette base de données. Ces informations comprennent la durée de l'attribution, le destinataire de l'attribution d'adresse IP, les dates de début et de fin pour l'attribution et l'adresse MAC de la carte d'interface réseau qui a été utilisée pour l'attribution.

Toutes les heures de la base de données d'attribution sont des heures Greenwich Mean Time (GMT), et non des heures locales.

La base de données d'attribution est recréée de temps en temps de façon à ce que sa taille ne soit pas trop importante. Tout d'abord, toutes les attributions connues sont sauvegardées dans une base de données d'attribution temporaire. Le fichier dhcpd.leases est renommé dhcpd.leases~, et la base de données d'attribution temporaire est copiée dans dhcpd.leases.

Le démon DHCP peut être anéanti, et le système peut se bloquer après que la base de données d'attribution a été renommée avant la création du nouveau fichier. Si c'est ce qui se produit, aucun fichier dhcpd.leases n'est nécessaire pour lancer le service. Si cela se produit, ne créez pas de nouveau fichier d'attribution. Si vous le faites, toutes les anciennes attributions seront perdues, et cela provoquera de nombreux problèmes. Vous devez dans ce cas renommer le fichier de sauvegarde dhcpd.leases~ dhcpd.leases puis lancer le démon.

Lancement et interruption du serveur

ImportantImportant
 

La première fois que vous lancez le serveur DHCP, celui-ci ne fonctionnera pas si le fichier dhcpd.leases n'existe pas. Utilisez la commande touch /var/lib/dhcp/dhcpd.leases pour créer le fichier s'il n'existe pas.

Pour lancer le service DHCP, utilisez la commande /sbin/service dhcpd start. Pour interrompre le serveur DHCP, utilisez la commande /sbin/service dhcpd stop. Si vous voulez que le démon démarre automatiquement à l'amorçage du système, reportez-vous au Chapitre 8 pour en savoir plus sur la gestion des services.

Si vous avez plusieurs interfaces réseau attachées au système, mais que vous voulez que le serveur DHCP ne démarre que sur l'une d'elles, vous pouvez configurer le serveur DHCP afin qu'il démarrer uniquement sur ce périphérique. Dans /etc/sysconfig/dhcpd, ajoutez le nom de l'interface à la liste de DHCPDARGS :

# Command line options here
DHCPDARGS=eth0

Il s'agit de quelque chose d'utile si vous avez un ordinateur protégé par un pare-feu et disposant de deux cartes réseau. L'une peut être configurée comme client DHCP pour récupérer une adresse IP d'Internet. L'autre peut servir de serveur DHCP pour le réseau interne se trouvant derrière le pare-feu. En ne spécifiant que la carte réseau connectée au réseau interne, votre système sera plus sûr puisque les utilisateurs ne pourront pas se connecter au démon à travers Internet.

Options de la ligne de commande pouvant être spécifiées dans /etc/sysconfig/dhcpd :

Agent de relais DHCP

L'agent de relais DHCP (dhcrelay) vous permet de relayer les requêtes DHCP et BOOTP d'un sous-réseau ne disposant pas de serveur DHCP vers un ou plusieurs serveurs DHCP sur d'autres sous-réseaux.

Lorsqu'un client DHCP demande des informations, l'agent de relais DHCP transfère la requête à la liste de serveurs DHCP spécifiés lors du démarrage de l'agent de relais DHCP. Lorsqu'un serveur DHCP renvoie une réponse, la réponse est diffusée sur le réseau ayant envoyé la requête d'origine.

L'agent de relais DHCP attend les requêtes DHCP sur toutes les interfaces à moins que l'option -i ne soit utilisée pour spéficier une ou plusieurs interfaces en particulier.

Pour démarrer l'agent de relais DHCP, utilisez la commande dhcrelay suivie par le nom d'au moins un serveur auquel la requête doit être relayée. L'agent peut être activé avec les options ci-dessous :

Tableau 12-1. >Options de l'agent de mise à jour DHCP

ArgumentDescription
-i Noms des interfaces réseau à configurer. Si aucune interface n'est spécifiée, toutes les interfaces réseau seront configurées, avec élimination des interfaces non-diffusion si possible.
-p Port sur lequel dhcrelay doit écouter. L'agent de relais DHCP transmet les requêtes aux serveurs sur ce port et transmet les réponses aux clients au port suivant celui-ci.
-d Force dhcrelay à toujours s'exécuter au premier plan.
-q Désactivation de l'impression de la configuration réseau de dhcrelay au démarrage.