GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie PowerDNS Server und PowerDNS Admin unter Ubuntu 20.04

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 pdns  

Als Nächstes müssen Sie die Verbindungsdetails der PowerDNS-Datenbank definieren. Sie können dies tun, indem Sie die Datei pdns.local.gmysql.conf:

bearbeiten
nano /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.conf

Stoppen 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=9

Wenn 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 pdns

An diesem Punkt wird PowerDNS gestartet und überwacht Port 53. Sie können dies mit dem folgenden Befehl überprüfen:

ss -alnp4 | grep pdns

Sie 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 -y

Sobald 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 -y

Als 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.list

Aktualisieren Sie als Nächstes das Repository und installieren Sie Yarn mit dem folgenden Befehl:

apt-get update -y
apt-get install thread -y

An 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/pdns

Wechseln 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-Flasche

Als 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.txt

Als nächstes deaktivieren Sie die virtuelle Umgebung mit dem folgenden Befehl:

deaktivieren

Datenbankverbindung 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 =Richtig

Speichern 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/activate

Als 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 build

Deaktivieren Sie als Nächstes die virtuelle Umgebung mit dem folgenden Befehl:

deaktivieren

PowerDNS-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:

bearbeiten
nano /etc/powerdns/pdns.conf

Ändern Sie die folgenden Zeilen:

api=yesapi-key=yoursecretekey

Speichern und schließen Sie die Datei und starten Sie dann den PowerDNS-Dienst neu, um die Änderungen zu übernehmen:

systemctl startet pdns neu

Nginx 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.conf

Fü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 -t

Sie 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/pdns

Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl startet nginx neu

Erstellen 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.service

Fü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.target

Speichern und schließen Sie die Datei und erstellen Sie dann eine pdnsadmin-Sockt-Datei mit dem folgenden Befehl:

nano /etc/systemd/system/pdnsadmin.socket

Fügen Sie die folgenden Zeilen hinzu:

[Unit]Description=PowerDNS-Admin-Socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.target

Speichern 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-reload

Aktivieren 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.socket

Sie 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.


Ubuntu
  1. So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  3. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  4. So installieren und konfigurieren Sie Mariadb 10 in Ubuntu 20.04

  5. So installieren Sie MariaDB unter Ubuntu 22.04

So installieren und konfigurieren Sie DHCP unter Ubuntu 18.04

So installieren Sie MariaDB unter Ubuntu 18.04 / Ubuntu 16.04

So installieren Sie NFS-Server und -Client unter Ubuntu

So installieren Sie NTP-Server und -Client auf Ubuntu

So installieren Sie UrBackup Server und Client auf Ubuntu 20.04

So installieren Sie Telnet-Server und -Client unter Ubuntu