Une introduction à DHCP

Gazette Linux n°98 — Janvier 2004

Dean Wilson

Article paru dans le n°98 de la Gazette Linux de janvier 2004.

Traduction française par Joëlle Cornavin .

Relecture de la traduction française par Encolpe Degoute .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières
1. Introduction
2. Linux en tant que serveur DHCP

1. Introduction

DHCP signifie Dynamic Host Configuration Protocol (protocole de configuration dynamique des adresses d'hôtes). Son rôle consiste à affecter des paramètres réseau à partir d'un serveur. En d'autres termes, au lieu d'avoir à configurer les paramètres liés à la manière dont votre ordinateur communique avec un réseau, cette opération s'effectue automatiquement.

L'affectation dynamique d'une adresse IP est l'élément fondamental, mais il y en a beaucoup d'autres comme le masque réseau, le nom d'hôte, le nom de domaine, la passerelle et les serveurs de noms. En outre, elle peut fournir d'autres informations, comme un serveur d'horloge.

De nombreuses personnes sont contre le DHCP parce qu'elles ne le voient que comme un moyen dont un FAI (fournisseur d'accès internet) vous offre une adresse IP qui change. Ceci complique bien sûr l'annonce d'un serveur. Par ailleurs, DHCP peut vous épargner une bonne partie du travail de configuration permanente au sein de votre entreprise ou de votre organisation.

Outre les serveurs DHCP fournis par les FAI, on les trouve fréquemment dans des routeurs bon marché. Netgear®, Linksys® et autres fabricants proposent ces systèmes avec des ports LAN multiples, une interface sans fil 802.11b, ou les deux. Le Netgear RP114® est un exemple du LAN avec câble seulement, ainsi que le Linksys WAP11® de type 802.11b. Ce n'est qu'un choix parmi tant d'autres. Le routeur devient le système que reconnaît le FAI et tous vos ordinateurs réels se cachent derrière ce périphérique.

Se cache ? En effet. Ce qui est perceptible aux yeux de l'Internet public est le routeur. Le LAN a des adresses IP privées et utilise la NAT (Network Address Translation, traduction d'adresses réseau) pour gérer les connexions depuis les systèmes internes vers l'Internet. Bien qu'elle ne soit pas véritablement un pare-feu, la NAT offre un niveau minimal de protection.

La plupart des routeurs de cette classe vous permettent :

Ce sont les bases du DHCP pour les débutants. Si tout ce que vous faites est d'essayer de décider entre l'utilisation du DHCP ou une adresse IP statique, ces informations peuvent suffire. Par ailleurs, vous pourriez décider de lancer un serveur DHCP sur un système Linux. Dans ce cas, il y a d'autres possibilités.


2. Linux en tant que serveur DHCP

dhcpd, de l'ISC (Internet Software Consortium), est le serveur DHCP le plus communément installé sur les systèmes Linux. Lorsqu'il est démarré, il prend ses directives dans un fichier de configuration que l'on trouve généralement dans /etc/dhcpd.conf. Voici un exemple de fichier de configuration :


# Sample configuration file for ISC dhcpd

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

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

# if you do not use dynamical DNS updates:
#
# this statement is needed by dhcpd-3 needs at least this statement.
# you have to delete it for dhcpd-2, because it does not know it.
#
# if you want to use dynamical DNS updates, you should first read
# read /usr/share/doc/packages/dhcp-server/DDNS-howto.txt
ddns-update-style none; ddns-updates off;


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

# This is a very basic subnet declaration.

subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20;
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;
  filename "vmunix.passacaglia";
  server-name "toccata.fugue.com";
}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address fantasia.fugue.com;
}

La page de man associée à ce fichier, dhcpd.conf(5) est très complète et je ne vais pas essayer de reproduire toutes ces informations ici. Vous l'afficherez en saisissant simplement man dhcp.conf. Elle fait plus de 25 pages, mais si vous voulez l'imprimer pour l'étudier hors-connexion, les commandes suivantes devraient suffire :



cd /usr/share/man/man5
zcat dhcpd.conf.5.gz | groff -man | lpr

Le fichier est divisé en deux types d'instructions. Les instructions de paramétrage indiquent comment faire quelque chose si dhcpd doit le faire. Les instructions de déclaration décrivent le réseau. Ainsi, les paramètres établissent les choses dont peuvent dépendre les déclarations. Dans l'exemple ci-dessus, default-lease-time est un exemple de paramètre. Le bloc commençant par l'hôte { est une déclaration. Les instructions optionnelles apparaissant en dehors de tout bloc sont des paramètres globaux qui sont globaux en termes de portée. Ceux qui sont dans les déclarations ont une portée locale.

J'espère que cette introduction vous aidera à travailler avec DHCP. Être un client DHCP est très facile. Côté serveur, ce n'est pas véritablement compliqué non plus. Une fois que avez décidé de ce que vous ferez faire à votre serveur DHCP, traduire ces informations en ce qui est nécessaire dans /etc/dhcpd.conf ne présente aucune difficulté.

Dean Wilson est administrateur système dans une entreprise où le patron (qui n'a aucune idée de ce que fait Dean) dit simplement « Faites que cela fonctionne ».