Manuel FreeBSD
Précédent | Chapitre 28. Serveurs réseau | Suivant

# 28.5. Configuration réseau automatique (DHCP)

Ecrit par Greg Sutter.

## 28.5.1. Qu'est-ce que DHCP?

DHCP, le protocole d'attribution dynamique des adresses (“Dynamic Host Configuration Protocol”), décrit les moyens par lesquels un système peut se connecter à un réseau et obtenir les informations nécessaires pour dialoguer sur ce réseau. Les versions de FreeBSD antérieures à la version 6.0 utilisent l'implémentation du client DHCP (dhclient(8)) de l'ISC (Internet Software Consortium). Les versions suivantes utilisent le programme `dhclient` d'OpenBSD issu d'OpenBSD 3.7. Toutes les informations données ici au sujet de `dhclient` sont valables aussi bien pour le client DHCP d'ISC que pour celui d'OpenBSD. Le serveur DHCP est celui distribué par le consortium ISC.

## 28.5.2. Ce que traite cette section

Cette section décrit les composants côté client des clients DHCP d'ISC et d' OpenBSD et côté serveur du système DHCP ISC. Le programme client, `dhclient`, est intégré à FreeBSD, la partie serveur est disponible à partir du logiciel porté `net/isc-dhcp3-server`. Les pages de manuel dhclient(8), dhcp-options(5), et dhclient.conf(5), en plus des références données plus bas, sont des ressources utiles.

## 28.5.3. Comment cela fonctionne-t-il?

Quand `dhclient`, le client DHCP, est exécuté sur la machine cliente, il commence à diffuser des requêtes de demandes d'information de configuration. Par défaut, ces requêtes sont effectuées sur le port UDP 68. Le serveur répond sur le port UDP 67, fournissant au client une adresse IP et d'autres informations réseau importantes comme le masque de sous-réseau, les routeurs, et les serveurs DNS. Toutes ces informations viennent sous la forme d'un “bail” DHCP qui est uniquement valide pendant un certain temps (configuré par l'administrateur du serveur DHCP). De cette façon, les adresses IP expirées pour les clients qui ne sont plus connectés peuvent être automatiquement récupérées.

Les clients DHCP peuvent obtenir une grande quantité d'informations à partir du serveur. Une liste exhaustive est donnée dans la page de manuel dhcp-options(5).

## 28.5.4. Intégration dans FreeBSD

Le client DHCP ISC ou OpenBSD (en fonction de la version de FreeBSD que vous utilisez), `dhclient`, est complètement intégré à FreeBSD. Le support du client DHCP est fourni avec l'installeur et le système de base, rendant évident le besoin d'une connaissance détaillée des configurations réseaux pour n'importe quel réseau utilisant un serveur DHCP. `dhclient` fait partie de toutes les versions de FreeBSD depuis la version 3.2.

DHCP est supporté par sysinstall. Quand on configure une interface réseau sous sysinstall, la deuxième question posée est: “Voulez-vous tenter la configuration DHCP de l'interface?”. Répondre par l'affirmative à cette question lancera `dhclient`, et en cas de succès, complétera automatiquement les informations de configuration réseau.

Vous devez faire deux choses pour que votre système utilise DHCP au démarrage:

- Assurez-vous que le périphérique `bpf` est compilé dans votre noyau. Pour cela, vous devez ajouter la ligne `device bpf` à votre fichier de configuration du noyau, et recompiler le noyau. Pour plus d'informations sur la compilation de noyaux, consultez le Chapitre 8.

  Le périphérique `bpf` est déjà présent dans le noyau `GENERIC` qui est fourni avec FreeBSD, vous ne devez donc pas créer de noyau spécifique pour faire fonctionner DHCP.

  > Note : Ceux qui sont particulièrement conscients de l'aspect sécurité devraient noter que `bpf` est également le périphérique qui permet le fonctionnement de “renifleurs” de paquets (de tels programmes doivent être lancés sous l'utilisateur `root`). `bpf` est nécessaire pour utiliser DHCP, mais si vous êtes très sensible à la sécurité, vous ne devriez probablement pas ajouter `bpf` à votre noyau parce que vous projetez d'utiliser DHCP dans le futur.

