Installer un serveur DHCP sur Ubuntu 8.x

C’est quoi le DHCP

Le DHCP est un peu ce que serait la préfecture à l’immatriculation des véhicules. On s’arrête là sur l’analogie foireuse mais l’idée principale est tout de même là.
Je résume le pricinpe en trois points (qui dit mieux ?) :

  1. Une machine se connecte sur le réseau, elle envoie une demande auprès du serveur DHCP
  2. Le serveur regarde dans son stock s’il peut fournir une adresse IP à cette machine.
  3. Si oui, il renvoie le paramétrage complet (adresse IP, masque de sous réseau, passerelle, DNS) avec un bail à notre machine.

C’est ce principe qui est utilisé par exemple quand vous voulez vous connecter depuis un MacDonald en mangeant un BigMachun tout dégoulinant sur votre clavier. Comme quoi les geeks ne sont pas les seuls à avoir ce genre de désagrément.

Installation

Avant tout bonne chose, faire une petite mise à jour :

apt-get update
apt-get upgrade

Installer le paquet dhcp3-server
apt-get install dhcp3-server
apt://dhcp3-server

Configuration

Vérifier que l’interface d’écoute est bien configurée avec une adresse IP fixe :
gedit /etc/network/interfaces &
Résultat :

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.2.255
network 192.168.0.0
gateway 192.168.0.254

eth0 servira pour le service DHCP. Il faudra l’inscrire dans le fichier /etc/default/dhcp3-server :
INTERFACES="eth0"
Maintenant on passe au moteur, /etc/dhcp3/dhcpd.conf
gedit /etc/dhcp3/dhcpd.conf &
- »HOLA !!! V’la la merde…y trop de lignes, putain j’vais rien caguer à ta merde qui imatricule ma carte réseau. »
Bon, pas de panique, y pas vraiment de réglages à faire pour obtenir un DHCP digne de ce nom. Alors voyons comment se présente ce fichier (sources depuis http://doc.ubuntu-fr.org/dhcp3-server) :

##### Option générale par défaut #####

### RÉSEAU ###

## Nom du serveur DHCP
## Donner le nom de votre machine avec votre domaine ex : srv.home.lan
server-name "srv.home.lan";

## Mode autoritaire (autoritaire)
authoritative;

## Masque de sous-réseau
## Laisser 255.255.255.0 pour les réseaux 192.x.x.x
option subnet-mask 255.255.255.0;

### DOMAINE ###

## Nom du domaine
## Mettre votre domaine ex : home.lan
option domain-name "home.lan";

## Adresse IP du serveur DNS
## a remplacer par l ip de votre serveur dns ou par celle de votre fai
option domain-name-servers 208.67.222.222;

## Type de mise à jour du DNS (aucune)
ddns-update-style none;

### TEMPS DE RENOUVÈLEMENT DES ADRESSES ###

## par défaut en s (1 h)
default-lease-time 3600;

## maximum (2 h)
max-lease-time 7200;

### Sécurité ###

## refus(deny)/autorise(allow) les clients inconnus (refuse client inconnu)
deny unknown-clients;

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

### PXE ###
## Permet le boot réseau pour TFTP
allow bootp;
allow booting;

##### RÉSEAUX #####
## déclaration sous réseau 192.168.0.*
subnet 192.168.0.0 netmask 255.255.255.0 {
# Si vous voulez spécifier un domaine différent de celui par défaut :
option domain-name "home.lan";
## Adresse de diffusion
option broadcast-address 192.168.0.255;
## routeur par défaut
option routers 192.168.0.254;
## Plage d'attribution d'adresse
## Ici débute la distribution des adresse à partir de 192.168.0.6, 192.168.0.1 à 192.168.0.4 étant déjà prises.
## La plage ne contient qu'1 adresse ce qui empêche l'attribution sauf au client dont celle-ci est fixée.
range 192.168.0.6 192.168.0.20;
## Option pxe nom du fichier servit.
# elilo.efi pour ia64; pxelinux.0 pour x86
# À placer à la racine du serveur TFTP.
# Le fichier peut être spécifié dans la section « host », il deviendra alors prioritaire sur celui-ci
filename "pxelinux.0";
# définit le serveur qui servira le fichier « pxelinux.0 »
next-server 192.168.2.1;
# évalue si l'adresse est déjà attribuée
ping-check = 1;
}

#### Configuration des hôtes avec IP fixée ####
# hôte « FTP »
host machine1 {
# adresse mac de la carte réseau !
# !!! À REMPLACER PAR CELLE DE LA MACHINE !!!
hardware ethernet 00:01:02:03:04:05;
# adresse attribué
fixed-address 192.168.0.20;
### PXE ###
# fichier spécifique à une machine
# filename "debian-installer/ia64/elilo.efi";
# definit le serveur qui servira le fichier pxelinux.0
# next-server 192.168.0.10;
}
# hôte « WEB »
#host web {
# !!! À REMPLACER PAR CELLE DE LA MACHINE !!!
# hardware ethernet 00:01:02:aa:bb:cc;
# fixed-address 192.168.0.3;
#}
# hôte « mail »
#host mail {
# !!! À REMPLACER PAR CELLE DE LA MACHINE !!!
# hardware ethernet 00:01:02:a1:b1:c1;
# fixed-address 192.168.0.4;
#}

Redémarrer votre serveur :
/etc/init.d/dhcp3-server restart