DNS Verwaltung · 9 min read · Oct 01, 2025

So installieren Sie PowerDNS und Poweradmin auf CentOS 7

PowerDNS (pdns) ist ein Open-Source-DNS-Server, der in C++ geschrieben und unter der GPL-Lizenz veröffentlicht wurde. Er ist zu einer guten Alternative zum traditionellen DNS-Server Bind geworden, der mit besserer Leistung und niedrigeren Speicheranforderungen entwickelt wurde. PowerDNS bietet zwei Produkte an: den autoritativen Server und den Rekursor. Der PowerDNS-Autoritative Server kann über verschiedene Backends konfiguriert werden, einschließlich der einfachen Bind-Zonendateien, RDBMS wie MySQL, PostgreSQL, SQLite3 oder LDAP.

In diesem Tutorial zeige ich Ihnen, wie Sie einen PowerDNS-Autoritativen Server mit dem MariaDB-Datenbankserver als Backend installieren und konfigurieren und Poweradmin für eine einfache DNS-Verwaltung verwenden.

Voraussetzungen

  • CentOS 7-Server
  • Root-Rechte

Was wir tun werden:

  1. EPEL- und Remi-Repositorys installieren
  2. MariaDB installieren und konfigurieren
  3. PowerDNS installieren
  4. Poweradmin installieren
  5. Poweradmin-Nachinstallation
  6. Beispielzone erstellen

Schritt 1 - EPEL- und Remi-Repositorys installieren

Zunächst müssen wir die Abhängigkeiten für die PowerDNS-Installation installieren. Wir werden das EPEL-Repository und das REMI für die Installation von PHP 7.2 installieren.

Installieren Sie das EPEL- und PHP-Remi-Repository mit den folgenden Befehlen.

yum -y install epel-release  
 yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Sobald diese Repositorys zum System hinzugefügt wurden, installieren Sie das Paket ‘yum-utils’.

yum -y install yum-utils

Und aktivieren Sie das PHP 7.2 Remi-Repository mit dem folgenden Befehl.

yum-config-manager --enable remi-php72

Schritt 2 - MariaDB installieren und konfigurieren

Der PowerDNS-Autoritative Server unterstützt verschiedene Backends, einschließlich des MySQL/MariaDB-Datenbankservers. Der Begriff ‘Backend’ ist ein Datenspeicher, den der Server konsultiert und der DNS-Einträge (und einige Metadaten) enthält. Für diesen Leitfaden verwenden wir MariaDB als Backend.

Installieren Sie MariaDB mit dem folgenden yum-Befehl.

yum -y install mariadb mariadb-server

Sobald die Installation abgeschlossen ist, starten Sie den MariaDB-Dienst und fügen Sie ihn zum Startzeitpunkt hinzu.

systemctl start mariadb  
 systemctl enable mariadb

Als Nächstes werden wir das Root-Passwort für MariaDB mit dem interaktiven Tool ‘mysql_secure_installation’ konfigurieren.

Führen Sie den folgenden Befehl aus.

mysql_secure_installation

Und Sie werden aufgefordert, das Root-Passwort des Datenbankservers zu konfigurieren. Geben Sie ‘Y’ ein, um das Root-Passwort festzulegen, und geben Sie ein starkes Passwort ein.

Set root password? [Y/n] Y  
New password:   
Re-enter new password: 

Für die anderen geben Sie einfach ‘Y’ für Ja ein.

Remove anonymous users? [Y/n] Y  
Disallow root login remotely? [Y/n] Y  
Remove test database and access to it? [Y/n] Y  
Reload privilege tables now? [Y/n] Y

Infolgedessen haben Sie den MariaDB-Datenbankserver installiert und das Root-Passwort zur Authentifizierung eingerichtet.

Als Nächstes werden wir eine neue Datenbank und einen Benutzer für die PowerDNS-Installation erstellen. Melden Sie sich mit dem Benutzer root und Ihrem Passwort an der MySQL-Shell an.

Führen Sie den MySQL-Befehl unten aus.

mysql -u root -p  
 PASSWORD

Erstellen Sie jetzt eine neue Datenbank mit dem Namen ‘powerdns’ und gewähren Sie einem neuen Benutzer namens ‘pdns’ mit dem Passwort ‘pdnspassword2018’ alle Datenbankberechtigungen.