- Editez votre fichier `/etc/rc.conf` pour y ajouter ce qui suit:

      ifconfig_fxp0="DHCP"

  > Note : Assurez-vous de bien remplacer `fxp0` par l'interface que vous voulez configurer de façon dynamique comme décrit dans la Section 11.8.

  Si vous utilisez un emplacement différent pour `dhclient`, ou si vous désirez passer des arguments supplémentaires à `dhclient`, ajoutez ce qui suit (en effectuant des modifications si nécessaire):

      dhcp_program="/sbin/dhclient"
      dhcp_flags=""

Le serveur DHCP, dhcpd, fait partie du logiciel porté `net/isc-dhcp3-server` disponible dans le catalogue des logiciels portés. Ce logiciel porté contient le serveur DHCP ISC et sa documentation.

## 28.5.5. Fichiers

- `/etc/dhclient.conf`

  `dhclient` nécessite un fichier de configuration, `/etc/dhclient.conf`. Généralement le fichier ne contient que des commentaires, les valeurs par défaut étant suffisantes. Ce fichier de configuration est décrit par la page de manuel dhclient.conf(5).

- `/sbin/dhclient`

  `dhclient` est lié statiquement et réside dans le répertoire `/sbin`. La page de manuel dhclient(8) donne beaucoup plus d'informations au sujet de `dhclient`.

- `/sbin/dhclient-script`

  `dhclient-script` est la procédure de configuration du client DHCP spécifique à FreeBSD. Elle est décrite dans la page de manuel dhclient-script(8), mais ne devrait pas demander de modification de la part de l'utilisateur pour fonctionner correctement.

- `/var/db/dhclient.leases`

  Le client DHCP conserve une base de données des baux valides, qui est écrite comme un fichier journal. La page de manuel dhclient.leases(5) en donne une description légèrement plus longue.

## 28.5.6. Lecture supplémentaire

Le protocole DHCP est intégralement décrit dans la RFC 2131. Des informations sont également disponibles à l'adresse http://www.dhcp.org/.

## 28.5.7. Installer et configurer un serveur DHCP

### 28.5.7.1. Ce que traite cette section

Cette section fournit les informations nécessaires à la configuration d'un système FreeBSD comme serveur DHCP en utilisant l'implémentation ISC (Internet Software Consortium) du serveur DHCP.

Le serveur n'est pas fourni dans le système de base de FreeBSD, et vous devrez installer le logiciel porté `net/isc-dhcp3-server` pour bénéficier de ce service. Lisez le Chapitre 4 pour plus d'information sur l'utilisation du catalogue des logiciels portés.

### 28.5.7.2. Installation d'un serveur DHCP

Afin de configurer votre système FreeBSD en serveur DHCP, vous devrez vous assurer que le support du périphérique bpf(4) est compilé dans votre noyau. Pour cela ajouter la ligne `device bpf` dans votre fichier de configuration du noyau. Pour plus d'information sur la compilation de noyaux, consultez le Chapitre 8.

Le périphérique `bpf` est déjà présent dans le noyau `GENERIC` qui est fourni avec FreeBSD, vous ne devez donc pas créer de noyau spécifique pour faire fonctionner DHCP.

> Note : Ceux qui sont particulièrement conscients de l'aspect sécurité devraient noter que `bpf` est également le périphérique qui permet le fonctionnement de “renifleurs” de paquets (de tels programmes nécessitent également un accès avec privilèges). `bpf` est nécessaire pour utiliser DHCP, mais si vous êtes très sensible à la sécurité, vous ne devriez probablement pas ajouter `bpf` à votre noyau parce que vous projetez d'utiliser DHCP dans le futur.

Il vous reste ensuite à éditer le fichier `dhcpd.conf` d'exemple qui a été installé par le logiciel porté `net/isc-dhcp3-server`. Par défaut, cela sera `/usr/local/etc/dhcpd.conf.sample`, et vous devriez le copier vers `/usr/local/etc/dhcpd.conf` avant de commencer vos modifications.

### 28.5.7.3. Configuration du serveur DHCP

