18.2. 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 Section 18.2.2 pour plus d'informations.

18.2.1. 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 signe dièse (#) correspondent à des commentaires.

Deux schémas de mise à jour DNS sont actuellement mis en place — le mode de mise à jour DNS ad-hoc et le mode de mise à jour rapide interaction DHCP-DNS par intérim. Si ces deux modes sont acceptés comme faisant partie du processus IETF standard, il y a aura un troisième mode — la méthode de mise à jour DNS standard. Le serveur DHCP doit être configuré de façon à utiliser l'un de ces deux schémas. La version 3.0b2pl11 et la version précédente utilisaient le mode ad-hoc, qui a cependant été abandonné. Si vous souhaitez conserver le même comportement, ajoutez la ligne suivante en haut du fichier de configuration:

ddns-update-style ad-hoc;

Pour utiliser le deuxième mode, ajoutez la ligne suivante en haut du fichier de configuration:

ddns-update-style interim;

Consultez la page de manuel relative à dhcpd.conf pour obtenir de plus détails sur les différents modes.

Il y a deux types de déclarations dans le fichier de configuration:

Certains paramètres doivent commencer par le mot-clé option et sont considérés comme des options. Les options configurent les options DHCP alors que les paramètres eux, configurent des valeurs qui ne sont pas facultatives ou contrôlent le comportement du serveur DHCP.

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.

ImportantImportant
 

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

Dans l'Exemple 18-1, les options routers, subnet-mask, domain-name, domain-name-servers et time-offset sont utilisées pour les déclarations host déclarées en dessous.

Comme l'Exemple 18-1 le montre, vous pouvez déclarer un subnet (ou sous-réseau). Pour ce faire, vous devez inclure une déclaration 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 plage, range, est déclarée. Les clients reçoivent une adresse IP au sein de range.

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              -18000;     # Eastern Standard Time

range 192.168.1.10 192.168.1.100;
}

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

Tous les sous-réseaux partageant le même réseau physique doivent être déclarés dans une déclaration shared-network comme le montre l'Exemple 18-2. Les paramètres se trouvant au sein du fichier 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.

shared-network name {
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 {
parameters for subnet
range 192.168.1.33 192.168.1.63;
}
}

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

Comme l'illustre l'Exemple 18-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.

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              -18000;     # 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;
}
}

Exemple 18-3. Déclaration de groupe

Pour configurer un serveur DHCP qui attribue une adresse IP dynamique à un système dans un sous-réseau, modifiez l'Exemple 18-4 avec vos valeurs spécifiques. 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 aux systèmes clients, des adresses IP dans la gamme range 192.168.1.10 et 192.168.1.100.

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;
}

Exemple 18-4. Paramètre 'range'

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 le montre l'Exemple 18-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.

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

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

Exemple 18-5. Adresse IP statique utilisant DHCP

TuyauAstuce
 

Vous pouvez utiliser le fichier de configuration d'exemple figurant dans Red Hat Linux 9 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
(où <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 relative à dhcp-options.

18.2.2. 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 pas 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 grande. 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 le changement de nom de la base de données d'attribution, avant la création du nouveau fichier. Si tel est le cas, aucun fichier dhcpd.leases n'est nécessaire pour lancer le service. Dans ce cas, ne créez pas de nouveau fichier d'attribution. Si vous le faites, toutes les anciennes attributions seront perdues, et cela entraînera de nombreux problèmes. Vous devez dans ce cas changer le mon du fichier de sauvegarde dhcpd.leases~ dhcpd.leases puis lancer le démon.

18.2.3. 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 préalablement. Si le fichier n'existe pas, utilisez la commande touch /var/lib/dhcp/dhcpd.leases pour le créer.

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 14 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 le démarrage du serveur DHCP seulement sur l'une d'elles, vous pouvez configurer le serveur DHCP afin qu'il démarre 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 doté de deux cartes réseau. L'une d'elles 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 par le biais de l'Internet.

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

18.2.4. 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 les interfaces ne soient spécifiées dans /etc/sysconfig/dhcrelay avec la directive INTERFACES.

Pour démarrer l'agent de relais DHCP, utilisez la commande service dhcrelay start.