Publié le mardi 15 novembre 2005, mis a jour le mercredi 24 septembre 2008, par Stephane Malinet
Le premier intéret de cette configuration est que, si vous avez un annuaire LDAP qui vous sert à l’authentification ou à autre chose, cela vous permet de centraliser votre administration.
Le second intéret est que la recherche de la configuration est dynamique, donc inutile de redémarrer le serveur DHCP lorsque vous ajouter ou supprimer une machine.
Actuellement, il n’existe pas d’ebuild de net-misc/dhcp dans portage qui inclue le support LDAP, alors je me suis permis de bidouiller un ebuild.
Pour commencer, nous allons télécharger l’archive contenant l’ebuild, le patch pour le support LDAP de Brian Masney, le schema pour net-nds/openldap et les fichiers de configuration :
# wget http://stephane.malinet.free.fr/ebuilds/dhcp-3.0.3-4.0.0.ebuild+ldap_20-09-2008.tar.bz2
Ensuite, il vous faut décompresser l’archive dans votre PORTDIR_OVERLAY :
# tar -xvjf dhcp-3.0.3-4.0.0.ebuild+ldap_20-09-2008.tar.bz2 -C /usr/local/portage
Puis, ajoutez le paquet net-misc/dhcp au fichier /etc/portage/package.mask :
echo ">net-misc/dhcp-3.0.4" >> /etc/portage/package.mask
A ce stade nous allons installer le paquet en question :
# USE=ldap emerge -av net-misc/dhcp
Pour la configuration du paquet net-nds/openldap, veuillez vous reporter à la documentation officielle, mais surtout n’oubliez pas d’inclure le schema dhcp que vous pourrez trouver dans le repertoire $PORTDIR_OVERLAY/net-misc/dhcp/files.
Si vous aviez déjà un serveur DHCP fonctionnel sur votre machine, alors nous allons nous occuper de convertir les informations contenues dans le fichier /etc/dhcp/dhcpd.conf.
Pour ce faire, il existe un petit script perl qui fait bien l’affaire.
# wget 'http://cvs.fedora.redhat.com/viewvc/devel/dhcp/dhcpd-conf-to-ldap?view=co' -O dhcpd-conf-to-ldap.pl
# chmod +x dhcpd-conf-to-ldap.plSon utilisation est trés simple :
# ./dhcpd-conf-to-ldap.pl -h
usage:
./dhcpd-conf-to-ldap.pl [options] < dhcpd.conf > dhcpd.ldif
options:
--basedn "dc=your,dc=domain" ("dc=gentoofr,dc=org")
--dhcpdn "dhcp config DN" ("cn=DHCPConfig,dc=gentoofr,dc=org")
--server "dhcp server name" ("dhcp")
--second "secondary server or DN" ("")
--conf "/path/to/dhcpd.conf" (default is stdin)
--ldif "/path/to/output.ldif" (default is stdout)
--use "extended features" (see source comments)Application pratique en supposant que la racine de votre serveur LDAP soit dc=gentoofr,dc=org et que votre serveur a comme hostname dhcp :
# ./dhcpd-conf-to-ldap.pl --basedn "dc=gentoofr,dc=org" \
--dhcpdn "cn=DHCPConfig,dc=gentoofr,dc=org" \
--server dhcp \
--conf /etc/dhcp/dhcpd.conf \
--ldif dhcpd.ldifCeci va générer un fichier ldif dont nous allons nous servir pour entrer la configuration de votre serveur DHCP dans notre serveur LDAP.
Voici ce qu’il contient dans notre example :
version: 1
dn: cn=dhcp,dc=gentoofr,dc=org
cn: entropie
dhcpServiceDN: cn=DHCPConfig,dc=gentoofr,dc=org
objectClass: top
objectClass: dhcpServer
dn: cn=DHCPConfig,dc=gentoofr,dc=org
cn: DHCPConfig
dhcpPrimaryDN: cn=dhcp,dc=gentoofr,dc=org
dhcpStatements: ddns-update-style ad-hoc
objectClass: top
objectClass: dhcpService
dn: cn=192.168.0.0,cn=DHCPConfig,dc=gentoofr,dc=org
cn: 192.168.0.0
dhcpNetMask: 24
dhcpOption: domain-name-servers 192.168.0.1
dhcpOption: subnet-mask 255.255.255.0
dhcpOption: routers 192.168.0.1
dhcpOption: domain-name "gentoofr.org"
dhcpStatements: default-lease-time 28800
dhcpStatements: max-lease-time 28800
objectClass: dhcpOptions
objectClass: dhcpSubnet
objectClass: top
dn: cn=babykart,cn=192.168.0.0,cn=DHCPConfig,dc=gentoofr,dc=org
cn: babykart
dhcpHWAddress: ethernet 00:00:00:00:00:00
dhcpStatements: fixed-address 192.168.0.2
objectClass: dhcpHost
objectClass: topAfin que le serveur LDAP puisse reconnaître les classes d’objet propre au serveur DHCP, il nous faut indiquer le schema dans la configuration du serveur LDAP en éditant le fichier /etc/openldap/slapd.conf et en y ajoutant la ligne suivante :
include /etc/openldap/schema/dhcp.schema
Si votre serveur LDAP n’est pas sur la même machine que le serveur DHCP, il vous suffit de copier le fichier /usr/local/portage/net-misc/dhcp/files/dhcp.schema dans le repertoire /etc/openldap/schema/ de votre serveur LDAP.
A ce niveau nous pouvons entrer les informations dans notre serveur LDAP (local) :
# ldapadd -D "cn=manager,dc=gentoofr,dc=org" -w secret dhcpd.ldif
Passons à la modification du fichier /etc/dhcp/dhcpd.conf afin d’indiquer au serveur DHCP les coordonnées du serveur LDAP (dans notre example le serveur LDAP est en local) :
ldap-server "127.0.0.1";
ldap-port 389;
ldap-username "cn=manager,dc=gentoofr,dc=org";
ldap-password "secret";
ldap-base-dn "dc=gentoofr,dc=org";
ldap-method dynamic;
ldap-debug-file "/var/log/ldap-startup.log";Nous en avons terminé avec la configuration, il ne nous reste plus qu’à lancer le serveur DHCP et tester :
# rc-update -a dhcp default
# /etc/init.d/dhcp startSi vous avez des érreurs au lancement du serveur DHCP, jetez un coup d’oeil dans vos logs, sinon vous devriez avoir un fichier /var/log/ldap-startup.log contenant ceci :
ddns-update-style ad-hoc;
subnet 192.168.0.0 netmask 255.255.255.0 {
default-lease-time 28800;
max-lease-time 28800;
option domain-name-servers 192.168.0.1;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option domain-name "gentoofr.org";
}
La page de Brian Masney pour le patch de la version 3.0.3
CVS Fedora Redhat pour le patch LDAP de la version 4.0.0
L’archive contenant l’overlay net-misc/dhcp (patchs inclus) :