create database powerdns;  
 grant all privileges on powerdns.* to pdns@localhost identified by 'pdnspassword2018';  
 flush privileges;

Installieren Sie die PowerDNS-Datenbank

Danach erstellen Sie die Tabellenstrukturen für die PowerDNS-Datenbank, indem Sie die folgenden MySQL-Abfragen ausführen.

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)  
 ) Engine=InnoDB;  
   
 CREATE UNIQUE INDEX name_index ON domains(name);  
   
   
 CREATE TABLE records (  
   id                    BIGINT AUTO_INCREMENT,  
   domain_id             INT DEFAULT NULL,  
   name                  VARCHAR(255) DEFAULT NULL,  
   type                  VARCHAR(10) DEFAULT NULL,  
   content               VARCHAR(64000) DEFAULT NULL,  
   ttl                   INT DEFAULT NULL,  
   prio                  INT DEFAULT NULL,  
   change_date           INT DEFAULT NULL,  
   disabled              TINYINT(1) DEFAULT 0,  
   ordername             VARCHAR(255) BINARY DEFAULT NULL,  
   auth                  TINYINT(1) DEFAULT 1,  
   PRIMARY KEY (id)  
 ) Engine=InnoDB;  
   
 CREATE INDEX nametype_index ON records(name,type);  
 CREATE INDEX domain_id ON records(domain_id);  
 CREATE INDEX recordorder ON records (domain_id, ordername);  
   
   
 CREATE TABLE supermasters (  
   ip                    VARCHAR(64) NOT NULL,  
   nameserver            VARCHAR(255) NOT NULL,  
   account               VARCHAR(40) NOT NULL,  
   PRIMARY KEY (ip, nameserver)  
 ) Engine=InnoDB;  
   
   
 CREATE TABLE comments (  
   id                    INT AUTO_INCREMENT,  
   domain_id             INT NOT NULL,  
   name                  VARCHAR(255) NOT NULL,  
   type                  VARCHAR(10) NOT NULL,  
   modified_at           INT NOT NULL,  
   account               VARCHAR(40) NOT NULL,  
   comment               VARCHAR(64000) NOT NULL,  
   PRIMARY KEY (id)  
 ) Engine=InnoDB;  
   
 CREATE INDEX comments_domain_id_idx ON comments (domain_id);  
 CREATE INDEX comments_name_type_idx ON comments (name, type);  
 CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);  
   
   
 CREATE TABLE domainmetadata (  
   id                    INT AUTO_INCREMENT,  
   domain_id             INT NOT NULL,  
   kind                  VARCHAR(32),  
   content               TEXT,  
   PRIMARY KEY (id)  
 ) Engine=InnoDB;  
   
 CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);  
   
   
 CREATE TABLE cryptokeys (  
   id                    INT AUTO_INCREMENT,  
   domain_id             INT NOT NULL,  
   flags                 INT NOT NULL,  
   active                BOOL,  
   content               TEXT,  
   PRIMARY KEY(id)  
 ) Engine=InnoDB;  
   
 CREATE INDEX domainidindex ON cryptokeys(domain_id);  
   
   
 CREATE TABLE tsigkeys (  
   id                    INT AUTO_INCREMENT,  
   name                  VARCHAR(255),  
   algorithm             VARCHAR(50),  
   secret                VARCHAR(255),  
   PRIMARY KEY (id)  
 ) Engine=InnoDB;  
   
 CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);  
   
 quit;

Infolgedessen wurde die MySQL/MariaDB-Datenbank und ein Benutzer für die PowerDNS-Installation erstellt.

Schritt 3 - PowerDNS installieren

Installieren Sie PowerDNS und alle benötigten Pakete mit dem folgenden Befehl.

yum -y install pdns pdns-backend-mysql bind-utils

Nachdem die PowerDNS-Pakete installiert sind, wechseln Sie in das Verzeichnis ‘/etc/pdns/‘ und bearbeiten Sie die Konfigurationsdatei ‘pdns.conf’ mit dem vim-Editor.

cd /etc/pdns/  
 vim pdns.conf

