gblend-1
Accueil du site > Documentations > Réseau > DHCP + LDAP

DHCP + LDAP

Publié le mardi 15 novembre 2005, mis a jour le samedi 28 juillet 2007, par Stephane MALINET

Cette documentation a pour but la mise en place d’un serveur DHCP prenant sa configuration dans un annuaire LDAP.


Introduction

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.

Installation

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://babykart.free.fr/appz/dhcp-3.0.3-r9.ebuild+ldap_24-06-2006.tar.bz2

Ensuite, il vous faut décompresser l’archive dans votre PORTDIR_OVERLAY :

# tar -xvjf dhcp-3.0.3-r9.ebuild+ldap_24-06-2006.tar.bz2 -C /usr/local/portage

Puis, ajoutez le paquet net-misc/dhcp au fichier /etc/portage/package.keywords.

A ce stade nous allons installer le paquet en question :

# USE=ldap emerge -av net-misc/dhcp

Configuration

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://babykart.free.fr/scripts/dhcpd-conf-to-ldap.pl
# chmod +x dhcpd-conf-to-ldap.pl

Son 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.ldif

Ceci 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: top

Afin 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 start

Si 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";
}

Liens

- DHCP

- LDAP

Répondre à cet article


Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | SPIP | squelette