Wir möchten einen Secondary DNS auf Basis von PowerDNS und SQLite als Backend installieren. Wir verwenden Ubuntu Server 18.04 (bionic) mit PowerDNS 4.1 aus dem Repository.
Installation
Die Installation ist sehr einfach. Die Abhängigkeiten werden automatisch mit installiert.
sudo apt install -y --no-install-recommends pdns-server pdns-backend-sqlite3
Einrichtung
Systemd enthält einen DNS Resolver für die Namensauflösung. Der Dienst läuft auf Port 53, weshalb es zu einem Konflikt kommt. Wir müssten PowerDNS die IP Adresse (10.10.10.2 / fe80::1) des Server mitteilen und nicht auf alle IP Adressen (0.0.0.0) lauschen.
sudo vim /etc/powerdns/pdns.d/pdns.local.conf
local-address=10.10.10.2,fe80::1 local-port=53 version-string=anonymous master=no slave=yes disable-axfr=yes disable-tcp=no slave-cycle-interval=60 |
Nach dieser Änderung sollte der Dienst mit einem DNS Resolver zusammen starten.
Die Datenbank für das Backend muss so konfiguriert werden.
sudo vim /etc/powerdns/pdns.d/pdns.local.gsqlite3.conf
launch=gsqlite3 # Database location gsqlite3-database=/var/lib/powerdns/pdns.sqlite3 gsqlite3-dnssec=off |
Jetzt erstellen wir eine neue Datenbank.
wget -O /tmp/schema.sqlite3.sql https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsqlite3backend/schema.sqlite3.sql
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 < /tmp/schema.sqlite3.sql
Der Import ist auch mit der Command Line Shell so möglich.
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 .read /tmp/schema.sqlite3.sql .quit |
Die Datenbank braucht die richtigen Rechte auf dem Dateisystem.
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
In der Tabelle „supermasters“ wird der Hostname (ns2.domain.com) und die IP (10.10.10.1) vom Primary DNS eingetragen.
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 "insert into supermasters values('10.10.10.1','ns2.domain.com', 'admin');"
Nach einem Neustart vom Dienst sollte alles funktionieren.
sudo systemctl restart systemd-resolved pdns
Fehlersuche
Sollte es nicht auf Anhieb funktionieren, kann man PowerDNS aus als Anwendung starten und sieht auf der Konsole die Fehlermeldungen.
sudo /usr/sbin/pdns_server
Mit dem Tool „dig“ [bind9-dnsutils] kann man die Übertragung der Zone (domain.info) und Erreichbarkeit des Primary (ns1.domain.com) vom Secondary überprüfen.
dig @ns1.domain.com domain.info AXFR
Quellen: Powerdns Backend Sqlite