PowerDNS Installation · 5 min read · Oct 01, 2025
Installation von PowerDNS (mit MySQL-Backend) und Poweradmin auf Debian Squeeze
Installation von PowerDNS (mit MySQL-Backend) und Poweradmin auf Debian Squeeze
Version 1.0
Autor: Falko Timme
Folge mir auf Twitter
Dieser Artikel zeigt, wie Sie den PowerDNS-Namensserver (mit MySQL-Backend) und das Poweradmin-Kontrollpanel für PowerDNS auf einem Debian Squeeze-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 Squeeze-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 Squeeze (Debian 6.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 Zonentransfers erforderlich (dies ist wiederum ähnlich wie MyDNS). Die MySQL-Datenbankreplikation kann gemäß diesem Tutorial eingerichtet werden: So richten Sie die Datenbankreplikation in MySQL ein (PowerDNS unterstützt auch native Zonentransfers (für Szenarien, in denen Sie keine MySQL-Replikation verwenden können) - siehe http://downloads.powerdns.com/documentation/html/replication.html).
2 Installation von MySQL
Um MySQL zu installieren, führen wir aus
apt-get install mysql-server mysql-clientSie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben - dieses Passwort ist sowohl für den Benutzer root@localhost als auch für [email protected] gültig, 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 hört (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 Netzwerk aktiviert ist. Führen Sie aus
netstat -tap | grep mysqlDie Ausgabe sollte wie folgt aussehen:
server1:~# netstat -tap | grep mysql
tcp 0 0 :mysql :* LISTEN 2453/mysqld
server1:~#
3 Installation von PowerDNS
Um PowerDNS zu installieren, führen wir aus
apt-get install pdns-server pdns-backend-mysqlDie PowerDNS-Konfiguration befindet sich im Verzeichnis /etc/powerdns - darauf komme ich gleich zurück.
Jetzt verbinden wir uns mit MySQL:
mysql -u root -pGeben 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 von PowerDNS benötigten Tabellen…
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.confFügen Sie die Zeile launch=gmysql zu pdns.conf hinzu:
| [...] ################################# # launch Welche Backends gestartet werden sollen 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 # 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 restartDas 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 Installation von Poweradmin
Jetzt installieren wir Poweradmin, ein webbasiertes Kontrollpanel für PowerDNS. Poweradmin ist in PHP geschrieben, daher müssen wir einen Webserver installieren (ich verwende in diesem Beispiel Apache2) und PHP:
apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-ming php5-mysql php5-xmlrpc gettext php-db php-mdb2 php-mdb2-driver-mysqlStarten Sie Apache danach neu:
/etc/init.d/apache2 restart 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 Standardwebsite von Apache auf Debian; wenn Sie einen vhost mit einem anderen Dokumentenstamm erstellt haben, passen Sie bitte 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.5.tgz
Installieren Sie es dann im Verzeichnis /var/www/poweradmin wie folgt:
tar xvfz poweradmin-2.1.5.tgz
mv poweradmin-2.1.5 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/
Öffnen Sie jetzt einen Browser und starten Sie 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:

Geben Sie nun Ihre Datenbankdetails ein. Es ist wichtig, dass Sie die Details für den MySQL-Root-Benutzer eingeben, nicht den MySQL-Benutzer powerdns, 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 geben Sie die Details für den MySQL-Benutzer power_admin ein, den wir in Kapitel 3 erstellt haben. Geben Sie auch die beiden Standardnameserver an, die in Ihren Zonen verwendet werden, es sei denn, Sie geben andere Nameserver an, wenn Sie eine Zone erstellen (typischerweise sind dies die Namen des aktuellen Systems und des Slave-Servers (für den Sie MySQL-Replikation einrichten können, siehe meine Vorbemerkungen in Kapitel 1)):

Auf dem nächsten Bildschirm fordert der Installer Sie auf, eine MySQL-Abfrage auszuführen. 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:

Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.