Salut à tous, encore un article plutôt axé informatique / domotique qui vient à la suite des deux précédents articles sur la raspberry pi et l’annuaire LDAP. Il y a pas mal de copier coller car l’article du DHCP et celui-ci sont relativement proche 🙂
Alors, pourquoi un serveur DNS indépendant de la box et pourquoi le relier avec un LDAP ?
Un serveur DNS indépendant de la box va nous permettre de nommer nos machines pour pouvoir y accéder plus facilement. C’est quand même plus sympa de taper domotique pour accéder à notre page domotique que de taper l’éternelle 192.168.x.x. Si si parlez en à madame vous verrez 🙂
Oui mais la box sait faire ça…
Oui mais je ne veux pas dépendre d’un matériel que je ne maitrise pas (en terme de paramétrage et de sécurité), en plus si jamais la box tombait en panne ou si je changeai de FAI (Fournisseur d’Accès Internet) il me faudrait tout re paramétrer … et en attendant, retour à l’age de pierre… encore une fois pour que la domotique fonctionne il faut que son « WAF » (Women Acceptance Factor) soit élevé ! et donc que ça fonctionne et que ça soit facile à utiliser…
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 DNS 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 DHCP est aussi paramétré sur votre annuaire vous pourrez gérer les deux très facilement à travers la même interface graphique (votre client LDAP) et donc ajouter une machine à votre réseau en lui donnant un petit nom 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 upgradeMaintenant on va installer le serveur DNS :
apt-get install pdns-backend-ldap pdns-serverOn va commencer par sauvegarder la configuration d’origine :
mv /etc/powerdns/pdns.conf /etc/powerdns/pdns.backupConfigurons la bête :
créez un fichier de configuration vide et ouvrez le :
nano /etc/powerdns/pdns.confPuis collez ceci dedans :
allow-recursion=127.0.0.1, 192.168.1.0/24config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
guardian=yes
lazy-recursion=yes #l’adresse d’écoute
local-address=x.x.x.x #le port d’écoute
local-port=53
module-dir=/usr/lib/powerdns
recursor=192.168.1.1
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include=/etc/powerdns/pdns.d #On indique à notre DNS qu’il faut passer par ldap
launch=ldap # On lui donne l’adresse de notre serveur
ldap-host=ldap://x.x.x.x:389/ # on lui donne les informations de connections
ldap-basedn=ou=dns,dc=chezloizoetpuce,dc=fr
#ldap-binddn=cn=login,dc=chezloizoetpuce,dc=fr
#ldap-secret=password
ldap-method=tree
Remplacez x.x.x.x par votre ip et 192.168.1.1 par votre DNS habituel (google / votre box / votre DNS favorit).
En effet recursor permet de dire à notre DNS que si il ne connait pas l’adresse il demande au serveur situé dans « recursor ».
J’ai mis quelques commentaires sur les options les plus importantes. Les autres j’avoue ne pas avoir cherché à quoi elles servaient. Pour le moment je n’ai pas encore pousser ma recherche sur les options de peaufinage par manque de temps. mais il viendra un jour ou je sécuriserai tout ça 🙂 à commencer par détailler chaque options de chaque logiciels.
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.
Normalement vous devriez avoir un fichier nommé dnsdomain2.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) » dnCe 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=configsi vous avez suivi le tuto sur le DHCP vous devriez avoir une ligne en plus avec le schema du dhcp 🙂 et aussi pour la suite le {4} aura une autre valeur (5 par exemple), c’est le numéro du schéma.
Ensuite on va créer un répertoire /tmp/ldapconvert
mkdir /tmp/ldapconvertUn 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.schemainclude /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/dnsdomain2.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}dnsdomain2.ldif
ça tombe bien on va justement déplacer ce fichier :
cp « /tmp/ldapconvert/cn=config/cn=schema/cn={4}dnsdomain2.ldif » « /etc/ldap/schemas/ »On ajoute le schéma à l’annuaire
ldapadd -QY EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dnsdomain2.ldifUne autre solution un peu plus crade :
cp « /tmp/ldapconvert/cn=config/cn=schema/cn={4}dnsdomain2.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}dnsdomain2.ldif’On relance les services :
/etc/init.d/slapd stop/etc/init.d/slapd start /etc/init.d/pdns restart
Si vous voyez que la configuration ne passe pas dans le LDAP
commentez toutes les lignes du fichier /etc/powerdns/pdns.d/pdns.simplebind
voila pour le paramétrage 🙂