`dhcpd.conf` est composé de déclarations concernant les masques de sous-réseaux et les machines, il est peut-être plus facile à expliquer à l'aide d'un exemple:

    option domain-name "example.com";
    option domain-name-servers 192.168.4.100;
    option subnet-mask 255.255.255.0;

    default-lease-time 3600;
    max-lease-time 86400;
    ddns-update-style none;

    subnet 192.168.4.0 netmask 255.255.255.0 {
      range 192.168.4.129 192.168.4.254;
      option routers 192.168.4.1;
    }

    host mailhost {
      hardware ethernet 02:03:04:05:06:07;
      fixed-address mailhost.example.com;
    }

  Cette option spécifie le domaine qui sera donné aux clients comme domaine par défaut. Consultez la page de manuel de resolv.conf(5) pour plus d'information sur sa signification.
  Cette option donne une liste, séparée par des virgules, de serveurs DNS que le client devrait utiliser.
  Le masque de sous-réseau qui sera fourni aux clients.
  Un client peut demander un bail d'une durée bien précise. Sinon par défaut le serveur alloue un bail avec cette durée avant expiration (en secondes).
  C'est la durée maximale d'allocation autorisée par le serveur. Si un client demande un bail plus long, le bail sera accordé mais il ne sera valide que durant `max-lease-time` secondes.
  Cette option indique si le serveur DHCP doit tenter de mettre à jour le DNS quand un bail est accepté ou révoqué. Dans l'implémentation ISC, cette option est obligatoire.
  Ceci indique quelles adresses IP devraient être utilisées dans l'ensemble des adresses réservées aux clients. Les adresses comprises dans l'intervalle spécifiée sont allouées aux clients.
  Définit la passerelle par défaut fournie aux clients.
  L'adresse matérielle MAC d'une machine (de manière à ce que le serveur DHCP puisse reconnaître une machine quand elle envoie une requête).
  Indique que la machine devrait se voir attribuer toujours la même adresse IP. Notez que l'utilisation d'un nom de machine ici est correct, puisque le serveur DHCP effectuera une résolution de nom sur le nom de la machine avant de renvoyer l'information sur le bail.

Une fois l'écriture de votre fichier `dhcpd.conf` terminée, vous devez activer le serveur DHCP dans le fichier `/etc/rc.conf`, en ajoutant:

    dhcpd_enable="YES"
    dhcpd_ifaces="dc0"

Remplacez le nom de l'interface `dc0` avec celui de l'interface (ou des interfaces, séparées par un espace) sur laquelle votre serveur DHCP attendra les requêtes des clients DHCP.

Ensuite, vous pouvez lancer le serveur en tapant la commande suivante:

    # /usr/local/etc/rc.d/isc-dhcpd.sh start

Si vous devez, dans le futur, effectuer des changements dans la configuration de votre serveur, il est important de savoir que l'envoi d'un signal `SIGHUP` à dhcpd ne provoque pas le rechargement de la configuration, contrairement à la plupart des “daemons”. Vous devrez envoyer un signal `SIGTERM` pour arrêter le processus, puis le relancer en utilisant la commande ci-dessus.

### 28.5.7.4. Fichiers

- `/usr/local/sbin/dhcpd`

  dhcpd est lié statiquement et réside dans le répertoire `/usr/local/sbin`. La page de manuel dhcpd(8) installée avec le logiciel porté donne beaucoup plus d'informations au sujet de dhcpd.

- `/usr/local/etc/dhcpd.conf`

  dhcpd nécessite un fichier de configuration, `/usr/local/etc/dhcpd.conf` avant de pouvoir commencer à offrir ses services aux client. Ce fichier doit contenir toutes les informations à fournir aux clients qui seront traités, en plus des informations concernant le fonctionnement du serveur. Ce fichier de configuration est décrit par la page de manuel dhcpd.conf(5) installée par le logiciel porté.

- `/var/db/dhcpd.leases`

  Le serveur DHCP conserve une base de données des baux qu'il a délivré, qui est écrite comme un fichier journal. La page de manuel dhcpd.leases(5) installée par le logiciel porté en donne une description légèrement plus longue.

- `/usr/local/sbin/dhcrelay`

  dhcrelay est utilisé dans les environnements avancés où un serveur DHCP fait suivre la requête d'un client vers un autre serveur DHCP sur un réseau séparé. Si vous avez besoin de cette fonctionnalité, installez alors le logiciel porté `net/isc-dhcp3-server`. La page de manuel dhcrelay(8) fournie avec le logiciel porté contient plus de détails.

Précédent | Sommaire | Suivant
Services d'information réseau (NIS/YP) | Niveau supérieur | Serveurs de noms (DNS)

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.