PowerDNS Installation · 7 min read · Oct 01, 2025

Installation von PowerDNS (mit MySQL-Backend) und Poweradmin auf Debian Lenny

Installation von PowerDNS (mit MySQL-Backend) und Poweradmin auf Debian Lenny

Version 1.0
Autor: Falko Timme
Folgen Sie mir auf Twitter

Dieser Artikel zeigt, wie Sie den PowerDNS-Namensserver (mit MySQL-Backend) und das Poweradmin-Kontrollpanel für PowerDNS auf einem Debian Lenny-System installieren können. PowerDNS ist ein leistungsstarker, autoritativer Namensserver - in der hier beschriebenen Konfiguration liest er die DNS-Einträge aus einer MySQL-Datenbank (ähnlich wie MyDNS), obwohl auch andere Backends wie PostgreSQL unterstützt werden. Poweradmin ist ein webbasiertes Kontrollpanel für PowerDNS.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Beispiel verwende ich einen Debian Lenny-Host mit dem Hostnamen server1.example.com und der IP-Adresse 192.168.0.100, eingerichtet gemäß den ersten sechs Kapiteln dieses Tutorials: Der perfekte Server - Debian Lenny (Debian 5.0) [ISPConfig 2].

Ich werde in diesem Beispiel nur einen PowerDNS-Server einrichten (einen Master); das Hinzufügen von PowerDNS-Slaves kann einfach durch die Verwendung von MySQL-Datenbankreplikation vom Master zu den Slaves erreicht werden, daher sind keine Zonenübertragungen erforderlich (das ist wiederum ähnlich wie bei MyDNS). Die MySQL-Datenbankreplikation kann gemäß diesem Tutorial eingerichtet werden: So richten Sie die Datenbankreplikation in MySQL ein (PowerDNS unterstützt auch native Zonenübertragungen (für Szenarien, in denen Sie keine MySQL-Replikation verwenden können) - siehe http://downloads.powerdns.com/documentation/html/replication.html).

2 MySQL installieren

Um MySQL zu installieren, führen wir aus

aptitude install mysql-server mysql-client

Sie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben - dieses Passwort gilt für den Benutzer root@localhost sowie [email protected], sodass wir später kein MySQL-Root-Passwort manuell angeben müssen:

Neues Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL “root”-Benutzer: <– yourrootsqlpassword

Wir möchten, dass MySQL auf allen Schnittstellen lauscht (das ist wichtig für die MySQL-Datenbankreplikation!), nicht nur auf localhost, daher bearbeiten wir /etc/mysql/my.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus:

vi /etc/mysql/my.cnf

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

Dann starten wir MySQL neu:

/etc/init.d/mysql restart

Überprüfen Sie nun, ob das Networking aktiviert ist. Führen Sie aus

netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

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

3 PowerDNS installieren

Um PowerDNS zu installieren, führen wir aus

aptitude install pdns-server pdns-backend-mysql

Die PowerDNS-Konfiguration befindet sich im Verzeichnis /etc/powerdns - darauf komme ich gleich zurück.

Jetzt verbinden wir uns mit MySQL:

mysql -u root -p

Geben Sie Ihr MySQL-Root-Passwort ein, und Sie sollten sich in der MySQL-Shell befinden. In der MySQL-Shell erstellen wir eine Datenbank für PowerDNS:

CREATE DATABASE powerdns;

Als nächstes erstellen wir einen Datenbankbenutzer (powerdns) für 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;

(Ersetzen Sie power_admin_password durch ein Passwort Ihrer Wahl.)

Jetzt erstellen wir die Tabellen, die PowerDNS benötigt…

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  
);

… und schließlich die MySQL-Shell verlassen:

quit;

Jetzt müssen wir PowerDNS konfigurieren, damit es das MySQL-Backend verwendet:

vi /etc/powerdns/pdns.conf

Fügen Sie die Zeile launch=gmysql zu pdns.conf hinzu:

| [...] ################################# # launch Welche Backends zu starten sind und in welcher Reihenfolge sie abgefragt werden # # launch= launch=gmysql [...] |

Öffnen Sie dann /etc/powerdns/pdns.d/pdns.local und lassen Sie es wie folgt aussehen:

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

| # Hier kommen die lokalen Änderungen, die der Benutzer vorgenommen hat, wie die Konfiguration der # der verschiedenen Backends, die existieren. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Dann starten Sie pdns neu:

/etc/init.d/pdns restart

Das war’s, PowerDNS ist jetzt bereit zur Verwendung. Um mehr darüber zu erfahren, lesen Sie bitte die Dokumentation: http://downloads.powerdns.com/documentation/html/index.html

4 Poweradmin installieren

Jetzt installieren wir Poweradmin, ein webbasiertes Kontrollpanel für PowerDNS. Poweradmin ist in PHP geschrieben, daher müssen wir einen Webserver installieren (ich verwende Apache2 in diesem Beispiel) und 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 benötigt auch die folgenden zwei PEAR-Pakete:

pear install DB  
pear install pear/MDB2#mysql

Jetzt sind alle Voraussetzungen für Poweradmin installiert, und wir können mit der Installation von Poweradmin beginnen (ich werde es in einem Unterverzeichnis von /var/www installieren - /var/www ist das Dokumentenstammverzeichnis der Standard-Website von Apache auf Debian; wenn Sie einen vhost mit einem anderen Dokumentenstamm erstellt haben, passen Sie die Pfade an).

