Tux





Utilisateur :

Mot de passe :



Fil RSS+XML
Fil RSS/XML



la bataille hadopi
Make with bluefish editor
Dessin fait avec le logiciel inkscape
Graphics by GIMP
Get Firefox

tux qui bouge

Revenir à la page principale : Réseau

Ajout du support LDAP pour un serveur DHCP

Introduction et rappel


Le DHCP (Dynamique Host Configuration Control) est un service, qui sert à configurer les paramètres réseaux des machines clientes à distance.

Ainsi la machine cliente une fois son démarrage effectif obtient directement du serveur tous ses paramètres réseau.
Pré-requis :

Savoir installer et configurer un serveur DHCP.
L'objectif de cette documentation est d'inclure complétement la gestion du DHCP dans notre Annuaire LDAP

Pour le moment le support LDAP dans un serveur DHCP se fait avec un patch que vous pourrez trouver ci dessous :

Versions utilisées

DHCP http://www.isc.org/products/DHCP/ 3.0.2
Patch DHCP
to add LDAP support de Brian Masney
http://home.ntelos.net/~masneyb/ 3.0.2

Compilation de DHCPD

Décompression de dhcp

Nous allons commencer par décompresser l'archive récupérée :
tar zxvf dhcp-3.0.1rc11.tar.gz
ou
gunzip dhcp-3.0.1rc11.tar.gz | tar -xvf -

Application du patch

Application du Patch de Brian Masney
cd dhcp-3.0.2
cp dhcp-3.0.2-ldap-patch .
patch -p1 < dhcp-3.0.2-ldap-patch
La sortie de la commande patch donnera :
  patching file README.ldap
  patching file common/conflex.c
  patching file common/print.c
  patching file contrib/dhcp.schema
  patching file contrib/dhcpd-conf-to-ldap.pl
  patching file debian/changelog
  patching file debian/control
  patching file debian/copyright   patching file debian/dhcp3-ldap-ntelos/DEBIAN/control
  patching file debian/dhcp3-ldap-ntelos/DEBIAN/md5sums
  patching file debian/dhcp3-ldap-ntelos/DEBIAN/postinst
  patching file debian/dhcp3-ldap-ntelos/DEBIAN/postrm
  patching file debian/dhcp3-ldap-ntelos/DEBIAN/preinst
  patching file debian/dhcp3-ldap-ntelos.files
  patching file debian/dhcp3-ldap-ntelos.postinst
  patching file debian/dhcp3-ldap-ntelos.postrm
  patching file debian/dhcp3-ldap-ntelos.preinst
  patching file debian/dhcp3-ldap-ntelos.substvars
  patching file debian/dirs
  patching file debian/files
  patching file debian/rules
  patching file doc/draft-ietf-dhc-ldap-schema-01.txt
  patching file includes/dhcpd.h
  patching file includes/site.h
  patching file server/Makefile.dist
  patching file server/class.c
  patching file server/confpars.c
  patching file server/dhcpd.c
  patching file server/ldap.c
  patching file server/mdb.c
  patching file server/stables.c
  patching file site.conf   

Préparation de la compilation

Nous pouvons commencer l'installation de DHCP+LDAP
Pour compiler DHCP, nous devons en premier lieu exécuter la commande configure ./configure
Veuillez lire la documentation ( README.ldap ) fournie avec le patch de Brian Masney, elle contient les informations sur les paramètres à ajouter ou mettre en place avant de lancer la compilation.

Compilation et Installation du serveur DHCP+LDAP

La compilation se résume par les commandes suivantes :
make
make install
touch /var/state/dhcp/dhcpd.leases

Configuration de DHCP

Maintenant notre daemon DHCP a besoin d'être configuré, et il faut intégré les parametres de notre DHCP dans notre serveur LDAP :

Définition du fichier /etc/dhcpd.conf

ldap-server      "locahost";
ldap-port        389;
ldap-username    "cn=dhcpadmin,ou=systeme,dc=lpv,dc=be";
ldap-password    "motdepasse";
ldap-base-dn     "ou=DHCP,ou=ressources,dc=lpv, dc=be";
ldap-method      dynamic;
ldap-debug-file  "/var/log/dhcp-ldap-startup.log";
On constate que ce fichier fait appel à un utilisateur cn=dhcpadmin et à une branche ou=DHCP.
En effet afin de conserver un annuaire "propre", nous avons créer une branche DHCP qui contiendra la configuration de notre serveur DHCP, et pour conserver un minimum de sécurité nous allons créer un utilisateur cn=dhcpadmin, qui sera le seul à pouvoir lire, modifier et/ou supprimer le contenu de la branche ou=DHCP

Fichier LDIF pour générer l'arbre nécessaire dans le serveur LDAP

