PowerDNS als Secondary DNS mit SQLite

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.

Die Installation ist sehr einfach. Die Abhängigkeiten werden automatisch mit installiert.

sudo apt install pdns-backend-sqlite3

Bei der Einrichtung antworten wir mit „YES“. Damit wird die Einrichtung zu 90% durchgeführt. Wer die Frage mit „NO“ beantwortet muss selber Hand anlegen. Weitere Informationen am Ende von dem Artikel.

Der Start von dem Dienst „PDNS“ ist fehlgeschlagen.

Systemd enthält einen DNS Resolver für die Namensauflösung. Der Dienst läuft auch auf Port 53 und auf der IP Adresse 127.0.0.1.

Deshalb müssten wir PowerDNS auf die richtig IP Adresse des Server legen und nicht auf alle IP Adessen (0.0.0.0).

sudo vim /etc/powerdns/pdns.d/pdns.local.conf

local-address=123.123.123.123
local-ipv6=2a0:1:2:3:ff::1
local-port=53
version-string=anonymous
 
master=no
slave=yes
 
disable-axfr=yes
disable-tcp=no
slave-cycle-interval=60

Nach der Änderung sollten die Dienste PowerDNS und Resolver ohne Fehler starten.

sudo systemctl restart systemd-resolved pdns

Die Tabellen von PowerDNS wurden mit der Installation automatisch angelegt. Jetzt müssen noch weitere Einstellung hinterlegt werden.

Für den Primary DNS wird in der Tabelle „supermasters“ der Hostname und die IP Adresse von dem Haupserver eingetragen.

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 "insert into supermasters values ('123.123.123.123', 'ns1.domain.com', 'admin');"

Sollten Sie bei der Einrichtung die Frage mit „NO“ beantwortet haben, fehlt die Tabelle. Dann müssen Sie die Datenbank selbst anlegen.

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 schema.sqlite3.sql
.quit

Die Datenbank braucht auch die richtig Rechte.

sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3

Die Datenbank muß manuell für das PowerDNS Backend 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=on

Hier noch einige Hinweise zur 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“ kann man die Funktion und Erreichbarkeit des Primary und Secondary DNS überprüfen.

dig @ns2.domain.com meinname.info AXFR

Quellen: Powerdns Backend Sqlite

Eintrag im DNS ansehen

Um die Eintragungen im Nameserver (DNS) anzusehen, gibt es unter Linux und Windows das Tool „nslookup“.

In dem Beispeil verwenden wir den Nameserver dns.quad9.net [9.9.9.9]. Sie können aber auch jeden anderen öffentlichen oder privaten Nameserver verwenden.

nslookup - dns.quad9.net
> set q=ANY
> domain.de
> quit

nslookup -q=ANY domain.de dns.quad9.net

Unter Windows sieht die Eingabe so aus.

nslookup -"set q=all" domain.de dns.quad9.net

Ein anderes Tool ist „dig“. Es gehört aber nicht immer zu jedem Linux dazu und muss ggf. später installiert werden.

dig ANY domain @dns.quad9.net