Content-type: text/html
Quand dhcpd est installé pour la première fois, il n'y a pas de base de données de concessions. Cependant, dhcpd requiert une base de donnée de concessions pour démarrer. Pour créer la base de données des concessions initiales, créer simplement un fichier vide de nom /var/lib/dhcp/dhcpd.leases.
Pour éviter que la base de données ne devienne trop grande, le fichier est réécrit de temps en temps. Premièrement, une base de données temporaire de concessions est créée et toutes les concessions connues sont écrites dedans. Puis la vieille base de données est renommée /var/lib/dhcp/dhcpd.leases~ et finalement la nouvelle base de donnée la remplace.
Il y a une fenêtre de vulnérabilité quand le processus dhcpd est tué ou si le système plante après que la vieille base donnée a été renommée mais avant que la nouvelle n'ait été déplacée à sa place, il n'y aura pas de fichier /var/lib/dhcp/dhcpd.leases. Dans ce cas dhcpd, refusera de démarrer et nécessitera une intervention manuelle. IL NE FAUT PAS se contenter de créer un nouveau fichier de concessions - sinon, vous perdrez la trace des concessions attribuées et ce sera le chaos. À la place, renommez /var/lib/dhcp/dhcpd.leases~ en /var/lib/dhcp/dhcpd.leases, pour restaurer l'ancien fichier de concessions et redémarrez dhcpd. Ceci garantit qu'un fichier de concessions valide sera restauré.
lease ip-address { statements... }
Chaque déclaration de concession inclut une unique adresse IP qui a été attribuée au client. La déclaration au sein des accolades définit la durée de la concession et à qui elle a été attribuée.
Le début et la fin de la concession sont enregistrés en utilisant les déclarations « starts » « ends ».
starts date;
ends date;
Les dates sont spécifiées comme suit :
Jour-semaine année/mois/jour
heure:minute:seconde
Le jour de la semaine est présent pour qu'un humain puisse facilement dire quand une concession expire, il est spécifié sous forme de nombre entre 0 et 6 (Dimanche = 0). Le jour de la semaine est ignorée en tant qu'entrée. L'année est spécifiée avec son siècle, aussi elle doit être spécifiée avec 4 chiffres sauf pour les concessions vraiment longues. Le mois est donné sous forme de nombre (Janvier = 1). De même le jour du mois est spécifié sous forme de nombre qui commence à 1. L'heure est un nombre entre 0 et 23, les minutes et les secondes sont des nombres entre 0 et 59.
Les temps de concessions sont spécifiés suivant l'heure universelle de Greenwich (GMT), et non suivant l'heure locale. Puisque Greenwich suit les changement d'heures été/hiver, il n'y a probablement pas un endroit dans le monde où les heures enregistrées dans les concessions sont les mêmes que celle des horloges murales. Sur une machine Unix, on peut se faire une idée de l'heure locale en GMT en tapant date -u.
L'adresse MAC de l'interface réseau qui est utilisée pour acquérir la concession est enregistrée dans la déclaration hardware :
hardware hardware-type mac-address;
L'adresse MAC est spécifiée sous forme d'une série d'octets hexadécimaux séparés par des deux points.
Si le client a utilisé un identifiant client pour acquérir son adresse, celui-ci est enregistré en utilisant la déclaration uid :
uid client-identifier;
L'identifiant client est enregistré sous forme d'une série d'octets hexadécimaux, sans regarder si le client a utilisé une chaîne de caractère ASCII ou le nouveau format d'adresse MAC.
Si le client a envoyé un nom d'hôte en utilisant l'option Client Hostname, comme spécifié dans certaines version d'ébauche du document « Interaction DHCP-DNS » , ce nom d'hôte est enregistré dans la déclaration client-hostname.
client-hostname "hostname";
Si le client envoie son nom d'hôte en utilisant l'option Hostname comme le fait Windows 95, il est enregistré dans la déclaration hostname.
hostname "hostname";
Le serveur DHCP peut déterminer de plusieurs manières si une concession a été mal utilisée, soit parce que le client a reçu une concession NAK, soit parce que le serveur essaye lui même de voir si une adresse qu'il s'apprête à réattribuer est déjà utilisée. Dans ce cas, la déclaration abandoned sera utilisé pour indiquer que cette concession ne doit plus être réassignée.
abandoned;
Les concessions abandonnées sont automatiquement réclamées. Quand un client demande une nouvelle adresse, et que le serveur découvre qu'il n'y en a plus de disponible, il vérifie s'il n'y aurait pas des concession abandonnée, et alloue la concession abandonnée la plus ancienne. Le mécanisme standard pour vérifier les adresses de concessions en conflits est encore suivi, aussi si une adresse IP abandonnée d'une concession est encore utilisée elle est à nouveau abandonnée.
Si un client demande une adresse abandonnée, le serveur suppose que la raison pour laquelle l'adresse a été abandonnée est une corruption du fichier des concessions et que le client est la machine qui répondit quand la concession a été essayée, provoquant son abandon. Dans ce cas, l'adresse est immédiatement assignée au client.