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