Standardmäßig verwendet PowerDNS ‘bind’ als Backend. Geben Sie also ein Kommentar ‘#’ vor der Konfiguration ‘launch=bind’ ein und fügen Sie die MySQL-Backend-Konfiguration wie unten gezeigt ein.

#launch=bind  
  
launch=gmysql  
gmysql-host=localhost  
gmysql-user=pdns  
gmysql-password=pdnspassword2018  
gmysql-dbname=powerdns

Speichern und schließen.

Installieren Sie PowerDNS

Jetzt starten Sie den pdns-Dienst und fügen ihn zum Startzeitpunkt hinzu.

systemctl start pdns  
 systemctl enable pdns

Danach fügen Sie den DNS-Dienst zur Firewall hinzu.

firewall-cmd --add-service=dns --permanent  
 firewall-cmd --reload

Firewall konfigurieren

Und der PowerDNS-Dienst ist aktiv und läuft, überprüfen Sie dies mit dem folgenden Befehl.

netstat -tap | grep pdns  
 netstat -tulpn | grep 53  
 dig @10.9.9.10

Infolgedessen erhalten Sie, dass der pdns-Dienst aktiv und auf Port 53 läuft und eine Antwort vom PowerDNS-Server erhalten hat.

Überprüfen Sie den PowerDNS-Status

Schritt 4 - Poweradmin installieren

In diesem Schritt werden wir die DNS-Verwaltung für PowerDNS namens ‘Poweradmin’ installieren. Es handelt sich um eine webbasierte Anwendung, die auf PHP basiert, daher müssen wir PHP und einen Webserver installieren, um die Anwendung auszuführen.

Installieren Sie einen httpd-Webserver und PHP-Pakete mit dem folgenden Befehl.

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

Nach der Installation müssen wir zusätzliche PHP-Pear-Pakete installieren. Führen Sie den folgenden Befehl aus.

yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli

Sobald die Installation von httpd und PHP abgeschlossen ist, starten Sie den httpd-Dienst und fügen Sie ihn zum Startzeitpunkt hinzu.

systemctl start httpd  
 systemctl enable httpd

Wechseln Sie als Nächstes in das Verzeichnis ‘/var/www/html’ und laden Sie den Quellcode von Poweradmin herunter.

cd /var/www/html/  
 wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

Entpacken Sie die komprimierte Datei von Poweradmin und benennen Sie sie um.

tar xvf poweradmin-2.1.7.tgz  
 mv poweradmin-2.1.7/ poweradmin/

Danach fügen Sie die HTTP- und HTTPS-Protokolle zur Firewall hinzu.

firewall-cmd --add-service={http,https} --permanent  
 firewall-cmd --reload

Und wir sind bereit für die Poweradmin-Nachinstallation.

Schritt 5 - Poweradmin-Nachinstallation

Öffnen Sie Ihren Webbrowser und geben Sie die IP-Adresse des Servers plus den /poweradmin/install/-Pfad-URL für die Installation ein. Meine ist:

http://10.9.9.10/poweradmin/install/

Wählen Sie Ihre bevorzugte Sprache und klicken Sie auf die Schaltfläche ‘Gehe zu Schritt 2’.

Klicken Sie jetzt einfach auf die Schaltfläche ‘Gehe zu Schritt 3’.

Und Sie werden zur Datenbankkonfiguration angezeigt. Geben Sie die PowerDNS-Datenbankdetails ein, die wir erstellt haben, und das Admin-Passwort für PowerDNS.

PowerAdmin-Datenbankeinrichtung

Klicken Sie auf die Schaltfläche ‘Gehe zu Schritt 4’.

Danach müssen Sie einen neuen Benutzer mit eingeschränkten Rechten erstellen. Geben Sie die Details wie folgt ein und ändern Sie den Benutzer, das Passwort usw. nach Ihren Wünschen.

Klicken Sie jetzt auf die Schaltfläche ‘Gehe zu Schritt 5’.

Und Sie werden die folgende Seite angezeigt bekommen.

Öffnen Sie erneut Ihr Terminal-Server, melden Sie sich mit dem Root-Benutzer und Passwort an. Führen Sie dann die MySQL-Abfragen wie auf der Seite aus.

