PowerDNS ist ein kostenloser und autoritativer Open-Source-Nameserver. Es ist in C++ geschrieben und läuft auf den Betriebssystemen Unix, Linux und macOS. Es verwendet MySQL, MariaDB, PostgreSQL und Oracle, um Zonendateien und Datensätze zu speichern.
PowerDNS Admin ist ein webbasiertes Tool zur Verwaltung von PowerDNS. Sie können DNS-Zonen mit dem Webbrowser erstellen und verwalten. Es kommt mit einer Vielzahl von Funktionen. Einige davon sind unten aufgeführt:
- IPv4- und IPv6-Unterstützung
- Statusseite mit nützlichen Informationen
- Reverse PTR-Einträge automatisch erstellen/aktualisieren
- Unterstützung für Massenerstellung von Domains
- Unterstützung für Domänenvorlagen
- DNSsec-Unterstützung
- Unterstützt Local DB, SAML, LDAP, Active Directory-Benutzerauthentifizierung
In diesem Tutorial zeigen wir Ihnen, wie Sie PowerDNS und PowerDNS Admin auf einem Ubuntu 20.04-Server installieren.
Voraussetzungen
- Ein Server mit Ubuntu 20.04.
- Ein gültiger Domainname, auf den Ihre Server-IP verweist.
- Ein Root-Passwort wird auf dem Server konfiguriert.
MariaDB-Server installieren und konfigurieren
Bevor Sie beginnen, müssen Sie den MariaDB-Datenbankserver in Ihrem System installieren. Standardmäßig ist die neueste Version von MariaDB nicht im Standard-Repository von Ubuntu 20.04 verfügbar. Sie müssen also das MariaDB-Repository zu Ihrem System hinzufügen.
Installieren Sie zuerst die erforderlichen Pakete mit dem folgenden Befehl:
apt-get install software-properties-common gnupg2 -y
Sobald alle Pakete installiert sind, fügen Sie den MariaDB-Signaturschlüssel mit dem folgenden Befehl hinzu:
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Als nächstes fügen Sie das MariaDB-Repository mit dem folgenden Befehl hinzu:
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focus main'
Installieren Sie als Nächstes den MariaDB-Server, indem Sie den folgenden Befehl ausführen:
apt-get install mariadb-server -y
Nach der Installation müssen Sie eine Datenbank und einen Benutzer für PowerDNS erstellen.
Melden Sie sich zuerst mit dem folgenden Befehl bei MariaDB an:
mysql
Erstellen Sie nach der Anmeldung eine Datenbank und einen Benutzer mit dem folgenden Befehl:
MariaDB [(keine)]> erstellt Datenbank-PDNS;
MariaDB [(keine)]> gewährt alle auf pdns.* an [E-Mail-geschützt], identifiziert durch „Passwort“;
Leeren Sie als Nächstes die Berechtigungen und beenden Sie die MariaDB-Shell mit dem folgenden Befehl:
MariaDB [(none)]> Flush-Berechtigungen;
MariaDB [(none)]> exit;
PowerDNS installieren
Zuerst müssen Sie den systemd-aufgelösten Dienst von Ihrem System deaktivieren. Sie können es mit dem folgenden Befehl deaktivieren:
systemctl disable --now systemd-resolved
Entfernen Sie als Nächstes die Standarddatei resolv.conf und erstellen Sie eine neue Datei:
rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8"> /etc/resolv.conf
Installieren Sie als Nächstes den PowerDNS-Server mit dem folgenden Befehl:
apt-get install pdns-server pdns-backend-mysql -y
Sobald PowerDNS installiert ist, können Sie mit dem nächsten Schritt fortfahren.
PowerDNS konfigurieren
Zuerst müssen Sie das PowerDNS-Datenbankschema in die PowerDNS-Datenbank importieren. Sie können es mit dem folgenden Befehl importieren:
mysql -u pdnsadmin -p pdnsAls Nächstes müssen Sie die Verbindungsdetails der PowerDNS-Datenbank definieren. Sie können dies tun, indem Sie die Datei pdns.local.gmysql.conf:
bearbeitennano /etc/powerdns/pdns.d/pdns.local.gmysql.confÄndern Sie die folgenden Zeilen:
# MySQL-Konfiguration## Start gmysql backendlaunch+=gmysql# gmysql-Parametergmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-password=passwordgmysql-dnssec=yes# gmysql-socket=Speichern und schließen Sie die Datei und geben Sie dann der Datei pdns.local.gmysql.conf die richtige Berechtigung:
chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.confStoppen Sie als Nächstes den PowerDNS-Server und überprüfen Sie PowerDNS mit dem folgenden Befehl:
systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:
Nov 02 10:43:47 gmysql-Verbindung erfolgreich. Verbunden mit Datenbank 'pdns' auf '127.0.0.1'.Nov 02 10:43:47 gmysql Verbindung erfolgreich. Verbunden mit Datenbank 'pdns' auf '127.0.0.1'.Nov 02 10:43:47 gmysql Verbindung erfolgreich. Verbunden mit der Datenbank „pdns“ auf „127.0.0.1“.Als nächstes starten Sie den PowerDNS-Server mit dem folgenden Befehl:
systemctl start pdnsAn diesem Punkt wird PowerDNS gestartet und überwacht Port 53. Sie können dies mit dem folgenden Befehl überprüfen:
ss -alnp4 | grep pdnsSie sollten die folgende Ausgabe erhalten:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* Benutzer:(("pdns_server",pid=33140,fd=5)) tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* Benutzer:(("pdns_server",pid=33140,fd=7))Installieren Sie PowerDNS Admin
In diesem Abschnitt zeigen wir Ihnen, wie Sie PowerDNS Admin mit Nginx installieren.
Erforderliche Abhängigkeiten installieren
Installieren Sie zuerst alle Abhängigkeiten, die für den PowerDNS-Administrator erforderlich sind, mit dem folgenden Befehl:
apt-get install nginx python3-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3- Kolben -ySobald alle Abhängigkeiten installiert sind, fügen Sie das Node.js-Repository mit dem folgenden Befehl hinzu:
curl -sL https://deb.nodesource.com/setup_14.x | bash -Als nächstes installieren Sie Node.js mit dem folgenden Befehl:
apt-get install nodejs -yAls nächstes fügen Sie das Garn-Repository mit dem folgenden Befehl hinzu:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.listAktualisieren Sie als Nächstes das Repository und installieren Sie Yarn mit dem folgenden Befehl:
apt-get update -y
apt-get install thread -yAn dieser Stelle sind alle erforderlichen Abhängigkeiten installiert, Sie können nun mit dem nächsten Schritt fortfahren.
Laden Sie PowerDNS Admin herunter
Laden Sie als Nächstes die neueste Version von PowerDNS Admin aus dem Git-Repository in das Nginx-Stammverzeichnis herunter:
git-Klon https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdnsWechseln Sie als Nächstes in das heruntergeladene Verzeichnis und erstellen Sie mit dem folgenden Befehl eine virtuelle Python-Umgebung:
cd /var/www/html/pdns/
virtualenv -p python3-FlascheAls nächstes aktivieren Sie die virtuelle Umgebung und installieren alle Python-Abhängigkeiten mit dem folgenden Befehl:
source ./flask/bin/activate
pip install -r requirements.txtAls nächstes deaktivieren Sie die virtuelle Umgebung mit dem folgenden Befehl:
deaktivierenDatenbankverbindung definieren
Als Nächstes müssen Sie die Verbindungsdetails der PowerDNS-Datenbank in der Datei default_config.py definieren:
nano /var/www/html/pdns/powerdnsadmin/default_config.pyÄndern Sie die folgenden Zeilen:
SALT ='yoursecretekey'SECRET_KEY =' yoursecretekey'BIND_ADDRESS ='0.0.0.0'PORT =9191HSTS_ENABLED =FalseOFFLINE_MODE =FalseSQLA_DB_USER =' pdnsadmin'SQLA_DB_PASSWORD ='password'SQLA_DB_HOST =' 127.0.0.1'SQLA_DB_NAME =‚pdns'SQLALCHEMY_TRACK_MODIFICATIONS =RichtigSpeichern und schließen Sie die Datei, wechseln Sie dann in das Verzeichnis pdns und aktivieren Sie die virtuelle Umgebung:
cd /var/www/html/pdns/
source ./flask/bin/activateAls nächstes aktualisieren Sie die Datenbank mit dem folgenden Befehl:
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask Assets buildDeaktivieren Sie als Nächstes die virtuelle Umgebung mit dem folgenden Befehl:
deaktivierenPowerDNS-Admin-API aktivieren
Der PowerDNS-Administrator verwendet die JSON-API zum Lesen von Statistiken und zum Ändern von Zoneninhalten, Metadaten und DNSSEC-Schlüsselmaterial. Sie können es aktivieren, indem Sie die Datei pdns.conf:
bearbeitennano /etc/powerdns/pdns.confÄndern Sie die folgenden Zeilen:
api=yesapi-key=yoursecretekeySpeichern und schließen Sie die Datei und starten Sie dann den PowerDNS-Dienst neu, um die Änderungen zu übernehmen:
systemctl startet pdns neuNginx für PowerDNS Admin konfigurieren
Als nächstes müssen Sie den Nginx für den PowerDNS-Administrator konfigurieren. Erstellen Sie dazu mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/pdns-admin.confFügen Sie die folgenden Zeilen hinzu:
server { listen *:80; Servername pdnsadmin.example.com; index index.html index.htm index.php; root /var/www/html/pdns; access_log /var/log/nginx/pdnsadmin_access.log kombiniert; error_log /var/log/nginx/pdnsadmin_error.log; client_max_body_size 10m; client_body_buffer_size 128k; Proxy-Weiterleitung aus; Proxy_connect_timeout 90; proxy_send_timeout 90; Proxy_read_timeout 90; Proxy_buffers 32 4k; Proxy_buffer_size 8k; Proxy_set_header Host $host; Proxy_Set_Header X-Real-IP $remote_addr; Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; Proxy_headers_hash_bucket_size 64; location ~ ^/static/ {include /etc/nginx/mime.types; root /var/www/html/pdns/powerdnsadmin; Standort ~* \.(jpg|jpeg|png|gif)$ { läuft ab 365d; } Standort ~* ^.+.(css|js)$ { läuft ab 7d; } } location / { proxy_pass http://unix:/run/pdnsadmin/socket; Proxy_read_timeout 120; Proxy_connect_timeout 120; Proxy-Weiterleitung aus; }}Speichern und schließen Sie die Datei und überprüfen Sie dann Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -tSie sollten die folgende Ausgabe erhalten:
nginx:Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreichÄndern Sie als Nächstes den Besitz der pdns in www-data:
chown -R www-data:www-data /var/www/html/pdnsStarten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:
systemctl startet nginx neuErstellen Sie eine Systemd-Dienstdatei für PowerDNS Admin
Als Nächstes müssen Sie eine systemd-Dienstdatei erstellen, um den PowerDNS-Dienst zu verwalten.
Erstellen Sie zunächst eine pdns-Dienstdatei mit dem folgenden Befehl:
nano /etc/systemd/system/pdnsadmin.serviceFügen Sie die folgenden Zeilen hinzu:
[Unit]Description=PowerDNS-AdminRequires=pdnsadmin.socketAfter=network.target[Service]PIDFile=/run/pdnsadmin/pidUser=pdnsGroup=pdnsWorkingDirectory=/var/www/html/pdnsExecStart=/var/www/html /pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()'ExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/ kill -s TERM $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetSpeichern und schließen Sie die Datei und erstellen Sie dann eine pdnsadmin-Sockt-Datei mit dem folgenden Befehl:
nano /etc/systemd/system/pdnsadmin.socketFügen Sie die folgenden Zeilen hinzu:
[Unit]Description=PowerDNS-Admin-Socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.targetSpeichern und schließen Sie die Datei und erstellen Sie dann die erforderlichen Dateien und Verzeichnisse mit dem folgenden Befehl:
echo "d /run/pdnsadmin 0755 pdns pdns -">> /etc/tmpfiles.d/pdnsadmin.conf
mkdir /run/pdnsadmin/
chown -R pdns:/run/pdnsadmin /
chown -R pdns:/var/www/html/pdns/powerdnsadmin/Als nächstes laden Sie den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reloadAktivieren Sie als Nächstes den pdnsadmin-Dienst so, dass er beim Systemneustart mit dem folgenden Befehl gestartet wird:
systemctl enable --now pdnsadmin.service pdnsadmin.socketÜberprüfen Sie als Nächstes den Status beider Dienste mit dem folgenden Befehl:
Systemctl-Status pdnsadmin.service pdnsadmin.socketSie sollten die folgende Ausgabe erhalten:
? pdnsadmin.service - PowerDNS-Admin Geladen:geladen (/etc/systemd/system/pdnsadmin.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Mo 2020-11-02 10:54:19 UTC; vor 5sTriggeredBy:? pdnsadmin.socket Haupt-PID:38881 (Gunicorn) Aufgaben:2 (Grenze:2353) Arbeitsspeicher:62,5 MB CGroup:/system.slice/pdnsadmin.service ??38881 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa> ??38898 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa>Nov 02 10:54:19 pdnsadmin.example.com systemd[1]:Gestartet PowerDNS-Admin.Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Starten von gunicorn 20.0.4Nov 02 10:54 :19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Abhören unter:unix:/run/pdnsadmin/socket (38881)Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881]:[2020-11-02 10:54:19 +0000] [38881] [INFO] Using worker:syncNov 02 10:54:19 pdnsadmin.example.com gunicorn[ 38898]:[2020-11-02 10:54:19 +0000] [38898] [INFO] Boot-Worker mit PID:38898? pdnsadmin.socket - PowerDNS-Admin-Socket Geladen:geladen (/etc/systemd/system/pdnsadmin.socket; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Mo 2020-11-02 10:54:19 UTC; vor 5s Auslöser:? pdnsadmin.service Listen:/run/pdnsadmin/socket (Stream) CGroup:/system.slice/pdnsadmin.socketNov 02 10:54:19 pdnsadmin.example.com systemd[1]:Listening on PowerDNS-Admin socket. Greifen Sie auf die Web-Benutzeroberfläche von PowerDNS Admin zu
Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://pdnsadmin.example.com auf die PowerDNS-Admin-Weboberfläche zu . Sie werden auf die folgende Seite weitergeleitet:
Klicken Sie auf Konto erstellen Taste. Sie sollten den folgenden Bildschirm sehen:
Geben Sie Ihre Admin-Benutzerdaten ein und klicken Sie auf Registrieren Schaltfläche, um ein Konto zu erstellen. Auf dem folgenden Bildschirm sollte die Anmeldeseite des PowerDNS-Administrators angezeigt werden:
Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf Anmelden Taste. Sie sollten die PowerDNS-Admin-Weboberfläche auf der folgenden Seite sehen:
Geben Sie hier die PowerDNS-API-URL an, um eine Verbindung zu PowerDNS herzustellen und sie zu verwalten. Klicken Sie dann auf Aktualisieren Schaltfläche, um die Änderungen zu speichern. Sie sollten die folgende Seite sehen:
Klicken Sie auf das Dashboard Taste. Auf dem folgenden Bildschirm sollte das PowerDNS-Admin-Dashboard angezeigt werden:
Schlussfolgerung
Herzliche Glückwünsche! Sie haben PowerDNS und PowerDNS Admin erfolgreich auf dem Ubuntu 20.04-Server installiert und konfiguriert. Sie können jetzt über die PowerDNS-Admin-Weboberfläche Zonen erstellen und Datensätze hinzufügen.