Domotique : Installation d’un serveur DHCP lié à  l’annuaire LDAP sur la raspberry pi

Salut à  tous, et oui encore un article ! la raspberry pi m’a remis en forme et j’ai du coup pleins de truc à  partager avec vous 🙂

Alors, pourquoi un serveur DHCP indépendant de la box et pourquoi le relier avec un LDAP  ?

Un serveur DHCP indépendant de la box permet de paramétrer l’ensemble de son réseau facilement en définissant des plages fixes et des plages variables.

Par exemple : Mon réseau est en 192.168.x.x. Je veux que mes serveurs soient en ip fixe distribué par le DHCP avec des IP allant de 2 à  20 pour les retrouver facilement, mes imprimantes de 21 à  30 et mes pc perso de 31 à  40. Pour les Pc des invités ils seront sur la plage dynamique entre 100 et 200. Bien pour la mise en place de règles de pare feu ça facilite un peu les choses. De même on s’y retrouve facilement et les machines ont les mêmes IP même après une réinstallation.

Oui mais la box sait faire ça…

Oui certes mais, en cas de panne de la box plus rien ne fonctionne, en cas de changement de FAI (Fournisseur d’Accès Internet)  idem… dans les deux cas il faut tout re paramétrer. Pire si vous utilisez un DNS pour accéder plus facilement à  vos serveurs et avoir un réseau dit « WAF » (Women Acceptance Factor)  pour que madame puisse accéder aux photos en tapant photos dans explorer par exemple :). Et bien la le DHCP bien gérer est un facteur important de non prise de tête…

Pire encore, imaginez, vous gérez votre domotique en IP… d’un coup la box vous lâche… soit vous avez tout paramétré en fixe, ce qui n’est pas très pratique pour l’évolutivité de l’installation, soit plus rien ne fonctionne !

Oui mais pourquoi le lier à  un LDAP ? le fichier de config n’est il pas plus simple ?

Au début si, mais une fois le DHCP mis en place dans le LDAP il y a plusieurs avantages…

1) On peut le manager directement à  travers un client LDAP comme LDAP Admin ou phpldapadmin, avec une jolie petite interface graphique et en quelques cliques.

2) Le serveur est dynamique ! plus besoin de relancer le service à  chaque modif… on ajoute une entrée dans le LDAP et hop elle est prise en compte immédiatement !

3) Si votre DNS est aussi paramétré sur votre annuaire vous pourrez gérer les deux très facilement à  travers la même IHM (votre client LDAP) et donc ajouter une machine à  votre réseau en lui donnant une adresse et une IP de manière simple et efficace 🙂 elle est pas belle la vie ? ^^

Allez pour ceux qui sont intéressé la pratique c’est par ici 🙂

On va commencer par faire une petite mise à  jour :

apt-get update
apt-get upgrade
 

Maintenant on va installer le serveur DHCP :

apt-get install isc-dhcp-server-ldap
 

On va commencer par sauvegarder la configuration d’origine :

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup
 

Configurons la bête :

créez un fichier de configuration vide et ouvrez le :

nano /etc/dhcp/dhcpd.conf
 

Puis collez ceci dedans :

ldap-server « 127.0.0.1 » ;
#l’adresse de votre serveur LDAP
ldap-port 389 ; #le port de votre serveur LDAP
# login
ldap-username « cn=admin,dc=votredomaine,dc=fr » ;
ldap-password « votremotdepasse » ; # Indique ou se trouve les informations nécessaires
ldap-base-dn « ou=dhcp,dc=votredomaine,dc=fr » ; # Indique que le ldap est consulté à  chaque fois, ce qui permet une modification #dynamique sans redémarer DHCPD
ldap-method dynamic ; # Donne la configuration récupéré du serveur LDAP
ldap-debug-file « /var/log/dhcp-ldap-startup.log » ;
 

Il faut maintenant qu’on indique à  l’annuaire sous quelle forme il faut stocker ces informations. Pour cela on va utiliser un schéma, qui sert grossomodo à  définir des types de données.

On va donc commencé par récupérer ce schéma :

 cp /usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz /etc/ldap/schema/
 

on le décompresse :

gunzip /etc/ldap/schema/dhcp.schema.gz
 

Normalement vous devriez avoir un fichier nommé dhcp.schema dans /etc/ldap/schema

Ensuite pour l’intégrer il faut suivre plusieurs étapes depuis que les développeurs d’OpenLDAP ont eu la merveilleuse idée d’intégrer la configuration de l’annuaire … à  l’intérieur de l’annuaire au lieu d’un bête fichier de configuration…

Tout d’abord, pour éviter les problème de dépendance on va demander à  l’annuaire les schémas déjà  intégrés :

ldapsearch -LLLQY EXTERNAL -H ldapi:/// -b cn=schema,cn=config « (objectClass=olcSchemaConfig) » dn
 

Ce qui devrais vous retourner quelque chose comme :

dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
 

Ensuite on va créer un répertoire /tmp/ldapconvert

mkdir /tmp/ldapconvert
 

Un fichier /tmp/convert.conf dans lequel on va ajouter nos schémas existants en plus de celui/ceux à  ajouter. Cela évite les messages d’erreurs liés à  des problèmes de dépendances entre les schémas lors de la conversion :

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/dhcp.schema
 

On génère le LDIF :

slaptest -f /tmp/convert.conf -F /tmp/ldapconvert/
 

Normalement il devrait être content et avoir généré un fichier du genre /tmp/ldapconvert/cn=config/cn=schema/cn={4}dhcp.ldif

ça tombe bien on va justement déplacer ce fichier :

cp « /tmp/ldapconvert/cn=config/cn=schema/cn={4}dhcp.ldif » « /etc/ldap/schema/ »

On ajoute le schéma à    l’annuaire

ldapadd -QY EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dhcp.ldif
 

Une autre solution un peu plus crade :

cp « /tmp/ldapconvert/cn=config/cn=schema/cn={4}dhcp.ldif » « /etc/ldap/slapd.d/cn=config/cn=schema »
 

on donne à  ldap la propriété du fichier :

chown openldap: ‘/etc/ldap/slapd.d/cn=config/cn=schema/cn={4}dhcp.ldif’
 

On relance le service :

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

2 Commentaires

  1. Hervé DILLIES

    Bonjour et merci pour le tuto !

    Je crois qu’il faut enlever le « s » à « schemas » dans cette ligne :
    cp « /tmp/ldapconvert/cn=config/cn=schema/cn={4}dhcp.ldif » « /etc/ldap/schemas/ »

    Non ?

    Ensuite, la ligne ldapadd ne devrait-elle pas avoir cette syntaxe :
    ldapadd -QY EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cn={4}dhcp.ldif
    ?

    Même en faisant ces corrections, j’ai le retour suivant que je ne sais pas interprêter (OK ou Pas OK ?) :
    adding new entry « cn={4}dhcp »
    ldap_add: Server is unwilling to perform (53)
    additional info: no global superior knowledge

    Je ne suis pas encore bien à l’aise avec Linux mais ça vient doucement.

    Répondre
    1. loizo (Auteur de l'article)

      Désolé, ça fait très longtemps que je ne suis pas revenu par manque de temps !
      Tu as du trouver le solution depuis ^^
      Tu as raison pour le s, une petite faute qui s’est glissé dans les copier collés.
      Pour la seconde ligne la syntaxe que j’ai utilisé à l’époque a fonctionné. Il y a peut être eu des mises à jour depuis !
      Je pense que ton serveur n’aime pas le {4}.
      Mais ça fait trop longtemps que je ne me suis pas replongé dans openldap pour te dire clairement…

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *