#
Installation und Einrichtung
- Installation benötigter Software
- Installation von PowerDNS
- Konfiguration von PowerDNS
#
Installation benötigter Software
Zunächst installieren wir den MariaDB-Datenbank Server und richten diesen ein. Bei der Abfrage, ob wir auf den Unix-Socket für die Authentifizierung umstellen wollen, geben wir ein n ein, um dies nicht zu aktivieren. ALle weiteren Fragen können mir y beantwortet werden. Die Installation starten wir mit dem folgenden Befehl.
apt install mariadb-server mariadb-client -y && mysql_secure_installation
Im nächsten Schritt hinterlegen wir in der Konfiguration des MariaDB-Servers einige Zeilen.
printf "# InnoDB
innodb_log_file_size = 64M
default-storage-engine=INNODB
innodb_buffer_pool_size=1G
innodb_buffer_pool_instances = 2
innodb_autoinc_lock_mode = 2
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 60
innodb_locks_unsafe_for_binlog = 1
innodb_stats_on_metadata = 0
transaction-isolation=READ-COMMITTED" >> /etc/mysql/mariadb.conf.d/50-server.cnf
Danach starten wir den MariaDB-Server neu. Dies ist der letzte Schritt für die Einrichtung des MariaDB-Servers.
service mysql restart
#
Installation von PowerDNS
Für die Installation von PowerDNS benötigen wir das Packet curl und gnupg2.
apt install curl gnupg2 -y
Um die neueste Version des PowerDNS Authoritativen Server hinterlegen wir das Repository von PowerDNS und passen die Konfiguration von dem APT-Packetmanager an. Damit werden alle Packete welche mit pdns- beginnen vom Repository von den PowerDNS-Entwicklern.
Wenn ein anderes Betriebssystem als Debian 11 verwendet wird, muss die URL des Repository angepasst werden. Diese kann hier(https://repo.powerdns.com/) gefunden werden.
echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-46 main" >> /etc/apt/sources.list
printf "Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600" > /etc/apt/preferences.d/pdns
Damit wir das Repository nutzen können muss der PublicKey hinterlegt werden.
curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo apt-key add -
Jetzt kann der PowerDNS-Server mit dem MySQL-Backend installiert werden.
apt-get update && apt-get install pdns-server pdns-backend-mysql -y
Nach der Installation kommt eine Fehlermeldung, das PowerDNS nicht gestartet werden kann. Diese Fehlermeldung kann ignoriert werden. Sobald die Verbindung zur MariaDB hinterlegt ist, startet der PowerDNS-Server ohne Probleme. Die Fehlermeldung sieht wie auf dem Screenshot zu sehen aus.
#
Konfiguration von PowerDNS
Nun wird ein MariaDB-User sowie eine Datenbank erstellt.
Das Passwort von dem Benutzer pdns muss ein anderes gewählt werden
create database powerdns;
grant all on powerdns.* to 'pdns'@'localhost' identified by 'secret';
flush privileges;
exit;
Danach wird das Datenbank-Schema von Github runtergeladen und in die Datenbank importiert.
Download the SQL-Dump of PowerDNS and import this
wget https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gmysqlbackend/schema.mysql.sql
mysql -u root -p powerdns < schema.mysql.sql
Danach werden alle Standard-Konfigurationen gelöscht und die Konfiguration für die Verbindung zu MariaDB angelegt
rm /etc/powerdns/pdns.d/*
rm /etc/powerdns/pdns.conf
printf "# MariaDB Configuration file
launch=gmysql
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=pdns
gmysql-password=secret">/etc/powerdns/pdns.d/pdns.local.gmysql.conf
Ab hier unterscheidt sich das Vorgehen zwischen dem Master-DNS-Server und den Slave-DNS-Servern
#
Master-DNS-Server
Da im Schritt zuvor die Standard-Konfiguration gelöscht wurde müssen wir diese in der Datei /etc/powerdns/pdns.conf neu anlegen. Hierbei handelt es sich um eine minimal Konfiguration mit den wichtigsten Funktionen.
#################################
# allow-axfr-ips Allow zonetransfers only to these subnets
#
allow-axfr-ips=127.0.0.0/8,::1, SLAVE-IP
#################################
# disable-axfr Disable zonetransfers but do allow TCP queries
#
disable-axfr=no
#################################
# include-dir Include *.conf files from this directory
#
# include-dir=
include-dir=/etc/powerdns/pdns.d
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=
#################################
# master Act as a primary
#
master=yes
#################################
# primary Act as a primary
#
primary=yes
#################################
# secondary Act as a secondary
#
secondary=yes
#################################
# version-string PowerDNS version in packets - full, anonymous, powerdns or custom
#
version-string=anonymous
#################################
# xfr-cycle-interval Schedule primary/secondary SOA freshness checks once every .. seconds
#
xfr-cycle-interval=20
Da wir gerade die Konfiguration des PowerDNS-Servers geändert haben müssen wir diesen nun neustarten.
systemctl restart pdns
Damit ist die Einrichtung des Master-DNS-Servers abgeschlossen und dieser kann verwendet werden.
#
Slave-DNS-Server
Da im Schritt zuvor die Standard-Konfiguration gelöscht wurde müssen wir diese in der Datei /etc/powerdns/pdns.conf neu anlegen. Hierbei handelt es sich um eine minimal Konfiguration mit den wichtigsten Funktionen.
#################################
# allow-dnsupdate-from A global setting to allow DNS updates from these IP ranges.
#
allow-dnsupdate-from=127.0.0.0/8,::1, MASTER-IP
#################################
# allow-notify-from Allow AXFR NOTIFY from these IP ranges. If empty, drop all incoming notifies.
#
allow-notify-from=0.0.0.0/0,::/0
#################################
# autosecondary Act as an autosecondary (formerly superslave)
#
autosecondary=yes
#################################
# disable-axfr Disable zonetransfers but do allow TCP queries
#
disable-axfr=yes
#################################
# include-dir Include *.conf files from this directory
#
# include-dir=
include-dir=/etc/powerdns/pdns.d
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=
#################################
# primary Act as a primary
#
primary=no
#################################
# secondary Act as a secondary
#
secondary=yes
#################################
# version-string PowerDNS version in packets - full, anonymous, powerdns or custom
#
version-string=anonymous
#################################
# xfr-cycle-interval Schedule primary/secondary SOA freshness checks once every .. seconds
#
xfr-cycle-interval=20
Zusätzlich zum erstellen der Konfiguration muss der Master-DNS-Server in der Datenbank hinterlegt werden. Hier muss MASTER-IP mit der IP-Adresse des Master-DNS-Servers ausgetaucht werden und MASTER-DOMAIN mit dem DNS-Namen des Master-DNS-Servers.
insert into powerdns.supermasters (ip, nameserver, account) VALUES ('MASTER-IP', 'MASTER-DOMAIN', 'admin');
Da wir gerade die Konfiguration des PowerDNS-Servers geändert haben müssen wir diesen nun neustarten.
systemctl restart pdns
Damit ist die Einrichtung des Slave-DNS-Servers abgeschlossen und dieser kann verwendet werden.