Product SiteDocumentation Site

10.7. DHCP

DHCP (Dynamic Host Configuration Protocol, ou protocole de configuration dynamique des hôtes) est un moyen de rapatrier automatiquement sa configuration pour une machine qui vient de démarrer et souhaite configurer son interface réseau. De cette manière, on peut centraliser la gestion des configurations réseau et toutes les machines bureautiques pourront recevoir des réglages identiques.
Un serveur DHCP fournit de nombreux paramètres réseau et notamment une adresse IP et le réseau d'appartenance de la machine. Mais il peut aussi indiquer d'autres informations, telles que les serveurs DNS, WINS et NTP.
L'Internet Software Consortium, qui développe bind, s'occupe également du serveur DHCP. Le paquet Debian correspondant est isc-dhcp-server.

10.7.1. Configuration

Les premiers éléments à modifier dans le fichier de configuration du serveur DHCP, /etc/dhcp/dhcpd.conf, sont le nom de domaine et les serveurs DNS. Il faut aussi activer (en la décommentant) l'option authoritative si ce serveur est le seul sur le réseau local (tel que défini par la limite de propagation du broadcast, mécanisme employé pour joindre le serveur DHCP). On créera aussi une section subnet décrivant le réseau local et les informations de configuration diffusées. L'exemple ci-dessous convient pour le réseau local 192.168.0.0/24, qui dispose d'un routeur (192.168.0.1) faisant office de passerelle externe. Les adresses IP disponibles sont comprises entre 192.168.0.128 et 192.168.0.254.

Exemple 10.15. Extrait du fichier /etc/dhcp/dhcpd.conf

#
# Sample configuration file for ISC dhcpd for Debian
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style interim;

# option definitions common to all supported networks...
option domain-name "interne.falcot.com";
option domain-name-servers ns.interne.falcot.com;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# My subnet
subnet 192.168.0.0 netmask 255.255.255.0 {
    option routers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    range 192.168.0.128 192.168.0.254;
    ddns-domainname "interne.falcot.com";
}

10.7.2. DHCP et DNS

Une fonctionnalité appréciée est l'enregistrement automatique des clients DHCP dans la zone DNS de sorte que chaque machine ait un nom significatif (et pas automatique comme machine-192-168-0-131.interne.falcot.com). Pour exploiter cette possibilité, il faut autoriser le serveur DHCP à mettre à jour la zone DNS interne.falcot.com et configurer celui-ci pour qu'il s'en charge.
Dans le cas de bind, on ajoutera la directive allow-update aux deux zones que le serveur DHCP devra modifier (celle du domaine interne.falcot.com et celle de la résolution inverse). Cette directive donne la liste des adresses autorisées à effectuer la mise à jour ; on y consignera donc les adresses possibles du serveur DHCP (adresses IP locales et publiques le cas échéant).
allow-update { 127.0.0.1 192.168.0.1 212.94.201.10 !any };
Attention ! Une zone modifiable sera changée par bind, qui va donc réécrire régulièrement ses fichiers de configuration. Cette procédure automatique produisant des fichiers moins lisibles que les productions manuelles, les administrateurs de Falcot gèrent le sous-domaine interne.falcot.com à l'aide d'un serveur DNS délégué. Le fichier de la zone falcot.com reste ainsi entièrement sous leur contrôle.
L'exemple de fichier de configuration de serveur DHCP de la section précédente comporte déjà les directives nécessaires à l'activation de la mise à jour du DNS : il s'agit des lignes ddns-update-style interim ; et ddns-domain-name "interne.falcot.com"; dans le bloc décrivant le réseau.