DHCP - Etude et mise en place

difficulthopefulΛογισμικό & κατασκευή λογ/κού

2 Ιουλ 2012 (πριν από 5 χρόνια και 4 μήνες)

288 εμφανίσεις


DHCP - Etude et mise en
place
DHCP 4.0.0 et Gentoo

Aurélien BONNARDON
07/04/2008


Etude
du DHCP
et installation d
’un serveur

sous Gentoo

ainsi que d

un

client

sur différentes
plateformes.
Introduction
Ce document décrit les étapes pour installer un serveur DHCP sur une machine utilisant Linux
Gentoo. DHCP est un protocole permettant d’assigner dynamiquement des adresses IP aux stations
du réseau dans lequel il se trouve.
Les logiciels (client et serveur) sont développés par l’ISC. L'Internet Systems Consortium,
abrégé par le sigle ISC, est un consortium public à but non lucratif dont le but est d'aider à la mise en
œuvre d'un « Internet universel auto-organisé ». Il s'agit d'une structure indépendante, les
développeurs y participant créent et maintiennent notamment des logiciels comme une distribution
DHCP (serveur et client), BIND (serveur DNS) ou encore d'InterNetNews (INN). L'ISC héberge
également un des 13 serveurs racines du DNS (F) ainsi que des archives Usenet. L'ISC a été crée en
1994 sous le nom d'Internet Software Consortium pour permettre le développement de BIND jusque-
là développé par l'Université de Berkeley et Vixie Enterprise. L'ISC change de nom (mais pas de sigle,
par rétroacronymie) pour Internet Systems Consortium en 2004.

Le protocole DHCP
Présentation
Dynamic Host Configuration Protocol (DHCP) est un terme anglais désignant un protocole
réseau dont le rôle est d'assurer la configuration automatique des paramètres IP d'une station,
notamment en lui assignant automatiquement une adresse IP et un masque de sous-réseau. DHCP
peut aussi configurer l'adresse de la passerelle par défaut, des serveurs de noms DNS et des serveurs
de noms NBNS (connus sous le nom de serveurs WINS sur les réseaux de la société Microsoft).
La conception initiale d'IP supposait la pré-configuration de chaque ordinateur connecté au
réseau avec les paramètres TCP/IP adéquats : c'est l'adressage statique. Sur des réseaux de grandes
dimensions ou étendues, où des modifications interviennent souvent, l'adressage statique engendre
une lourde charge de maintenance et des risques d'erreurs. En outre les adresses assignées ne
peuvent être utilisées même si l'ordinateur qui la détient n'est pas en service : un cas typique où ceci
pose problème est celui des fournisseurs d'accès à internet (FAI ou ISP en anglais), qui ont en général
plus de clients que d'adresses IP à leur disposition, mais dont tous les clients ne sont jamais
connectés en même temps.
DHCP apporte une solution à ces deux inconvénients :
• Seuls les ordinateurs en service utilisent une adresse de l'espace d'adressage;
• Toute modification des paramètres (adresse de la passerelle, des serveurs de noms) est
répercutée sur les stations lors du redémarrage;
• La modification de ces paramètres est centralisée sur les serveurs DHCP.
Le protocole a été présenté pour la première fois en octobre 1993 et est défini par la
RFC1531, modifiée et complétée par les RFC 1534, RFC 2131 et RFC 2132. Initialement, on utilisait les
protocoles BOOTP ou RARP. Ce protocole peut fonctionner avec IPv4; il fonctionne aussi avec IPv6
(DHCPv6), toutefois en IPv6, les adresses peuvent être auto-configurées sans DHCP.
Un serveur DHCP doit être sur le même réseau que les machines qui l’utilise, sinon il faut
utiliser un proxy DHCP.