Gehen Sie zu https://www.poweradmin.org/trac/wiki/GettingPoweradmin und laden Sie das neueste Poweradmin-Paket herunter, z.B. wie folgt:

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

Installieren Sie es dann im Verzeichnis /var/www/poweradmin wie folgt:

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/

Jetzt öffnen Sie einen Browser und starten den webbasierten Poweradmin-Installer (http://server1.example.com/poweradmin/install/index.php oder http://192.168.0.100/poweradmin/install/index.php).

Wählen Sie Ihre Sprache (Englisch oder Niederländisch):

Klicken Sie auf die Schaltfläche Gehe zu Schritt 3, um fortzufahren:

Jetzt füllen Sie Ihre Datenbankdetails aus. Es ist wichtig, dass Sie die Details für den MySQL-Root-Benutzer ausfüllen, nicht den PowerDNS-MySQL-Benutzer, den wir zuvor erstellt haben! Geben Sie auch ein Passwort für den admin-Benutzer für die Poweradmin-Weboberfläche an (das ist das Passwort, das der Benutzer admin später verwenden wird, um sich bei Poweradmin anzumelden):

Auf der nächsten Seite gibt der Installer an, dass Sie eine MySQL-Abfrage ausführen sollen. Das müssen wir nicht tun, da wir etwas Ähnliches bereits in Kapitel 3 gemacht haben (die beiden GRANT-Anweisungen), also sind wir bereit. Klicken Sie auf Gehe zu Schritt 6:

Klicken Sie auf Gehe zu Schritt 7: ![](/files/477ce083-3b1b-484d-b278-bbb687471d1f.png) Die Installation ist jetzt abgeschlossen... ![](/files/7e99ac27-89d2-41e0-be3f-597ce25af296.png) ... aber aus Sicherheitsgründen müssen wir das Installationsverzeichnis löschen:

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


Jetzt können Sie zu http://server1.example.com/poweradmin oder http://192.168.0.100/poweradmin gehen und sich mit dem Benutzernamen admin und dem Passwort, das Sie während der Installation erstellt haben, anmelden:

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

So sieht die Poweradmin-Weboberfläche aus:

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

Um eine Zone zu erstellen, gehen Sie zu Masterzone hinzufügen und füllen Sie den Domainnamen aus (z.B. example.com). Sie können bereits die IP-Adressen für den www A-Eintrag ("Webserver") und den MX-Eintrag ("Mailserver") für diese Zone ausfüllen. Wenn Sie das Kontrollkästchen Zone erstellen, ohne das Template für Einträge anzuwenden, nicht aktivieren, erstellt Poweradmin automatisch einige NS-, A- (z.B. www) und MX-Einträge für diese Zone:

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

Gehen Sie danach zu Zonen auflisten. Sie sollten jetzt die neue Zone dort sehen, und sie hat bereits acht Einträge. Klicken Sie auf das Bearbeitungssymbol, um diese acht Einträge zu sehen:

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

Dies sind die Einträge, die automatisch erstellt werden, es sei denn, Sie aktivieren das Kontrollkästchen Zone erstellen, ohne das Template für Einträge anzuwenden, wenn Sie eine Zone erstellen. Sie können sie jetzt bearbeiten oder Einträge hinzufügen und löschen:

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

Natürlich können Sie auch alle Einträge manuell einzeln erstellen - lassen Sie einfach die IP-Adressfelder leer und aktivieren Sie das Kontrollkästchen Zone erstellen, ohne das Template für Einträge anzuwenden, auf der Seite Masterzone hinzufügen:

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

Auf der Seite Zonen auflisten sehen Sie, dass die neue Zone nur einen Eintrag hat (den SOA-Eintrag). Klicken Sie auf das Bearbeitungssymbol...

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

... und dann auf Eintrag hinzufügen, um weitere Einträge hinzuzufügen,...

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

..., z.B. NS-Einträge...

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

... und A-Einträge (z.B. für mydomain.com (lassen Sie das Namensfeld leer!) und www.mydomain.com)...

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

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

... und MX-Einträge:

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

Um PTR-Einträge zu erstellen, gehen Sie zur Seite Masterzone hinzufügen und erstellen Sie eine Zone namens in-addr.arpa (lassen Sie die IP-Adressfelder leer und aktivieren Sie das Kontrollkästchen Zone erstellen, ohne das Template für Einträge anzuwenden):

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

Um einen PTR-Eintrag zu erstellen, der von der IP 1.2.3.4 auf server1.example.com zeigt, erstellen Sie einen Eintrag unter Zonen auflisten und füllen Sie 4.3.2.1 im Namensfeld aus (das ist die IP in umgekehrter Reihenfolge) und server1.example.com im Inhaltsfeld:

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

Nachdem Sie Ihre Einträge erstellt haben, können Sie sie mit dem Befehl dig überprüfen (siehe

man dig


für weitere Details), z.B. wie folgt:

dig @localhost mx example.com

server1:~# dig @localhost mx example.com

; <> DiG 9.3.4 <> @localhost mx example.com
; (1 server gefunden)
;; globale Optionen: printcmd
;; Antwort erhalten:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; FRAGESEKTION:
;example.com. IN MX

;; ANTWORTSEKTION:
example.com. 86400 IN MX 10 mail.example.com.

;; ZUSÄTZLICHE SEKTION:
mail.example.com. 86400 IN A 1.2.3.4

;; Abfragezeit: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WANN: Mon Jan 12 19:56:46 2009
;; MSG SIZE empfangen: 66

server1:~#


### 5 Links

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

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.