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

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 upgrade
 

Maintenant on va installer le serveur DNS :

apt-get install pdns-backend-ldap pdns-server
 

On va commencer par sauvegarder la configuration d’origine :

mv /etc/powerdns/pdns.conf /etc/powerdns/pdns.backup
 

Configurons la bête :

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

nano /etc/powerdns/pdns.conf
 

Puis collez ceci dedans :

allow-recursion=127.0.0.1, 192.168.1.0/24
config-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) » 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
 

si 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/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/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.ldif
 

Une 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 🙂

Laisser un commentaire

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