Lerm-IT

Blog traitant de technologies informatiques. Logiciel libre, AdminSys, DevOps et GNU/Linux !

12 Nov 2010

[DNS] Un serveur DNS en backend LDAP sur votre Debian Lenny

Je vais vous présenter ici une installation rapide d’un serveur DNS en backend LDAP.

J’ai choisi d’utiliser PowerDNS qui a l’avantage d'être livré avec un nombre important de backend pour stocker vos couples nom de domaine – IP.

Installation des paquets

Tout d’abord il va nous falloir installer le serveur DNS sur notre machine. Sous Debian trois paquets vont être nécessaires :

  • pdns-server : Le serveur DNS en lui-même qui interceptera les demandes sur le port UDP 53 et y répondra.
  • pdns-recursor : Le “récurseur” qui contactera le backends LDAP pour fournir à pdns-server les informations demandées.
  • pdns-backend-ldap : Le module de connexion à l’annuaire LDAP.

Donc nous allons simplement faire un aptitude

aptitude install pdns-server pdns-recursor pdns-backend-ldap

L’installation est terminé reste le plus intéressant : La configuration !!

Configuration des entrées LDAP

Nous partons du principe que vous avez un serveur LDAP fonctionnel.

Pour utiliser votre annuaire LDAP pour stocker vos informations DNS il y a deux possibilités :

  • Utiliser le schéma standard de LDAP (cosine) avec les entrées dNSDomain ce qui est suffisant mais qui ne vous permettra pas de faire du “revers lookup” (Trouver les noms de domaines associés à une IP)
  • Utiliser le schéma proposé par pdns-backend-ldap avec les entrées dNSDomain2 qui supprime la limitation énoncée ci-dessus.

Nous avons choisi la deuxième solutions. Pour cela nous devons télécharger le schéma dnsdomain2.schema qui est disponible à cette adresse : http://www.linuxnetworks.de/pdnsldap/dnsdomain2.schema et l’inclure dans notre configuration d’OpenLDAP. Nous passerons sur ce point qui est mainte et mainte fois exposé sur le web.

Nous allons donc créer des fichier LDIF pour ajouter nos DNS en base. L’architecture utilisé sera la suivante :

dc=exemple,dc=lan

-ou=dns

–dc=lan

—dc=exemple

—-dc=dns

—-dc=machine1

—-dc=machine2

La base de notre annuaire est dc=exemple,dc=lan. Nous créons un OU dns dans laquelle nous allons ajouter les différentes couches de notre entrée DNS :

  • com : le tld
  • exemple : notre domaine
  • dns : notre machine qui servira de serveur dns
  • machine1 et machine2 : deux hôtes de notre réseau.

Voyons le fichier LDIF

dn: dc=example,dc=lan

objectClass: dcObject

objectClass: organization

dc: example

o: example.lan

dn: ou=dns,dc=example,dc=lan

objectClass: top

objectClass: organizationalUnit

ou: dns

dn: dc=lan,ou=dns,dc=example,dc=lan

objectClass: dNSDomain2

objectClass: domainRelatedObject

dc: lan

associateddomain: lan

dn: dc=example,dc=lan,ou=dns,dc=example,dc=lan

objectClass: dNSDomain2

objectClass: domainRelatedObject

dc: example

SOARecord: dns.example.lan [email protected] 1 1800 3600 86400 7200

NSRecord: dns.example.lan

ARecord: 10.0.0.2

associatedDomain: example.lan

dn: dc=dns,dc=example,dc=lan,ou=dns,dc=example,dc=lan

objectClass: dNSDomain2

objectClass: domainRelatedObject

dc: dns

ARecord: 10.0.0.2

associatedDomain: dns.example.lan

dn: dc=machine1,dc=example,dc=lan,ou=dns,dc=example,dc=lan

objectClass: dNSDomain2

objectClass: domainRelatedObject

dc: machine1

ARecord: 10.0.0.100

associatedDomain: machine1.example.lan

dn: dc=machine2,dc=example,dc=lan,ou=dns,dc=example,dc=lan

objectClass: dNSDomain2

objectClass: domainRelatedObject

dc: machine2

ARecord: 10.0.0.101

associatedDomain: machine2.example.lan

Le fichier parle de lui-même (pour peu que vous ayez pris LDIF en LV2 au collège) mais il serait bon de revenir sur quelques points.

L’entrée dc=example,dc=lan,ou=dns,dc=example,dc=lan possède un attribut SOARecord et un NSRecord.

  • SOARecord pour “Start Of Authority Record” nous permet de spécifier qu’elle est l’autorité maitresse de la zone. Nous spécifiont aussi l’adresse mail du responsable du serveur (ici [email protected]) ainsi que quelque paramètre d’expirations des informations. Dans l’ordre :
    • serial : le numéro de version du domaine
    • refresh : l'écart en secondes entre les demandes successives de mise à jour réalisées depuis le serveur secondaire ou les serveurs esclaves
    • retry : le temps en secondes avant qu’un serveur secondaire ne retente une mise à jour après un échec
    • expire : délai en seconde après lequel le serveur maitre est considéré comme invalide s’il ne peut être contacté
    • minimum (ou default_ttl) : duré de vie en seconde d’une entré en cache
  • NSRecord : Un serveur de nom (DNS) proposant les entrées du domaine. Ici nous n’en avons qu’un mais il est fort probable que dans une installation d’entreprise il y en ai deux, trois voir bien plus !

La configuration LDAP est maintenant en place, allons explorer celle de PowerDNS.

Configuration du serveur DNS

Configurons tout d’abord la connexion au serveur LDAP. Ceci ce passe dans le fichier /etc/powerdns/pdns.d/pdns.local

# Serveur LDAP

ldap-host=ldap.exemple.lan:389

ldap-basedn=ou=dns,dc=exemple,dc=lan

# Identifiant de connexion si besoin.

# Dans un environnement de production ces champs devraient etre remplis

#ldap-binddn=””

#ldap-secret=””

# Methode de recherche

ldap-method="tree”

Pour le serveur LDAP n’oubliez pas de soit mettre une adresse IP, soit d’ajouter l’entrée ldap.exemple.lan dans votre fichier /etc/hosts pour qu’elle pointe sur l’IP du serveur LDAP.

Le dernier fichier de configuration a éditer est le fichier de configuration du serveur en lui-même. /etc/powerdns/pdns.conf ce fichier comportant de nombreuses options je ne vais vous lister que les indispensables

  • allow-recursion=127.0.0.1,10.0.0.0/8 vous permet de spécifier les adresses qui pourrons exécuter des requêtes récursives.
  • launch=ldap spécifit que nous utilisons le backend LDAP
  • local-address=10.0.0.2 liste des adresses d'écoutes séparées par des virgules
  • recursor=127.0.0.1 adresse IP du serveur “recursor”

Conclusion

En conclusion nous avons vue que la mise en place d’un serveur DNS en backend LDAP est assez simple. De plus l’utilisation d’un backend LDAP permet d’avoir un dynamisme assez important et surtout très interresent pour une local architecture d’entreprise (voir même plus !)