Voici le fichier LDIF ( dhcp-ressources.ldif ) pour la création, de l'utilisateur cn=dhcpadmin et de la branche ou=DHCP
dn: ou=DHCP,ou=ressources, dc=lpv,dc=be
objectclass: organizationalunit
ou: DHCP
description: Serveurs DHCP

dn: cn=dhcpadmin,ou=systeme,dc=lpv,dc=be
objectclass: top
objectclass: person
cn: dhcpadmin
sn: dhcpadmin
userpassword: {SSHA}k0q01Uce4Btz4uVr/WsXFXvkhUpbwoZP


Afin d'ajouter dans l'annuaire le contenu du fichier ldif, il faut executer cette commande
$ ldapadd -x -D "cn=manager,dc=lpv,dc=be" -W -f dhcp-ressources.ldif
Pour créer un fichier LDIF contenant la configuration d'un serveur DHCP déjà existant, il existe un outils livré avec le patch :
si vous n'avez pas de serveur DHCP actif, inspirez vous du fichier LDIF résultant pour construire votre propre fichier L'outil est un script perl :
  dhcp-ldap-3.0pl1/contrib/dhcpd-conf-to-ldap.pl
Je vous invite à éditer ce fichier pour faire correspondre l'arborescence de notre annuaire : my $basedn = "ou=DHCP, ou=ressources, dc=lpv, dc=be";

Génération du fichier LDIF

dhcp-ldap-3.0pl1/contrib/dhcpd-conf-to-ldap.pl dhcpd.conf dhcpd-lpv.ldif

Rappel du fichier de configuration de notre serveur DHCP


# Exemple de configuration /etc/dhcpd.conf

# On donne le nom du domaine
  option domain-name "lpv.be";

#On défini le masque réseau
  option subnet-mask 255.255.255.0;

# Ici c'est le serveur de nom, le serveur privé,
# il faut aussi mettre le/les DNS donnés par votre provider.
  option domain-name-servers 192.168.1.2 , 192.168.1.3;
  ddns-update-style ad-hoc;

# Les clients auront cette adresse comme passerelle par défaut
  option routers 192.168.1.1;

#Le bail a une durée de 86400 s par défaut, soit 24 h
# On peut configurer les clients pour qu'ils puissent demander une durée de bail spécifique
  default-lease-time 86400;

#On le laisse avec un maximum de 7 jours
  max-lease-time 604800;

# Définition du réseau : 192.168.1.0 et de son masque
  subnet 192.168.1.0 netmask 255.255.255.0 {

#La plage d'adresses disponibles pour les clients
  range 192.168.1.4 192.168.1.253;

# Et l'adresse utilisée pour la diffusion
  option broadcast-address 192.168.1.255;

}

# Définition de notre machine PC-1
  host PC-1 {
     hardware ethernet 00:00:4C:71:46:68;
     fixed-address 192.168.1.5;
}


Nous obtenons ainsi le fichier dhcpd-lpv.ldif correspondant à cette configuration :
  dn: cn=server, ou=DHCP,ou=ressources, dc=lpv, dc=be
  objectClass: top
  objectClass: dhcpServer
  cn: server
  dhcpServiceDN: cn=DHCP Config, ou=DHCP,ou=ressources, dc=lpv, dc=be
  
  dn: cn=DHCP Config, ou=DHCP,ou=ressources, dc=lpv, dc=be
  cn: DHCP Config
  objectClass: top
  objectClass: dhcpService
  objectClass: dhcpOptions
  dhcpPrimaryDN: cn=server, ou=DHCP,ou=ressources, dc=lpv, dc=be
  dhcpStatements: ddns-update-style ad-hoc
  dhcpStatements: default-lease-time 86400
  dhcpStatements: max-lease-time 604800
  dhcpOption: domain-name "lpv.be"
  dhcpOption: subnet-mask 255.255.255.0
  dhcpOption: domain-name-servers 192.168.1.2 , 192.168.1.3
  dhcpOption: routers 192.168.1.1
  
  dn: cn=192.168.1.0, cn=DHCP Config, ou=DHCP,ou=ressources, dc=lpv, dc=be
  cn: 192.168.1.0
  objectClass: top
  objectClass: dhcpSubnet
  objectClass: dhcpOptions
  dhcpNetMask: 24
  dhcpRange: 192.168.1.4 192.168.1.253
  dhcpOption: broadcast-address 192.168.1.255
  
  dn: cn=PC-1, cn=DHCP Config, ou=DHCP,ou=ressources, dc=lpv, dc=be
  cn: PC-1
  objectClass: top
  objectClass: dhcpHost
  dhcpHWAddress: ethernet 00:00:4C:71:46:68
  dhcpStatements: fixed-address 192.168.1.5
   


Configuration du serveur LDAP pour la fonction DHCP

Nous avons maintenant besoin que notre serveur OpenLDAP, prennent en compte les nouveaux attributs correspondant au DHCP ( extension du schema ), mais également de mettre en place notre ACL sur la branche ou=DHCP, et ajouter de nouveaux index correspondant a nos attributs DHCP