mysql -u root -p  
 PASSWORD  
   
 GRANT SELECT, INSERT, UPDATE, DELETE  
 ON powerdns.*  
 TO 'hakase'@'localhost'  
 IDENTIFIED BY 'hakase-labs123';

Mysql-Befehle

Jetzt zurück zum Webbrowser und klicken Sie auf die Schaltfläche ‘Gehe zu Schritt 6’.

Und Sie werden die folgende Seite angezeigt bekommen.

Installationsschritt 6

Der Installer konnte die neue Konfiguration ‘../inc/config.inc.php’ nicht erstellen. Daher müssen wir sie manuell erstellen.

Zurück zum Terminal-Server, wechseln Sie in das Verzeichnis ‘/var/www/html/poweradmin’ und erstellen Sie eine neue Konfigurationsdatei ‘inc/config.inc.php’.

cd /var/www/html/poweradmin  
 vim inc/config.inc.php

Jetzt fügen Sie das PHP-Skript von der Seite ein.

Speichern und schließen, dann zurück zum Browser und klicken Sie auf die Schaltfläche.

Datenbankkonfigurationsdatei

Und die Installation ist abgeschlossen.

Optional:

Wenn Sie Unterstützung für die von anderen dynamischen Anbietern verwendeten URLs wünschen, kopieren Sie die htaccess-Datei.

cd /var/www/html/poweradmin  
 cp install/htaccess.dist .htaccess

Danach müssen Sie das Verzeichnis ‘install’ entfernen.

rm -rf /var/www/html/poweradmin/install

Gehen Sie zurück zu Ihrem Webbrowser und melden Sie sich mit der URL wie unten an.

http://10.9.9.10/poweradmin/

Melden Sie sich mit dem Standardbenutzer ‘admin’ und dem Passwort an, klicken Sie auf die Schaltfläche ‘Gehe’.

Und als Ergebnis wird Ihnen das Poweradmin-Dashboard angezeigt und die Installation ist abgeschlossen.

Schritt 6 - Beispielzone und DNS-Einträge erstellen

In diesem Schritt werden wir die PowerDNS- und Poweradmin-Installation testen, indem wir eine neue DNS-Zone für eine Domain namens ‘emma.io’ erstellen.

Klicken Sie im Poweradmin-Dashboard auf das Menü ‘Masterzone hinzufügen’.

Setzen Sie den Zonenname mit dem Domainnamen ‘emaa.io’ und klicken Sie auf die Schaltfläche ‘Zone hinzufügen’.

Klicken Sie auf das Menü ‘Zonen auflisten’, um alle verfügbaren Zonen zu erhalten. Und klicken Sie auf die Schaltfläche ‘Bearbeiten’ für die Zone ‘emma.io’.

Klicken Sie auf das Menü ‘Zonen auflisten’, um alle verfügbaren Zonen zu erhalten. Und klicken Sie auf die Schaltfläche ‘Bearbeiten’ für die Zone ‘emma.io’.

Zonen auflisten

Jetzt klicken Sie auf die Schaltfläche ‘Eintrag hinzufügen’ und wir haben erfolgreich die DNS-Zone und den DNS-Eintrag für die Domain ‘emma.io’ hinzugefügt.

Als Nächstes werden wir die Domain ‘emma.io’ mit einem ‘dig’-DNS-Dienstprogramm-Befehl testen.

Überprüfen Sie den Nameserver oder ns-Eintrag der Domain ‘emma.io’.

dig NS emma.io @10.9.9.10

Überprüfen Sie die Zone mit dem dig-Befehl

Überprüfen Sie den A-DNS-Eintrag der Domain ‘emma.io’.

dig A emma.io @10.9.9.10

Ergebnis des dig-Befehls

Und Sie werden angezeigt, dass die Domain ‘emma.io’ einen Nameserver von unserem DNS-Server ‘ns1.hakase-labs.io’ hat und der ‘A’-Eintrag dieses Domainnamens mit unserer Konfiguration oben mit der Server-IP-Adresse ‘10.9.9.11’ übereinstimmt.

Schließlich wurde die Installation und Konfiguration von PowerDNS und Poweradmin auf CentOS 7 erfolgreich abgeschlossen.

Referenz

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.