Source: http://doc.ubuntu-fr.org/dhcp3-server Serveur DHCP et Relais DHCP (sous Linux) Le protocole DHCP (Dynamic Host Configuration Protocol) est un service réseau TCP/IP. Il permet l'obtention automatique d'une configuration réseau par les clients. Les installations des serveurs ont été effectuées à partir d'une distribution Debian. La réalisation du tuto à été effectué à l'aide de virtualbox pour émuler les différents Hôtes. Principe de fonctionnement du DHCP : Port d'écoute du serveur : 67 Port d'écoute du client : 68 DHCP DISCOVER : Le client configuré en mode dhcp, envoie une requête DISCOVER en broadcast, contenant son adresse MAC à destination du port 67, afin de trouver un serveur dhcp et bénéficier d'une adresse IP. DHCP OFFER Le(s) serveur(s) DHCP recevant la requête DISCOVER, envoie(nt) à leur tour une requête OFFER en unicast contenant une adresse IP, le masque réseaux et l'adresse IP du serveur sur le port 68 du client. DHCP REQUEST Le client prend en compte la premiere configuration qu'il lui a été envoyé par un OFFER, il émet ensuite en broadcast une demande d'utilisation, contenant l'ip du serveur et celle qui lui a été proposée. DHCP ACK Le serveur DHCP, envoie en unicast une confirmation au client avec l'adresse IP, la durée du bail, ainsi que d'autres informations (configurable sur le DHCP) telles que l'adresse IP de la gateway, l'adresse du DNS.
Autres requêtes DHCP : DHCP DECLINE Si le client identifie sur son segment réseau que l'ip proposé est déjà utilisée, il envoie la requête DHCP DECLINE afin de recommencer le processus d'attribution d'ip. DHCP NACK : Si, au moment de l'envoie d'un ACK, le serveur DHCP détecté que l'ip est prise sur le réseau, il envoie une requête DHCP NACK pour que le processus de demande d'ip recommence. DHCP RELEASE : Cette reqête permet au client d'annuler son bail et de redémarrer le processus de demande d'ip. Afin de se voir réattribuer une IP. Le bail : Lorsque la durée du bail atteint les 50% (par défaut) le client redemande son IP (par DHCP REQUEST) auprès du serveur qui lui a attribué son adresse. Si le serveur l'autorise, le bail est renouvelé. Au bout de 87.5 % si le bail n'a pas été renouvelé, le client renouvelle le processus de demande d'ip (DHCP DISCOVER ). Coté serveur, à la fin du bail si le client n'a renouvelé sa demande, le serveur emet un DHCP NACK pour avertir le client que son bail arrive à expiration. Si le client ne demande pas redemande pas de renouveller le bail, le serveur libèrer alors l'adresse. Schéma explicatif du réseau:
Installation du serveur DHCP : # apt-get install dhcp3-server Attribution d'une Ip Statique au serveur DHCP: (dans cette exemple j'utilise une deuxième interface différente de eth0) # vi /etc/network/interfaces auto eth1 iface eth1 inet static address 192.168.1.3 geteway 192.168.1.254 Redémarrage des interfaces réseaux: (pour prendre en compte les nouvelles modifications) # ifdown && ifup eth1 Vérifier la configuration : # ifconfig Paramétrage du DHCP : Il faut spécifier les interfaces que dhcpd (démon de dhcp3-server) écoutera. Par défaut, il écoute l'interface eth0. #vi /etc/default/isc-dhcp-server (anciennement /etc/default/dhcp3-server) INTERFACES= eth1 On va ensuite configuré notre server dhcp pour qu'il distribue des IP selon l'adresse des sous-réseaux. (le fichier de configuration est adapté à notre cas, les lignes commençant par # ne sont pas à ajouter obligatoirement) # mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.back (anciennement : /etc/dhcp3/dhcpd.conf) # vi /etc/dhcp/dhcpd.conf #Configuration de base #Réseau server-name dhcp.polo-domain.lan ; authoritative; (#indique que le serveur fait authorité) #option subnet-mask 255.255.255.0; #option routers 192.168.1.254; #option broadcast-address 192.168.1.255;
#Bail default-lease-time 600; # durée d'attribution de l'adresse IP en seconde max-lease-time 7200; # Si le client spécifie un temps d'allocation, le maximum sera 7200 s présent) Windobe) #Domaine #option domain-name-servers 192.168.1.1, 192.168.1.2; (pour ajouter des serveurs DNS si #option domain-name polo-domain.lan ; ( Ajout du suffix DNS) #option ntp-servers 192.168.1.254; (Si serveur de temps présent) #option netbios-name-servers 192.168.1.6 (pour spécifier un serveur WINS pour les clients #ddns-update-style none; (pour le type de maj du DNS : aucun) #Étendue Servers subnet 192.168.1.0 { option routers 192.168.1.254; option broadcast-address 192.168.1.255; #Étendue Client Linux subnet 192.168.2.0 { range 192.168.2.10 192.168.2.15; option broadcast-address 192.168.2.255; option routers 192.168.2.254; allow-unknown-clients; #autorise l'attribution d'une IP d'un hôte dont l'adresse MAC est inconnue du serveur ( deny unknown-clients, ) pour ne pas autoriser. #Étendue Client Windobe subnet 192.168.3.0 { deny unknown-clients; #IP fixe: host clientw1 { hardware ethernet DD:GH:DF:E5:F7:D7; fixed-address 192.168.3.10; #adresse MAC du client Redémarrage du démon dhcp: # /etc/init.d/isc-dhcp-server restart (anciennement : # service dhcp3-server restart) Vérification des logs: # tail /var/log/syslog
Relais DHCP Les broadcast (et par conséquent les demandes d'adresses DHCP) ne sont pas routées. C'est pourquoi il faut utiliser un relais dhcp pour que les clients puissent obtenir une IP alors qu'il sont sur un réseau différent. Ip statiques: Il faut mettre des IP statiques sur les interfaces du routeur: # vi /etc/network interfaces auto eth1 iface eth1 inet static address 192.168.1.254 #network 192.168.1.0 #broadcast 192.168.1.255 gateway 192.168.1.254 Installation: auto eth2 iface eth2 inet static address 192.168.2.254 #network 192.168.2.0 #broadcast 192.168.2.255 gateway 192.168.2.254 auto eth3 iface eth3 inet static address 192.168.3.254 #network 192.168.3.0 #broadcast 192.168.3.255 gateway 192.168.3.254 # apt-get install dhcp3-relay Lors de l'installation des Informations sont demandées: Nom du server : mettre l'ip du serveur : 192.168.1.3 Interfaces d'écoutes: mettre les interfaces : eth1 eth2 eth3 Additional Options : laisser vide si pas d'options Fichier de configuration: /etc/default/isc-dhcp-relay
Redémarrage du démon: /etc/init.d/isc-dhcp-relay restart Activation de la redirection de paquets: # vi /etc/sysctl.conf # décommenter net.ipv4.ip_forward=1 Clients : Activer les interfaces en mode dhcp # vi /etc/network/interfaces auto eth1 iface eth1 inet dhcp Demande dhcp # dhclient eth1 Tester -Effectuer plusieurs ping pour voir si tout fonctionne correctement