Installation · 9 min read · Oct 01, 2025

Installation de PowerDNS (avec backend MySQL) et Poweradmin sur Debian Lenny

Installation de PowerDNS (avec backend MySQL) et Poweradmin sur Debian Lenny

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

Cet article montre comment vous pouvez installer le serveur de noms PowerDNS (avec backend MySQL) et le panneau de contrôle Poweradmin pour PowerDNS sur un système Debian Lenny. PowerDNS est un serveur de noms autoritaire à haute performance - dans la configuration décrite ici, il lira les enregistrements DNS à partir d’une base de données MySQL (similaire à MyDNS), bien que d’autres backends tels que PostgreSQL soient également pris en charge. Poweradmin est un panneau de contrôle basé sur le web pour PowerDNS.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans cet exemple, j’utilise un hôte Debian Lenny avec le nom d’hôte server1.example.com et l’adresse IP 192.168.0.100, configuré selon les six premiers chapitres de ce tutoriel : Le Serveur Parfait - Debian Lenny (Debian 5.0) [ISPConfig 2].

Je vais configurer juste un serveur PowerDNS dans cet exemple (un maître) ; l’ajout de PowerDNS esclave(s) peut facilement être réalisé en utilisant la réplication de base de données MySQL du maître vers l(es) esclave(s), donc aucun transfert de zone n’est nécessaire (cela est encore une fois similaire à MyDNS). La réplication de base de données MySQL peut être configurée selon ce tutoriel : Comment configurer la réplication de base de données dans MySQL (PowerDNS prend également en charge les transferts de zone natifs (pour les scénarios où vous ne pouvez pas utiliser la réplication MySQL) - voir http://downloads.powerdns.com/documentation/html/replication.html).

2 Installation de MySQL

Pour installer MySQL, nous exécutons

aptitude install mysql-server mysql-client

Vous serez invité à fournir un mot de passe pour l’utilisateur root de MySQL - ce mot de passe est valide pour l’utilisateur root@localhost ainsi que [email protected], donc nous n’avons pas besoin de spécifier un mot de passe root MySQL manuellement plus tard :

Nouveau mot de passe pour l’utilisateur MySQL “root” : <– votremotdepasseMySQLroot
Répétez le mot de passe pour l’utilisateur MySQL “root” : <– votremotdepasseMySQLroot

Nous voulons que MySQL écoute sur toutes les interfaces (c’est important pour la réplication de base de données MySQL !), pas seulement localhost, donc nous éditons /etc/mysql/my.cnf et commentons la ligne bind-address = 127.0.0.1 :

vi /etc/mysql/my.cnf

| [...] #bind-address = 127.0.0.1 [...] |

Ensuite, nous redémarrons MySQL :

/etc/init.d/mysql restart

Maintenant, vérifiez que le réseau est activé. Exécutez

netstat -tap | grep mysql

La sortie devrait ressembler à ceci :

server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN     3031/mysqld  
server1:~#

3 Installation de PowerDNS

Pour installer PowerDNS, nous exécutons

aptitude install pdns-server pdns-backend-mysql

La configuration de PowerDNS se trouve dans le répertoire /etc/powerdns - j’y reviendrai dans un instant.

Maintenant, nous nous connectons à MySQL :

mysql -u root -p

Tapez votre mot de passe root MySQL, et vous devriez être sur le shell MySQL. Sur le shell MySQL, nous créons une base de données pour PowerDNS :

CREATE DATABASE powerdns;

Ensuite, nous créons un utilisateur de base de données (powerdns) pour PowerDNS :

GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'power_admin_password';  
GRANT ALL ON powerdns.* TO 'power_admin'@'localhost.localdomain' IDENTIFIED BY 'power_admin_password';  
FLUSH PRIVILEGES;

(Remplacez power_admin_password par un mot de passe de votre choix.)

Maintenant, nous créons les tables nécessaires à PowerDNS…

USE powerdns;
CREATE TABLE domains (  
id INT auto_increment,  
name VARCHAR(255) NOT NULL,  
master VARCHAR(128) DEFAULT NULL,  
last_check INT DEFAULT NULL,  
type VARCHAR(6) NOT NULL,  
notified_serial INT DEFAULT NULL,  
account VARCHAR(40) DEFAULT NULL,  
primary key (id)  
);
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (  
id INT auto_increment,  
domain_id INT DEFAULT NULL,  
name VARCHAR(255) DEFAULT NULL,  
type VARCHAR(6) DEFAULT NULL,  
content VARCHAR(255) DEFAULT NULL,  
ttl INT DEFAULT NULL,  
prio INT DEFAULT NULL,  
change_date INT DEFAULT NULL,  
primary key(id)  
);
CREATE INDEX rec_name_index ON records(name);  
CREATE INDEX nametype_index ON records(name,type);  
CREATE INDEX domain_id ON records(domain_id);
CREATE TABLE supermasters (  
ip VARCHAR(25) NOT NULL,  
nameserver VARCHAR(255) NOT NULL,  
account VARCHAR(40) DEFAULT NULL  
);

… et enfin quittez le shell MySQL :

quit;

Maintenant, nous devons configurer PowerDNS pour qu’il utilise le backend MySQL :

vi /etc/powerdns/pdns.conf

Ajoutez la ligne launch=gmysql à pdns.conf :

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql [...] |

Ensuite, ouvrez /etc/powerdns/pdns.d/pdns.local et faites-le ressembler à ceci :

vi /etc/powerdns/pdns.d/pdns.local

| # Here comes the local changes the user made, like configuration of # the several backends that exists. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Ensuite, redémarrez pdns :

/etc/init.d/pdns restart

C’est tout, PowerDNS est maintenant prêt à être utilisé. Pour en savoir plus à son sujet, veuillez vous référer à sa documentation : http://downloads.powerdns.com/documentation/html/index.html

4 Installation de Poweradmin

Maintenant, installons Poweradmin, un panneau de contrôle basé sur le web pour PowerDNS. Poweradmin est écrit en PHP, donc nous devons installer un serveur web (j’utilise Apache2 dans cet exemple) et PHP :

aptitude install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

Poweradmin nécessite également les deux packages PEAR suivants :

pear install DB  
pear install pear/MDB2#mysql

Maintenant, tous les prérequis pour Poweradmin sont installés, et nous pouvons commencer avec l’installation de Poweradmin (je vais l’installer dans un sous-répertoire de /var/www - /var/www est le répertoire racine des documents du site web par défaut d’Apache sur Debian ; si vous avez créé un vhost avec un répertoire racine différent, veuillez ajuster les chemins).

Allez sur https://www.poweradmin.org/trac/wiki/GettingPoweradmin et téléchargez le dernier package Poweradmin, par exemple comme suit :

cd /tmp  
wget https://www.poweradmin.org/download/poweradmin-2.1.4.tgz

Ensuite, installez-le dans le répertoire /var/www/poweradmin comme suit :

tar xvfz poweradmin-2.1.4.tgz  
mv poweradmin-2.1.4 /var/www/poweradmin  
touch /var/www/poweradmin/inc/config.inc.php  
chown -R www-data:www-data /var/www/poweradmin/

Maintenant, ouvrez un navigateur et lancez l'installateur web de Poweradmin (http://server1.example.com/poweradmin/install/index.php ou http://192.168.0.100/poweradmin/install/index.php).

Sélectionnez votre langue (anglais ou néerlandais) :

Cliquez sur le bouton Passer à l'étape 3 pour continuer :

Maintenant, remplissez vos détails de base de données. Il est important que vous remplissiez les détails pour l'utilisateur root MySQL, pas l'utilisateur MySQL powerdns que nous avons créé plus tôt ! Fournissez également un mot de passe pour l'utilisateur admin pour l'interface web de Poweradmin (c'est le mot de passe que l'utilisateur admin utilisera pour se connecter à Poweradmin plus tard) :

À la page suivante, remplissez les détails pour l'utilisateur MySQL power_admin que nous avons créé au chapitre 3. Remplissez également les deux serveurs de noms par défaut qui seront utilisés dans vos zones à moins que vous ne fournissiez des serveurs de noms différents lorsque vous créez une zone (typiquement, ce sont les noms du système actuel et du serveur esclave (pour lequel vous pouvez configurer la réplication MySQL, voir mes notes préliminaires au chapitre 1)) :

À l'écran suivant, l'installateur vous demande d'exécuter une requête MySQL. Nous n'avons pas besoin de le faire car nous avons déjà fait quelque chose de similaire au chapitre 3 (les deux GRANT déclarations) donc nous sommes prêts. Cliquez sur Passer à l'étape 6 :

Cliquez sur Passer à l'étape 7 : ![](/files/477ce083-3b1b-484d-b278-bbb687471d1f.png) L'installation est maintenant terminée... ![](/files/7e99ac27-89d2-41e0-be3f-597ce25af296.png) ... mais pour des raisons de sécurité, nous devons supprimer le répertoire d'installation :

rm -fr /var/www/poweradmin/install/


Maintenant, vous pouvez aller sur http://server1.example.com/poweradmin ou http://192.168.0.100/poweradmin et vous connecter avec le nom d'utilisateur admin et le mot de passe que vous avez créé lors de l'installation :

![](/files/187028cf-3e53-4d47-8327-2d7177b53329.png)

Voici à quoi ressemble l'interface web de Poweradmin :

![](/files/9e2931fb-0f8d-4d89-a82e-1af59cad4078.png)

Pour créer une zone, allez à Ajouter une zone maître et remplissez le nom de domaine (par exemple, example.com). Vous pouvez déjà remplir les adresses IP pour l'enregistrement A www ("serveur web") et l'enregistrement MX ("serveur mail") pour cette zone. Si vous laissez la case Créer une zone sans appliquer le modèle d'enregistrements décochée, Poweradmin créera automatiquement quelques enregistrements NS, A (par exemple, www) et MX pour cette zone :

![](/files/e0fc75f0-c517-430c-979a-deb8d805a366.png)

Allez ensuite à Liste des zones. Vous devriez maintenant voir la nouvelle zone là-bas, et elle a déjà huit enregistrements. Cliquez sur l'icône d'édition pour voir ces huit enregistrements :

![](/files/cb4f069e-b061-4b46-9943-d22394a9dd8d.png)

Ce sont les enregistrements qui sont créés automatiquement à moins que vous ne cochiez la case Créer une zone sans appliquer le modèle d'enregistrements lorsque vous créez une zone. Vous pouvez maintenant les éditer ou ajouter et supprimer des enregistrements :

![](/files/17cd6418-5205-46a2-abf5-380569ec004e.png)

Bien sûr, vous pouvez également créer tous les enregistrements un par un manuellement - il suffit de laisser les champs d'adresse IP vides et de cocher la case Créer une zone sans appliquer le modèle d'enregistrements sur la page Ajouter une zone maître :

![](/files/bcb04e27-2c8e-46cb-86f7-14fd60541a94.png)

Sur la page Liste des zones, vous verrez que la nouvelle zone n'a qu'un seul enregistrement (l'enregistrement SOA). Cliquez sur l'icône d'édition...

![](/files/6362e931-6844-492c-a3c7-2b4cf235195d.png)

... puis sur Ajouter un enregistrement pour ajouter d'autres enregistrements, ...

![](/files/2ba33f58-7b75-48ce-ac27-ae921e6568a0.png)

..., par exemple des enregistrements NS...

![](/files/3e97957a-7505-4c69-b485-57bdd09f47b9.png)

... et des enregistrements A (par exemple, pour mydomain.com (laissez le champ Nom vide !) et www.mydomain.com)...

![](/files/5d60687b-78eb-48a3-9421-af01ea0aba7f.png)

![](/files/d857e828-1f3e-4ebc-8a2d-277243545810.png)

... et des enregistrements MX :

![](/files/9f8c0537-fa9b-4c40-826a-3fdb8683eb29.png)

Pour créer des enregistrements PTR, allez à la page Ajouter une zone maître et créez une zone appelée in-addr.arpa (laissez les champs d'adresse IP vides et cochez la case Créer une zone sans appliquer le modèle d'enregistrements) :

![](/files/47d461ae-19da-4b1f-ab23-042805b3d065.png)

Pour créer un enregistrement PTR qui pointe de l'IP 1.2.3.4 vers server1.example.com, créez un enregistrement sous Liste des zones et remplissez 4.3.2.1 dans le champ Nom (c'est l'IP dans l'ordre inverse) et server1.example.com dans le champ Contenu :

![](/files/bd59392f-1137-4155-9471-fcb51cc6470f.png)

Après avoir créé vos enregistrements, vous pouvez les vérifier avec la commande dig (voir

man dig


pour plus de détails), par exemple comme suit :

dig @localhost mx example.com

server1:~# dig @localhost mx example.com
; <> DiG 9.3.4 <> @localhost mx example.com
; (1 serveur trouvé)
;; options globales : printcmd
;; A reçu une réponse :
;; ->>HEADER<<- opcode : QUERY, statut : NOERROR, id : 37939
;; flags : qr aa rd ; QUERY : 1, ANSWER : 1, AUTHORITY : 0, ADDITIONAL : 1

;; SECTION QUESTION :
;example.com. IN MX

;; SECTION RÉPONSE :
example.com. 86400 IN MX 10 mail.example.com.

;; SECTION ADDITIONNELLE :
mail.example.com. 86400 IN A 1.2.3.4

;; Temps de requête : 9 msec
;; SERVEUR : 127.0.0.1#53(127.0.0.1)
;; QUAND : Lun Jan 12 19:56:46 2009
;; TAILLE MSG reçu : 66

server1:~#


### 5 Liens

- PowerDNS : http://www.powerdns.com/
- Documentation PowerDNS : http://downloads.powerdns.com/documentation/html/index.html
- Poweradmin : http://www.poweradmin.org/
- Debian : http://www.debian.org/
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.