Pour cela procéder comme suit :
Il faut copier le fichier dhcp.schema dans le repertoire "OpenLDAP" contenant deja tous les schemas :
cp dhcp-ldap-3.0pl1/contrib/dhcp.schema /usr/local/OpenLDAP/etc/openldap/schema/


Extension du schema de l'annuaire :
Editer le fichier slapd.conf, pour y ajouter ceci :
#Les differents class d'objets et attributs.
include         /usr/local/OpenLDAP/etc/openldap/schema/core.schema
include         /usr/local/OpenLDAP/etc/openldap/schema/cosine.schema
include         /usr/local/OpenLDAP/etc/openldap/schema/inetorgperson.schema
include         /usr/local/OpenLDAP/etc/openldap/schema/nis.schema
include         /usr/local/OpenLDAP/etc/openldap/schema/dhcp.schema


#Les fichier pid et args.
pidfile         /var/run/slapd.pid
argsfile        /var/run/slapd.args

#######################################################################
# ldbm database definitions
#######################################################################

#Definition de la structure du schema.
database        ldbm

suffix          "dc=lpv,dc=be"
rootdn          "cn=manager,dc=lpv,dc=be"

#Le mot de passe obtenu avec slappasswd.
rootpw          {SSHA}N4G7BbBFYfNZSiaBaEkWb7oV6cLReROZ # toto en crypté

#Ou sera stocke l'annuaire
directory       /var/lib/openldap-data

#Creation des index

index   cn,sn  		pres,eq,approx,sub
index 	uid,mail
index   objectClass     eq
index           dhcpHWAddress   eq
index           dhcpClassData   eq

#Les droits
defaultaccess   read # { none | compare | search | read | write }
# L'administrateur a tous les droits.
access to *
        by dn="cn=manager,ou=ressources,dc=lpv,dc=be" write
        by * read

# Seul l'utilisateur peut changer son mot de passe et l'administrateur biensur.
access to attribute=userPassword
        by dn="cn=manager,ou=ressources,dc=lpv,dc=be" write
        by anonymous auth
        by self write
        by * none

# Seul l'administrateur et l'utilisateur dhcpadmin peuvent modifier les elements de la branche ou=DHCP
access to dn="ou=DHCP,ou=ressources,dc=lpv,dc=be"
 by dn="cn=manager,ou=ressources,dc=lpv,dc=be" write
 by dn="cn=dhcpadmin,ou=ressources,dc=lpv,dc=be" write
 by * read
			

Redemarrage de notre serveur LDAP, pour la prise en compte des changements

/etc/init.d/slapd stop
/etc/init.d/slapd start

Il ne nous reste plus qu'a integrer notre fichier dhcpd-lpv.ldif avec l'utilisateur cn=dhcpadmin
Via la commande suivante :
ldapadd -x -D "cn=dhcpadmin,ou=ressources,dc=lpv,dc=be" -W -f dhcpd-lpv.ldif

Lancement du serveur dhcp

Et enfin lancer notre serveur dhcpd
Il faut exécuter le démon dhcpd . Si vous n"avez pas de script pour le lancement automatique au démarrage de la machine, en voici un : Creation du script : /etc/init.d/dhcpd-ldap :
#!/bin/sh

if [ ! -f /etc/dhcpd.conf ]; then
	echo "/etc/dhcpd.conf does not exist! - Aborting..."
	exit 1
fi

DHCPDPID=/var/run/dhcpd.pid
INTERFACES=eth0

case "$1" in
	start)
		echo -n "Starting DHCP server: "
		start-stop-daemon --start --quiet --pidfile $DHCPDPID \
			--exec /usr/sbin/dhcpd -- -q $INTERFACES
		sleep 2

		if [ -f "$DHCPDPID" ] && ps h `cat "$DHCPDPID"` >/dev/null; then
			echo "dhcpd."
		else
			echo "dhcpd failed to start - check syslog for diagnostics."
		fi
		;;
	stop)
		echo -n "Stopping DHCP server: dhcpd-ldap"
		start-stop-daemon --stop --quiet --pidfile $DHCPDPID
		echo "."
		;;
	restart | force-reload)
		$0 stop
		sleep 2
		$0 start
		;;
	*)
		echo "Usage: /etc/init.d/dhcpd-ldap {start|stop|restart|force-reload}"
			exit 1 
	esac
	
	exit 0
Assurez-vous de demarrez votre DHCP une fois que votre annuaire soit actif


Auteur : Stéphane Purnelle
Licence : PDL


Ecrire un commentaire - (html non autorisé)

Il y a 0 commentaires pour cet article

Vous n'êtes pas connecté. Votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.Vous pouvez vous vous enregistrer ICI

TITRE :

Ligne Plus-Value
[Revenir au début de la page]   [HOME]   [A propos]