Fonctionnement
• L'ordinateur réclament une adresse IP envoie en Broadcast une trame DHCP DISCOVER
(TCP/IP) qui s'adresse au port 67. Cette trame contient l’adresse MAC du client.
• Le serveur DHCP, ayant reçu cette trame, envoie une trame DHCP OFFER à destination de
l’adresse MAC du client et du port 68. Elle contient l'adresse IP du serveur, l'adresse IP et le
masque de sous-réseau proposé au client.
• Le client diffuse sur le réseau une trame DHCP REQUEST. Elle comporte l'adresse IP du
serveur et celle que le client vient de recevoir et accepte. Elle a pour effet de demander au
serveur l'assignation de cette adresse et d’envoyer éventuel des paramètres.
• Le serveur DHCP envoie alors une trame DHCP ACK qui assigne au client l'adresse IP et son
masque de sous-réseau. Cette trame comporte également la durée du bail de cette adresse,
deux valeurs T1 et T2 qui déterminent le comportement du client en fin de bail, et
éventuellement d'autres paramètres :
o adresse IP de la passerelle par défaut
o adresses IP des serveurs DNS
o adresses IP des serveurs NBNS (WINS)
Si plusieurs serveurs DHCP répondent à la requête DHCP DISCOVER, le client répondra à la première
réponse DHCP OFFER arrivée. La trame DHCP REQUEST du client à pour but de prévenir les autres
serveurs que leurs demandes sont rejetées.
Il existe 4 autres trames dans le protocole DHCP :
• DHCP DECLINE : Trame émise par le client pour informer le serveur que l’adresse proposée
est déjà utilisée.
• DHCP NAK : Trame émise par le serveur pour rejeter les paramètres demandés par le client
ou pour l’informer que son bail est terminé.
• DHCP RELEASE : Trame émise par le client pour libérer son adresse IP.
• DHCP INFORM : Trame émise par le client lorsqu’il possède son adresse IP pour demander
les paramètres locaux au serveur (passerelle par défaut, serveurs DNS, …).

Installation d’un serveur DHCP sous
Gentoo
Téléchargement et installation
Il faut commencer par télécharger les sources sur le site de l’ISC, à l’adresse suivante :
ftp://ftp.isc.org/isc/dhcp/

Ensuite, il faut extraire l’archive avec les commandes suivantes :
gzip -d dhcp-4.0.0.tar.gz
tar -xvf dhcp-4.0.0.tar
Pour configurer, compiler et installer le programme, il faut exécuter la série de commande suivante :
./configure
make
make install
Configuration de la machine
Un certain nombre de paramètres doivent être fixés pour que le serveur DHCP fonctionne
correctement. En particulier, le noyau doit supporter le MULTICAST. Pour voir si c’est le cas, il suffit
de taper la commande ifconfig et de regarder si l’option apparait :
tryx ~ # ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:50:FC:E7:62:F3
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1988 errors:0 dropped:0 overruns:0 frame:0
TX packets:1863 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1197180 (1.1 Mb) TX bytes:254275 (248.3 Kb)
Interrupt:20 Base address:0x6800
Si ce n’est pas le cas, il va falloir recompiler le noyau pour qu’il supporte cela. Vous trouverez l’option
dans Networking options -> IP: multicasting.
Il faut également ajouter une route vers 255.255.255.255 (adresse de Broadcast) car certains clients
DHCP nécessite cela, en particulier ceux de Microsoft. Il suffit d’exécuter la commande suivante :
route add -host 255.255.255.255 eth0
Pour finir, il faut s’assurer que votre noyau intègre IPv6. Pour cela, il faut vérifier que le fichier
/proc/net/if_inet6 existe. Si ce n’est pas le cas, exécuter la commande :
modprobe ipv6
Configuration du serveur
Il y a deux fichiers essentiels au fonctionnement du serveur : /etc/dhcpd.conf et
/var/state/dhcp/dhcps.leases.
/var/state/dhcp/dhcps.leases
Ce fichier contient les informations sur les demandes des clients. Il faut le créer après
l’installation. Il est mis à jour en temps réel, il est donc possible de suivre son évolution avec la
commande : tail -f /var/state/dhcp/dhcp.leases
Voici une ligne de ce fichier correspondant à la connexion d’un client :
946750530 00:18:f3:a3:24:a4 192.168.0.190 skeltryx 01:00:18:f3:a3:24:a4

Le premier paramètre est un nombre aléatoire choisi par le serveur et qui est utilisé pour reconnaître
le client. Le 2
ème
est l’adresse MAC du client, suivi de son nom. Le dernier est l’adresse MAC de
l’interface sur laquelle il est connecté.
/etc/dhcpd.conf
Il s’agit du fichier de configuration du serveur. Il contiendra les directives pour l’assignation
des adresses IP. En fait, il existe 2 manières d’assigner des adresses IP, soit de manière aléatoire, soit
en fonction des adresses MAC des clients.

Voici un exemple de fichier avec les commentaires des différentes lignes. Il faut noter que les
paramètres globaux peuvent être définit dans le champ subnet.
### Configuration des baux
# Durée du bail par défaut, en seconde
default-lease-time 86400;
# Durée maximum d’un bail, en seconde
max-lease-time 172800;
## Configuration du réseau
# Nom du domaine
option domain-name "myworld";
# Masque du réseau
option subnet-mask 255.255.255.0;
# Adresse de broadcast du réseau
option broadcast-address 192.168.1.255;
# Passerelle par défaut
option routers 192.168.1.254;
# Serveurs DNS
option domain-name-servers 192.168.1.1, 192.168.1.2;

# Configuration du réseau et de son masque
subnet 192.168.1.0 netmask 255.255.255.0 {
# Plage d’adresses disponible pour les clients
range 192.168.1.10 192.168.1.100;
}
# Pour fixer une adresse à un client en fonction de son adresse MAC
host NOM_MACHINE {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
Voici une autre option qui peut être intéressante, refuser les requêtes des clients non déclarés :
deny unknown-clients
Lancement du serveur
Le lancement du serveur se fait grâce à la commande dhcpd. Il faut préciser certaines l’options, en
particulier l’emplacement des 2 fichiers cités précédemment et la ou les interfaces où le démon
devra se mettre à l’écoute.
dhcpd -cf /etc/dhcpd.conf -lf /var/state/dhcp/dhcpd.leases eth0
dhcpd -cf /etc/dhcpd.conf -lf /var/state/dhcp/dhcpd.leases eth0 eth1
Si vous obtenez une erreur du type :
Internet Systems Consortium DHCP Server 4.0.0
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Wrote 0 leases to leases file.
Error opening '/proc/net/if_inet6' to list IPv6 interfaces; No such
file or directory
Can't get list of interfaces.

Alors c’est que vous n’avez pas installé le support IPv6 dans votre noyau.

Installation et configuration du client
Linux Gentoo
Pour installer un client DHCP, nous n’allons pas y aller pas 4 chemins, il suffit d’utiliser la
commande suivante :
emerge dhcpcd
Ensuite, il faut éditer le fichier /etc/conf.d/net et remplacer la configuration actuelle de la carte par :
config_eth0=( "dhcp" )
dhcp_eth0="nonis"
Redémarrez ensuite le service avec la commande : /etc/init.d/net.eth0 restart
Windows XP
Par défaut, le DHCP est configuré que Windows XP. Si les valeurs ont été modifié, il vous
suffit de les remettre en passant par Panneau de configuration -> Connexions Réseaux puis clic droit
sur la carte et propriétés. Dans la liste, sélectionnez « Protocole Internet (TCP/IP) » et cliquez sur
Propriétés. Ensuite, mettez les valeurs par défaut comme sur la figure suivante :


Source
• Dynamic Host Configuration Protocol,
http://fr.wikipedia.org/wiki/DHCP

• Serveur DHCP,
http://www.trustonme.net/didactels/242.html

• DHCP (Dynamic Host Configuration Protocol),
http://www.misfu.com/cours-fonctionnement-dhcp.html

• Configurer un serveur DHCP,
http://jp.barralis.com/howto/linux/DHCP/DHCP-4.php