Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dns_isc_bind_archlinux

Dies ist eine alte Version des Dokuments!


DNS ISC bind ArchLinux

DNS ISC bind ist ein DNS-Server, welcher die Namensauflösung in einem Netzwerk realisieren kann. Der DNS-Server des ISC (Internet System Consortium) ist einer der meist eingesetzten Namensserver weltweit und ebenfalls der bei den weltweiten Root-Nameservern verwendete DNS-Server.

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Überblick

Im nachfolgenden soll die Konfiguration eines primary DNS-Servers welcher als interner agierender DNS-Server für ein privates Netzwerk mit zwei Zonen durchgeführt werden. Nachfolgende Zonen werden dabei verwaltet:

  • Intranet - Domain: intra.tachtler.net - IP-Adressbereich: private Adressen
  • Internet - Domain: tachtler.net - IP-Adressbereich: öffentliche Adresse

Des weiteren sollen views zum Einsatz kommen, die ja nach anfragendem Client bzw. dessen IP-Adresse das ein oder andere, je nach view Ergebnis zurück liefern. D.h. je nach IP-Adresse des Client, kann die Antwort auf eine DNS-Anfrage unterschiedlich ausfallen!

  • view - internal
  • view - external

Installation

ISC BIND Paket in ArchLinux (extra) verfügbar.

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Folgender Befehl ist zur Installation auszuführen:

# pacman --noconfirm -S bind

Installationsverlauf

:!: HINWEIS - Evtl. erschien ein Hinweis, das das Paket bind bereits installiert war, welcher ignoriert werden kann!

Mit nachfolgendem Befehl kann überprüft werden, was der Inhalt des Pakets bind war und was und vor allem wo installiert wurde:

# pacman -Qil bind

Installierte Dateien

Falls nicht durch die Installation bereits erfolgt, müssen nachfolgende Besitz- und Dateirechte für das Verzeichnis

  • /var/named

gesetzt sein bzw. werden:

Die Besitzrechte für das Verzeichnis /var/named können mit nachfolgendem Befehl, auf den Besitzer - root und die Gruppe - named gesetzt werden:

# chown root:named /var/named

Die Dateirechte für das Verzeichnis /var/named können mit nachfolgendem Befehl auf 770 - rwxrwx— gesetzt werden:

# chmod 770 /var/named

Dienst/Deamon-Start einrichten

/etc/systemd/system/named.service

Um den Start von ISC BIND unter ArchLinux anzupassen und die IPv6-Fähigkeit zu deaktivieren, falls keine IPv6-Verbindung ins Internet besteht, ist es erforderlich, den systemd-Start Service mit nachfolgendem Befehl

  • # systemctl edit --full named.service

zu verändern. Dabei werden alle Änderungen in nachfolgender Konfigurationsdatei gespeichert:

  • /etc/systemd/system/named.service
[Unit]
Description=Internet domain name server
After=network.target
 
[Service]
ExecStart=/usr/bin/named -4 -f -u named
ExecReload=/usr/bin/kill -HUP $MAINPID
 
[Install]
WantedBy=multi-user.target

Erklärungen:

Nachfolgende Parameter wurden zum Aufruf von /usr/bin/named hinzugefügt:

  • ExecStart=/usr/bin/named -4 -f -u named

Der Parameter -4 bewirkt, das die IPv6-Fähigkeit von ISC BIND deaktiviert wird.

Nach Abschluss der Änderungen, kann noch nachfolgender Befehl abgesetzt werden, um die Änderungen auch wirksam werden zu lassen:

# systemctl daemon-reload

:!: HINWEIS - Keine Ausgabe bedeutet eine korrekte Ausführung des Befehls!

Um den DNS Dienst, welcher als Dienst/Deamon als Hintergrundprozesse läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, solle der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable named.service
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

Eine Überprüfung, ob beim Neustart des Server der named-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service --state=enabled named.service
UNIT FILE     STATE   VENDOR PRESET
named.service enabled disabled     

1 unit files listed.

bzw.

# systemctl is-enabled named.service
enabled

iptables/ip6tables Regeln

Damit der DNS-Server auch erreichbar ist und nicht die Weitergabe der DNS Informationen vom Paketfilter iptables und ip6tables blockiert wird, muss nachfolgende Regel zum iptables bzw. ip6tables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        6   398 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
5        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-INP Defend "
6        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
7        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
8        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
3        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
4        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain OUTPUT (policy ACCEPT 8 packets, 478 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Nachfolgende Befehle, fügen folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 53 -j ACCEPT
  • -A INPUT -p udp --dport 53 -j ACCEPT

und hier die Befehle:

# iptables -I INPUT 5 -p tcp --dport 53 -j ACCEPT
# iptables -I INPUT 6 -p udp --dport 53 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       29 15634 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
6        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
7        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-INP Defend "
8        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
9        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
10       0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
3        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
4        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain OUTPUT (policy ACCEPT 38 packets, 4765 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Die neuen Zeilen sind an **Position 5 (INPUT)** und **Postition 6 (INPUT)** zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (**nur relevanter Ausschnitt**):
<code>
...
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
...
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/iptables/iptables.rules

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das iptables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/iptables/iptables.rules
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*mangle
:PREROUTING ACCEPT [179:83438]
:INPUT ACCEPT [179:83438]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [221:105831]
:POSTROUTING ACCEPT [222:105904]
COMMIT
# Completed on Mon Jul 12 16:38:03 2021
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [221:105831]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A FORWARD -j LOG --log-prefix "REC-FWD Defend " --log-level 5
-A FORWARD -p tcp -j REJECT --reject-with tcp-reset
-A FORWARD -p udp -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Mon Jul 12 16:38:03 2021
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [33:2171]
:POSTROUTING ACCEPT [33:2171]
COMMIT
# Completed on Mon Jul 12 16:38:03 2021

Um die aktuellen ip6tables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# ip6tables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all      *      *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp     *      *       ::/0                 ::/0                
3        0     0 ACCEPT     all      lo     *       ::/0                 ::/0                
4        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                 tcp dpt:22
5        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-INP Defend "
6        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
7        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
8        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
3        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
4        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgende Befehle, fügen folgende ip6tables-Regeln dem ip6tables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 53 -j ACCEPT
  • -A INPUT -p udp --dport 53 -j ACCEPT

und hier die Befehle:

# ip6tables -I INPUT 5 -p tcp --dport 53 -j ACCEPT
# ip6tables -I INPUT 6 -p udp --dport 53 -j ACCEPT

Ein erneute Abfrage des ip6tables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# ip6tables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all      *      *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp     *      *       ::/0                 ::/0                
3        0     0 ACCEPT     all      lo     *       ::/0                 ::/0                
4        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                 tcp dpt:22
5        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 tcp dpt:53
6        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:53
7        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-INP Defend "
8        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
9        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
10       0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
3        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
4        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Die neuen Zeilen sind an Position 5 (INPUT) und Postition 6 (INTPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                 tcp dpt:53 
...
1        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:53
...

Um diese ip6tables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im ip6tables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/ip6tables-save > /etc/iptables/ip6tables.rules 

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das ip6tables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/iptables/ip6tables.rules
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Mon Jul 12 16:48:38 2021
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -j REJECT --reject-with icmp6-addr-unreachable
-A FORWARD -j LOG --log-prefix "REC-FWD Defend " --log-level 5
-A FORWARD -p tcp -j REJECT --reject-with tcp-reset
-A FORWARD -p udp -j REJECT --reject-with icmp6-port-unreachable
-A FORWARD -j REJECT --reject-with icmp6-addr-unreachable
COMMIT
# Completed on Mon Jul 12 16:48:38 2021
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Mon Jul 12 16:48:38 2021

Basis-Konfiguration

Zur Steuerung des DNS-Server kommt das Programm

  • rndc

zum Einsatz.

rndc benötigt eine Konfigurationsdatei, seitdem jegliche Kommunikation mit dem DNS-Server nur noch über die Authentifizierung über eine digitale Signatur erfolgt, die wiederum auf einem geteilten Schlüssel beruht. Es gibt keine andere Möglichkeit als diesen Schlüssel in einer Konfigurationsdatei zu hinterlegen und damit zur Verwendung zu bringen.

rndc-confgen

Mit dem Befehl

  • rndc-confgen

und der Anwendung einiger zusätzlicher Parametern, können die Dateien

  • /etc/rndc.conf

und der Syntax zur Einbindung in die Konfigurationsdatei

  • /etc/named.conf

erstellt werden.

Der Aufruf erfolgt wie nachfolgen dargestellt:

# rndc-confgen -A hmac-sha512 -b 512 -c /etc/rndc.key -k rndc-key -u named

und erzeugt nachfolgende Bildschirmausgabe:

# rndc-confgen -A hmac-sha512 -b 512 -c /etc/rndc.key -k rndc-key -u named
# Start of rndc.conf
key "rndc-key" {
	algorithm hmac-sha512;
	secret "cluC9ajitdt6xeSvLvQ1SBQ2YZhsAiE2xx8pFXhwdBqs6RmW0Omki9X1QGKIbLDUo3H4J8ZGfhhCAvyazQhlpA==";
};
 
options {
	default-key "rndc-key";
	default-server 127.0.0.1;
	default-port 953;
};
# End of rndc.conf
 
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# 	algorithm hmac-sha512;
# 	secret "cluC9ajitdt6xeSvLvQ1SBQ2YZhsAiE2xx8pFXhwdBqs6RmW0Omki9X1QGKIbLDUo3H4J8ZGfhhCAvyazQhlpA==";
# };
# 
# controls {
# 	inet 127.0.0.1 port 953
# 		allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

:!: ACHTUNG - Diese Ausgabe sollte so NICHT verwendet werden, da hier der Schlüssel rndc-key doppelt in den Dateien /etc/rndc.conf und /etc/named.conf eingebettet werden muss. Besser ist es hier, den Schlüssel in eine eigene Datei /etc/rndc.key auszulagern und via include diese Datei dann jeweils zu importieren!

:!: HINWEIS - Ein optimiertes Vorgehen, soll nachfolgend dargestellt werden!

/etc/rndc.key

Um die Sicherheit zu erhöhen, sollte ein eigener Schlüssel, welcher in der Datei /etc/rndc.key beinhaltet ist, wie folgt gleich durch schreiben der Datei /etc/rndc.key erstellt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# rndc-confgen -a -A hmac-sha512 -b 512 -c /etc/rndc.key -k tachtler.net-key -u named
wrote key file "/etc/rndc.key"

:!: HINWEIS - Der Name des Schlüssels in der Datei die den Schlüssel enthält darf nicht rndc-key lauten, da sonst beim Einsatz von /etc/rndc.conf und dem Vorhandensein Name des Schlüssels in der Datei rndc-key ein Warnhinweis, wie nachfolgend gezeigt, erscheint !

WARNING: key file (/etc/rndc.key) exists, but using default configuration file (/etc/rndc.conf)

:!: HINWEIS - Deshalb wurde hier der Parameter -k tachtler.net-key verwendet!

Anschliessend kann mit nachfolgendem Befehl überprüft werden, ob die Generierung einer neuen Datei mit dem Namen /etc/rndc.key erfolgreich war:

# cat /etc/rndc.key
key "tachtler.net-key" {
	algorithm hmac-sha512;
	secret "kk4R1sGLwqqAdGsmcPBZ24ACo6vpY6eHaDS4pO1q2/dnvzRygP/0Bo6Wmz82kUEMp5PhxYnJCuqvinAtg0WgFw==";
};

Anschliessend sollten die Besitzrechte noch einmal verschärft werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# chown root:named /etc/rndc.key

Zusätzlich müssen durch die Verschärfung der Besitzrechte jetzt auch die Dateirechte noch einmal angepasst werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# chmod 640 /etc/rndc.key

Ein Überprüfung, ob die Besitzrechte korrekt gesetzt wurden, kann mit nachfolgendem Befehl durchgeführt werden:

# ls -l /etc/rndc.key 
-rw-r----- 1 root named 144 Oct 10 16:39 /etc/rndc.key

/var/named/named.root

Da nach der Installation des DNS-Servers keine Datei mit den 13 ROOT nameservern vorhanden ist, soll diese unter

  • /var/named/named.root

wie folgt neu erzeugt werden, dabei sollen die Besitzrechte ebenfalls gleich mit gesetzt werden:

# dig +bufsize=1200 +norec NS . @a.root-servers.net > /var/named/named.root && chown named:named /var/named/named.root

Anschließend kann mit nachfolgendem Befehl überprüft werden, ob die Erstellung der Datei mit dem Namen /var/named/named.root erfolgreich war:

# cat /var/named/named.root

; <<>> DiG 9.16.21 <<>> +bufsize +norec NS . @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30672
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;.				IN	NS

;; ANSWER SECTION:
.			518400	IN	NS	a.root-servers.net.
.			518400	IN	NS	b.root-servers.net.
.			518400	IN	NS	c.root-servers.net.
.			518400	IN	NS	d.root-servers.net.
.			518400	IN	NS	e.root-servers.net.
.			518400	IN	NS	f.root-servers.net.
.			518400	IN	NS	g.root-servers.net.
.			518400	IN	NS	h.root-servers.net.
.			518400	IN	NS	i.root-servers.net.
.			518400	IN	NS	j.root-servers.net.
.			518400	IN	NS	k.root-servers.net.
.			518400	IN	NS	l.root-servers.net.
.			518400	IN	NS	m.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.	518400	IN	A	198.41.0.4
b.root-servers.net.	518400	IN	A	199.9.14.201
c.root-servers.net.	518400	IN	A	192.33.4.12
d.root-servers.net.	518400	IN	A	199.7.91.13
e.root-servers.net.	518400	IN	A	192.203.230.10
f.root-servers.net.	518400	IN	A	192.5.5.241
g.root-servers.net.	518400	IN	A	192.112.36.4
h.root-servers.net.	518400	IN	A	198.97.190.53
i.root-servers.net.	518400	IN	A	192.36.148.17
j.root-servers.net.	518400	IN	A	192.58.128.30
k.root-servers.net.	518400	IN	A	193.0.14.129
l.root-servers.net.	518400	IN	A	199.7.83.42
m.root-servers.net.	518400	IN	A	202.12.27.33
a.root-servers.net.	518400	IN	AAAA	2001:503:ba3e::2:30
b.root-servers.net.	518400	IN	AAAA	2001:500:200::b
c.root-servers.net.	518400	IN	AAAA	2001:500:2::c
d.root-servers.net.	518400	IN	AAAA	2001:500:2d::d
e.root-servers.net.	518400	IN	AAAA	2001:500:a8::e
f.root-servers.net.	518400	IN	AAAA	2001:500:2f::f
g.root-servers.net.	518400	IN	AAAA	2001:500:12::d0d
h.root-servers.net.	518400	IN	AAAA	2001:500:1::53
i.root-servers.net.	518400	IN	AAAA	2001:7fe::53
j.root-servers.net.	518400	IN	AAAA	2001:503:c27::2:30
k.root-servers.net.	518400	IN	AAAA	2001:7fd::1
l.root-servers.net.	518400	IN	AAAA	2001:500:9f::42
m.root-servers.net.	518400	IN	AAAA	2001:dc3::35

;; Query time: 30 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Sun Oct 10 17:00:36 CEST 2021
;; MSG SIZE  rcvd: 811

Ein Überprüfung, ob die Besitzrechte korrekt gesetzt wurden, kann mit nachfolgendem Befehl durchgeführt werden:

# ls -l /var/named/named.root
-rw-r--r-- 1 named named 2212 Oct 10 17:01 /var/named/named.root

Zonen-Dateien

Um den DNS-Server betreiben zu können, ist es erforderlich auch die entsprechenden Zonen-Dateien zu erstellen und dem DNS-Server bekannt zu machen.

Dabei ist jeweils eine Zonen-Datei für die z.B. für die Zone

  • intra.tachtler.net
  • tachtler.net

zu erstellen, welche jedoch aus zwei Zonen-Dateien bestehen sollte,

  • Zonen-Datei für die Forward-Auflösung - /var/named/zones/intra.tachtler.net.zone
  • Zonen-Datei für die Reverse-Auflösung - /var/named/zones/0.168.192.in-addr.arpa.zone
  • Zonen-Datei für die Forward-Auflösung - /var/named/zones/tachtler.net.zone
  • Zonen-Datei für die Reverse-Auflösung - /var/named/zones/167.171.217.88.in-addr.arpa.zone

Natürlich können diese Dateien im Verzeichnis

  • /var/named

erstellt werden, jedoch kann auch der Übersicht halber ein Unterordner mit nachfolgendem Pfad und Namen, mit nachfolgendem Befehl angelegt werden:

# mkdir /var/named/zones

Nachfolgend sollten nun auch noch die Besitzrechte und die Dateirechte entsprechend angepasst werden, was mit nachfolgenden Befehlen durchgeführt werden kann:

Besitzrechte:

# chown -R root:named /var/named/zones

Dateirechte:

# chmod -R 770 /var/named/zones

Anschließend können nun die Zonen-Dateien im Verzeichnis /var/named/zones erstellt werden.

/var/named/zones/intra.tachtler.net.zone

Nachfolgend ein Beispiel, wie eine Zonen-Datei für die Forward-Auflösung aussehen könnte:

$TTL 3H
@                               IN SOA  ns1     hostmaster.tachtler.net.        (
                                2021101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
 
                                NS      ns1.intra.tachtler.net.
 
                                MX 10   mx1.tachtler.net.
 
ns1                             A       192.168.0.20
 
rechner10                       A       192.168.0.10
rechner20                       A       192.168.0.20

Um die syntaktische Korrektheit einer Zonen-Datei zu überprüfen, kann nachfolgender Befehl verwendet werden:

# named-checkzone intra.tachtler.net /var/named/zones/intra.tachtler.net.zone
zone intra.tachtler.net/IN: loaded serial 2021101101
OK

/var/named/zones/0.168.192.in-addr.arpa.zone

Nachfolgend ein Beispiel, wie eine Zonen-Datei für die Reverse-Auflösung aussehen könnte:

$TTL 3H
@                               IN SOA  ns1.intra.tachtler.net. hostmaster.tachtler.net.        (
                                2021101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
 
                                NS      ns1.intra.tachtler.net.
 
                                MX 10   mx1.tachtler.net.
 
10                              PTR     rechner10.intra.tachtler.net.
20                              PTR     rechner20.intra.tachtler.net.

Um die syntaktische Korrektheit einer Zonen-Datei zu überprüfen, kann nachfolgender Befehl verwendet werden:

# named-checkzone 0.168.192 /var/named/zones/0.168.192.in-addr.arpa.zone
zone 0.168.192/IN: loaded serial 2021101101
OK

/var/named/zones/tachtler.net.zone

Nachfolgend ein Beispiel, wie eine Zonen-Datei für die Forward-Auflösung aussehen könnte:

$TTL 3H
@                               IN SOA  ns1.intra     hostmaster.tachtler.net.        (
                                2021101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
 
                                NS      ns1.intra.tachtler.net.
 
                                MX 10   mx1.tachtler.net.
 
ns1.intra                       A       192.168.0.20                                
 
mx1                             A       88.217.171.167
@				A	88.217.171.167

Um die syntaktische Korrektheit einer Zonen-Datei zu überprüfen, kann nachfolgender Befehl verwendet werden:

# named-checkzone tachtler.net /var/named/zones/tachtler.net.zone
zone tachtler.net/IN: loaded serial 2021101101
OK

/var/named/zones/167.178.168.192.in-addr.arpa.zone

Nachfolgend ein Beispiel, wie eine Zonen-Datei für die Reverse-Auflösung aussehen könnte:

$TTL 3H
@                               IN SOA  ns1.intra.tachtler.net. hostmaster.tachtler.net.        (
                                2021101101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
 
                                NS      ns1.intra.tachtler.net.
 
                                MX 10   mx1.tachtler.net.
 
@                               PTR     mx1.tachtler.net.
@				PTR	tachtler.net.

Um die syntaktische Korrektheit einer Zonen-Datei zu überprüfen, kann nachfolgender Befehl verwendet werden:

# named-checkzone 167.171.217.88 /var/named/zones/167.171.217.88.in-addr.arpa.zone
zone 167.171.217.88/IN: loaded serial 2021101101
OK

/etc/named.conf

Nachfolgend die Konfigurationsdatei mit den durchgeführten Anpassungen, welche von den Standardeinstellungen abweichen bzw. explizit gesetzt wurden, auch wenn diese den Standardeinstellungen entsprechen (komplette Konfigurationsdatei):

# egrep -v '(.*//|.*/\*|.*\*/|.*\{\%|.*\%\}|^$)' /etc/named.conf
acl primary_v4 {
	192.168.0.20;
};
acl interfaces_v4 {
	192.168.0.20;
	127.0.0.1;
};
acl home_v4 {
	192.168.0.0/24;
};
acl home_v6 {
	fd00:0:0:192::/64;
};
controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "tachtler.net-key"; };
};
include "//etc/rndc.key";
logging {
	channel default_log {
		file "/var/log/named/default" versions 4 size 20m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel auth_servers_log {
		file "/var/log/named/auth_servers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnssec_log {
		file "/var/log/named/dnssec" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel zone_transfers_log {
		file "/var/log/named/zone_transfers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel ddns_log {
		file "/var/log/named/ddns" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel client_security_log {
		file "/var/log/named/client_security" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rate_limiting_log {
		file "/var/log/named/rate_limiting" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rpz_log {
 		file "/var/log/named/rpz" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnstap_log {
		file "/var/log/named/dnstap" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel queries_log {
		file "/var/log/named/queries" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel query-errors_log {
		file "/var/log/named/query-errors" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity dynamic;
	};
	channel default_syslog {
		print-time yes;
		print-category yes;
		print-severity yes;
		syslog daemon;
		severity info;
	};
	channel default_debug {
		print-time yes;
		print-category yes;
		print-severity yes;
		file "/var/log/named/named.run";
		severity dynamic;
	};
	category default { default_syslog; default_debug; default_log; };
	category config { default_syslog; default_debug; default_log; };
	category dispatch { default_syslog; default_debug; default_log; };
	category network { default_syslog; default_debug; default_log; };
	category general { default_syslog; default_debug; default_log; };
	category zoneload { default_syslog; default_debug; default_log; };
	category resolver { auth_servers_log; default_debug; };       
	category cname { auth_servers_log; default_debug; };       
	category delegation-only { auth_servers_log; default_debug; };
	category edns-disabled { auth_servers_log; default_debug; };
	category dnssec { dnssec_log; default_debug; };
	category notify { zone_transfers_log; default_debug; };       
	category xfer-in { zone_transfers_log; default_debug; };       
	category xfer-out { zone_transfers_log; default_debug; };
	category update{ ddns_log; default_debug; };
	category update-security { ddns_log; default_debug; };
	category client{ client_security_log; default_debug; };       
	category security { client_security_log; default_debug; };
	category rate-limit { rate_limiting_log; default_debug; };       
	category spill { rate_limiting_log; default_debug; };       
	category database { rate_limiting_log; default_debug; };
	category rpz { rpz_log; default_debug; };
	category dnstap { dnstap_log; default_debug; };
	category queries { queries_log; };
	category query-errors { query-errors_log; };
};
options {
    directory "/var/named";
	geoip-directory none;
	key-directory "/var/named/keys";
	managed-keys-directory "/var/named/managedkeys";
	new-zones-directory "/var/named/zones";
	dump-file "/var/named/data/named_dump.db";
	memstatistics-file "/var/named/data/named.memstats";
	pid-file "/var/run/named/named.pid"; 
	recursing-file "/var/named/data/named.recursing";
	statistics-file "/var/named/data/named.stats";
	bindkeys-file "/etc/bind.keys";
	secroots-file "/var/named/data/named.secroots";
	session-keyalg hmac-sha512;	
	session-keyfile "/var/run/named/session.key";
	port 53;
	dnssec-update-mode maintain;
	allow-new-zones no;
	memstatistics yes;
	recursion yes;
	cookie-algorithm aes;
	auto-dnssec off;
	dnssec-validation yes;
	querylog no;
	check-names primary warn;
	allow-notify {
		localhost;
		primary_v4;
	};
	allow-query {
		localhost; localnets;
		home_v4;
	};
	allow-query-on {
		localhost;
		primary_v4;
	};
	allow-query-cache {
		localhost; localnets;
		home_v4;
	};
	allow-query-cache-on {
		localhost; localnets;
		home_v4;
	};
	allow-recursion {
		localhost; localnets;
		home_v4;
	};
	allow-recursion-on {
		localhost;
		primary_v4;
	};
	allow-update { none; };
	allow-update-forwarding { none; };
	allow-transfer {
		localhost;
		primary_v4;
	};
	listen-on port 53 { interfaces_v4; };
	query-source address * port *;
	max-cache-size 60%;
	lame-ttl 0;
	max-rsa-exponent-size 4096;
	version none;
	hostname none;
	server-id none;
};
statistics-channels {
	inet 192.168.0.20 port 80 allow {
		primary_v4; interfaces_v4; home_v4;
	};
};
view "internal" IN {
	match-clients {
		localhost; localnets;
		home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "intra.tachtler.net" IN {
		type master;
		file "zones/intra.tachtler.net.zone";
	};
	zone "0.168.192.in-addr.arpa" IN {
		type master;
		file "zones/0.168.192.in-addr.arpa.zone";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
	};
};
view "external" IN {
	match-clients {
		localhost; localnets;
		!home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
	};
};

Die kompletten Bedeutungen der einzelnen Konfigurationsparameter können unter nachfolgendem Link nachgelesen werden.

Nachfolgen sollen nur speziell gesetzte und wichtige Parameter eine gesonderte Erklärung finden:

ACL

Die acl-Anweisungen weisen einem IP-Adress-Match-Listen-Eintrag einen symbolischen Namen zu.

acl primary_v4 {
	192.168.0.20;
};
acl interfaces_v4 {
	192.168.0.20;
	127.0.0.1;
};
acl home_v4 {
	192.168.0.0/24;
};
acl home_v6 {
	fd00:0:0:192::/64;
};

Controls

Die controls-Anweisung deklariert Kontrollkanäle, bzw. Steuerkanäle welche vom Dienstprogramm rndc verwendet werden, um Befehle an den Nameserver zu senden und „Nicht-DNS-Ergebnisse“ von diesem abzurufen.

controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "tachtler.net-key"; };
};

Include

Die include-Anweisung fügt die angegebene Datei (oder Dateien, wenn ein gültiger Glob-Ausdruck erkannt wird) an der Stelle ein, an der die include-Anweisung gefunden wird. Die include-Anweisung erleichtert die Verwaltung von Konfigurationsdateien. Die Anweisung enthält beispielsweise einen private Schlüssel, der nur vom Nameserver gelesen werden kann.

include "//etc/rndc.key";

Logging

Die Logging-Anweisung konfiguriert eine Vielzahl von Logging-Optionen für den Nameserver. Die Möglichkeit Kanäle zu definieren, verknüpft Ausgabemethoden, Formatoptionen und Schweregrade mit einem Namen, der dann in einer Kategorie verwendet werden kann, um auszuwählen, wie verschiedene Klassen von Nachrichten protokolliert werden sollen.

Eine empfohlene Konfiguration kann unter nachfolgendem externen Link abgerufen werden:

logging {
	...
	...
	...
}

Options

Die options-Anweisung richtet globale Optionen ein.

options {
	...
	...
	...
}

Statistics-Channel

Die statistics-channels-Anweisung deklariert Kommunikationskanäle, die verwendet werden können, um Zugriff auf Statistikinformationen vom Nameserver zu erhalten.

statistics-channels {
	inet 192.168.0.20 port 80 allow {
		primary_v4; interfaces_v4; home_v4;
	};
};

:!: HINWEIS - Ein Aufruf kann über die URL/IP-Adressen des Nameservers unter Verwendung des definierten Ports erfolgen.

View

Die view-Anweisung ist eine mächtige Funktion von BIND 9, die es einem Nameserver ermöglicht, eine DNS-Anfrage unterschiedlich zu beantworten, je nachdem, von welcger IP-Adresse die Anfrage gestellt wird. Es ist besonders nützlich, um Split-DNS-Setups zu implementieren, ohne mehrere Server ausführen zu müssen.

:!: WICHTIG - Die Reihenfolge der Views ist entscheidend. Eine Client-Anfrage wird im Kontext der ersten übereinstimmenden View aufgelöst!

:!: HINWEIS - Bei der Verwendung von Views, können KEINE Zonen mehr verwendet werden!

:!: HINWEIS - Auch Zonen-Dateien, wie die DNS-Root-Server oder localhost-Definitionen, müssen in jede View mit aufgenommen werden, wenn diese Verwendung finden sollen!

view "internal" IN {
	match-clients {
		localhost; localnets;
		home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "intra.tachtler.net" IN {
		type master;
		file "zones/intra.tachtler.net.zone";
	};
	zone "0.168.192.in-addr.arpa" IN {
		type master;
		file "zones/0.168.192.in-addr.arpa.zone";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
	};
};
view "external" IN {
	match-clients {
		localhost; localnets;
		!home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
	};
};

Erster Start

named-checkconf

Bevor nun der ISC BIND Nameserver zum ersten mal neu gestartet werden soll kann mit nachfolgendem Befehl die syntaktische Richtigkeit der Konfigurationsdatei:

  • /etc/named.conf

überprüft werden und sollte keine Meldungen ausgeben, wenn die Konfigurationsdatei syntaktische richtig ist:

# named-checkconf -l -z
localhost IN internal master
0.0.127.in-addr.arpa IN internal master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN internal master
. IN internal hint
intra.tachtler.net IN internal master
0.168.192.in-addr.arpa IN internal master
tachtler.net IN internal master
167.171.217.88.in-addr.arpa IN internal master
localhost IN external master
0.0.127.in-addr.arpa IN external master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN external master
. IN external hint
tachtler.net IN external master
167.171.217.88.in-addr.arpa IN external master

Start-Befehl

Falls hier, wie oben gezeigt, keine Fehler zum vorschein kamen, kann der ISC BIND Nameserver mit nachfolgendem Befehl gestartet werden (Bei erfolgreichem Start, erofolgt keine Ausgabe):

# systemctl start named.service

Überprüfung

Mit nachfolgendem Befehl kann überprüft werden, ob der ISC BIND Nameserver erfolgreich und ohne Fehler gestartet wurde:

# journalctl -u named
-- Journal begins at Fri 2021-11-05 16:02:38 CET, ends at Sat 2021-11-06 07:52:47 CET. --
Nov 06 07:44:41 server systemd[1]: Started Internet domain name server.
Nov 06 07:44:41 server named[39523]: starting BIND 9.16.22 (Extended Support Version) <id:59bfaba>
Nov 06 07:44:41 server named[39523]: running on Linux x86_64 5.10.77-3-lts #1 SMP Thu, 04 Nov 2021 16:15:01 +0000
Nov 06 07:44:41 server named[39523]: built with '--prefix=/usr' '--sysconfdir=/etc' '--sbindir=/usr/bin' '--localstat>
Nov 06 07:44:41 server named[39523]: running as: named -4 -f -u named
Nov 06 07:44:41 server named[39523]: compiled by GCC 11.1.0
Nov 06 07:44:41 server named[39523]: compiled with OpenSSL version: OpenSSL 1.1.1l  24 Aug 2021
Nov 06 07:44:41 server named[39523]: linked to OpenSSL version: OpenSSL 1.1.1l  24 Aug 2021
Nov 06 07:44:41 server named[39523]: compiled with libxml2 version: 2.9.12
Nov 06 07:44:41 server named[39523]: linked to libxml2 version: 20912
Nov 06 07:44:41 server named[39523]: compiled with json-c version: 0.15
Nov 06 07:44:41 server named[39523]: linked to json-c version: 0.15
Nov 06 07:44:41 server named[39523]: compiled with zlib version: 1.2.11
Nov 06 07:44:41 server named[39523]: linked to zlib version: 1.2.11
Nov 06 07:44:41 server named[39523]: ----------------------------------------------------
Nov 06 07:44:41 server named[39523]: BIND 9 is maintained by Internet Systems Consortium,
Nov 06 07:44:41 server named[39523]: Inc. (ISC), a non-profit 501(c)(3) public-benefit
Nov 06 07:44:41 server named[39523]: corporation.  Support and training for BIND 9 are
Nov 06 07:44:41 server named[39523]: available at https://www.isc.org/support
Nov 06 07:44:41 server named[39523]: ----------------------------------------------------
Nov 06 07:44:41 server named[39523]: adjusted limit on open files from 524288 to 1048576
Nov 06 07:44:41 server named[39523]: found 2 CPUs, using 2 worker threads
Nov 06 07:44:41 server named[39523]: using 2 UDP listeners per interface
Nov 06 07:44:41 server named[39523]: using up to 21000 sockets
Nov 06 07:44:41 server named[39523]: loading configuration from '/etc/named.conf'
Nov 06 07:44:41 server named[39523]: reading built-in trust anchors from file '/etc/bind.keys'
Nov 06 07:44:41 server named[39523]: statistics channel listening on 192.168.0.20#80
Nov 06 07:44:41 server named[39523]: using default UDP/IPv4 port range: [32768, 60999]
Nov 06 07:44:41 server named[39523]: listening on IPv4 interface lo, 127.0.0.1#53
Nov 06 07:44:41 server named[39523]: listening on IPv4 interface net0, 192.168.0.20#53
Nov 06 07:44:41 server named[39523]: generating session key for dynamic DNS
Nov 06 07:44:41 server named[39523]: sizing zone task pool based on 12 zones
Nov 06 07:44:41 server named[39523]: /etc/named.conf:1726: 'max-cache-size 60%' - setting to 1188MB (out of 1980MB)
Nov 06 07:44:41 server named[39523]: set up managed keys zone for view internal, file '/var/named/managedkeys/interna>
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 10.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 16.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 17.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 18.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 19.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 20.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 21.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 22.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 23.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 24.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 25.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 26.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 27.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 28.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 29.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 30.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 31.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 168.192.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 64.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 65.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 66.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 67.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 68.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 69.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 70.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 71.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 72.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 73.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 74.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 75.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 76.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 77.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 78.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 79.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 80.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 81.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 82.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 83.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 84.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 85.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 86.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 87.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 88.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 89.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 90.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 91.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 92.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 93.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 94.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 95.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 96.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 97.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 98.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 99.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 100.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 101.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 102.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 103.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 104.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 105.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 106.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 107.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 108.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 109.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 110.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 111.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 112.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 113.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 114.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 115.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 116.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 117.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 118.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 119.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 120.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 121.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 122.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 123.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 124.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 125.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 126.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 127.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 0.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 127.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 254.169.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 2.0.192.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 100.51.198.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 113.0.203.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 255.255.255.255.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0>
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: D.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 8.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 9.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: A.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: B.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: 8.B.D.0.1.0.0.2.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: EMPTY.AS112.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view internal: HOME.ARPA
Nov 06 07:44:41 server named[39523]: /etc/named.conf:1726: 'max-cache-size 60%' - setting to 1188MB (out of 1980MB)
Nov 06 07:44:41 server named[39523]: set up managed keys zone for view external, file '/var/named/managedkeys/externa>
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 10.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 16.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 17.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 18.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 19.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 20.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 21.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 22.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 23.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 24.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 25.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 26.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 27.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 28.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 29.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 30.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 31.172.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 168.192.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 64.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 65.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 66.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 67.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 68.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 69.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 70.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 71.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 72.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 73.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 74.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 75.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 76.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 77.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 78.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 79.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 80.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 81.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 82.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 83.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 84.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 85.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 86.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 87.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 88.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 89.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 90.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 91.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 92.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 93.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 94.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 95.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 96.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 97.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 98.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 99.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 100.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 101.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 102.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 103.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 104.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 105.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 106.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 107.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 108.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 109.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 110.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 111.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 112.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 113.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 114.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 115.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 116.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 117.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 118.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 119.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 120.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 121.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 122.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 123.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 124.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 125.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 126.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 127.100.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 0.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 127.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 254.169.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 2.0.192.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 100.51.198.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 113.0.203.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 255.255.255.255.IN-ADDR.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0>
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: D.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 8.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 9.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: A.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: B.E.F.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: 8.B.D.0.1.0.0.2.IP6.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: EMPTY.AS112.ARPA
Nov 06 07:44:41 server named[39523]: automatic empty zone: view external: HOME.ARPA
Nov 06 07:44:41 server named[39523]: command channel listening on 127.0.0.1#953
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: managed-keys-zone/internal: loaded seri>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: managed-keys-zone/external: loaded seri>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 0.0.127.in-addr.arpa/IN/internal: >
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone localhost/IN/internal: loaded seri>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 0.168.192.in-addr.arpa/IN/internal>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone intra.tachtler.net/IN/internal: >
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 167.171.217.88.in-addr.arpa/IN/internaö>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone tachtler.net/IN/internal: loaded s>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 0.0.127.in-addr.arpa/IN/external: >
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 167.171.217.88.in-addr.arpa/IN/externa>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone localhost/IN/external: loaded seriol>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone tachtler.net/IN/external: loaded s>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 zoneload: info: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.>
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 general: notice: all zones loaded
Nov 06 07:44:41 server named[39523]: 06-Nov-2021 07:44:41.051 general: notice: running

Mit nachfolgendem Befehl kann überprüft werden, ob der ISC BIND Nameserver unter den gewünschten IP-Adressen ansprechbar ist:

# ss -tlnd
Netid     State      Recv-Q    Send-Q               Local Address:Port     Peer Address:Port    Process
tcp       LISTEN     0         0                        127.0.0.1:953           0.0.0.0:*   
tcp       LISTEN     0         0                     192.168.0.20:8080          0.0.0.0:* 
tcp       LISTEN     0         0                     192.168.0.20:53            0.0.0.0:*  
tcp       LISTEN     0         0                     192.168.0.20:53            0.0.0.0:*   
tcp       LISTEN     0         0                        127.0.0.1:53            0.0.0.0:*  
tcp       LISTEN     0         0                        127.0.0.1:53            0.0.0.0:*  
tcp       LISTEN     0         0                     192.168.0.20:22            0.0.0.0:*  
tcp       LISTEN     0         0           [fd00::::192:168:0:20]:22                  *:*  
tcp       LISTEN     0         0             [fe80::192:168:0:20]:22                  *:*

DNS-Server Überprüfung

Ob der DNS-Server, sprich der named-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):

# ps auxwf | grep named | grep -v grep
named      39523  0.0  1.9 238364 39412 ?        Ssl  07:44   0:00 /usr/bin/named -4 -f -u named

Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien

  • /var/log/named/auth_servers
  • /var/log/named/client_security
  • /var/log/named/ddns
  • /var/log/named/default
  • /var/log/named/dnssec
  • /var/log/named/dnstap
  • /var/log/named/named.run
  • /var/log/named/queries
  • /var/log/named/query-errors
  • /var/log/named/rate_limiting
  • /var/log/named/rpz
  • /var/log/named/zone_transfers

durchgeführt werden.

Hierbei sind die beiden nachfolgenden LOG-Dateien die beiden, in denen der Start protokolliert wird:

  • /var/log/named/default
  • /var/log/named/named.run

Nachfolgende exemplarisch der Inhalt der LOG-Datei - /var/log/named/named.run:

# cat /var/log/named/named.run 
06-Nov-2021 07:44:41.051 zoneload: info: managed-keys-zone/internal: loaded serial 0
06-Nov-2021 07:44:41.051 zoneload: info: managed-keys-zone/external: loaded serial 0
06-Nov-2021 07:44:41.051 zoneload: info: zone 0.0.127.in-addr.arpa/IN/internal: loaded serial 42
06-Nov-2021 07:44:41.051 zoneload: info: zone localhost/IN/internal: loaded serial 42
06-Nov-2021 07:44:41.051 zoneload: info: zone 0.168.192.in-addr.arpa/IN/internal: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone intra.tachtler.net/IN/internal: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone 0.0.127.in-addr.arpa/IN/external: loaded serial 42
06-Nov-2021 07:44:41.051 zoneload: info: zone 167.171.217.88.in-addr.arpa/IN/internal: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/internal: loaded serial 42
06-Nov-2021 07:44:41.051 zoneload: info: zone tachtler.net/IN/internal: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone 167.171.217.88.in-addr.arpa/IN/external: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone localhost/IN/external: loaded serial 42
06-Nov-2021 07:44:41.051 zoneload: info: zone tachtler.net/IN/external: loaded serial 2021101101
06-Nov-2021 07:44:41.051 zoneload: info: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/external: loaded serial 42
06-Nov-2021 07:44:41.051 general: notice: all zones loaded
06-Nov-2021 07:44:41.051 general: notice: running

Lokale DNS-Abfrage

Ob der DNS-Server auch auf DNS-Anfragen auf dem lokalen loopback Interface lauscht bzw. diese Beantwortet, kann mit nachfolgendem Befehl Überprüft werden (Forward und Reverse lookup):

# dig @127.0.0.1 rechner10.intra.tachtler.net

; <<>> DiG 9.16.22 <<>> @127.0.0.1 rechner10.intra.tachtler.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25625
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: b727e7bfee9429d1cc6e995a61862c168de60064ac028860 (good)
;; QUESTION SECTION:
;rechner10.intra.tachtler.net.	IN	A

;; ANSWER SECTION:
rechner10.intra.tachtler.net. 10800 IN	A	192.168.0.10

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 08:17:42 CET 2021
;; MSG SIZE  rcvd: 101
# dig @127.0.0.1 -x 192.168.0.10

; <<>> DiG 9.16.22 <<>> @127.0.0.1 -x 192.168.0.10
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61162
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 56f4771af1e03bbafeb6de4f61862c4718388874893a59ac (good)
;; QUESTION SECTION:
;10.0.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
10.0.168.192.in-addr.arpa. 10800 IN	PTR	rechner10.intra.tachtler.net.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 08:18:31 CET 2021
;; MSG SIZE  rcvd: 124

DNSsec - Variante KSK & ZSK

DNSSEC gibt es bereits 1997 mit einer ersten Definition der Domain Name System Security Extensions (DNSsec) im RFC 4034. Diese Fassung funktionierte jedoch nur in kleinen Netzen; bei großen überforderte das geschwätzige Protokoll die Domain Name Server. Nach verschiedenen Überarbeitungen liegt seit März 2005 die aktuelle Version vor, bekannt auch unter der Bezeichnung DNSsec-bis.

Mit DNSsec signiert der Administrator einer Domain die Namenseinträge in seinem Nameserver kryptografisch.

Dafür werden zusätzliche Ressource Records angelegt, sodass DNSsec-Antworten länger sind als herkömmliche DNS-Antworten. Die zusätzlichen DNS-Records werden bei Anfragen als Bestandteile des DNS-Response versendet, sodass Empfänger zunächst prüfen können, ob der Response integer, also unverfälscht ist. Weil der Response auch ein Zertifikat enthält (einen signierten kryptografischen Schlüssel), kann der Empfänger in einem zweiten Schritt auch den Absender verifizieren und so feststellen, ob die im Paket enthaltene Information vertrauenswürdig ist.

Dazu kommen zwei verschiedene Typen von Schlüsseln zum Einsatz,

  • ein langen Key Signing Key von langer Lebensdauer (KSK)
  • ein kurzen Zone Signing Key von kurzer Lebensdauer (ZSK, zum Signieren der DNS-Records)

jeweils als privat und öffentlich Schlüssel erstellt.

Mithin hat eine Domain mindestens vier Schlüssel. Um den gleitenden Wechsel von einem abgelaufenen zu einem neuen Schlüssel zu gewährleisten, hat eine Domain in der Regel sogar mehrere Exemplare gleichzeitig, auch mehrere KSK (können sinnvoll sein, um unterschiedliche Signieralgorithmen nutzen zu können)

Wenn der Domain-Betreiber seinen aktuellen KSK dem Administrator der übergeordneten Domain bekannt gegeben hat, kann er mit diesem anschließend alle Schlüssel der eigenen Zone signieren und nutzen.

Alle anderen Daten der Zone werden mit dem aktuellen ZSK signiert. Neue ZSK kann man nach Gutdünken erzeugen und ohne Meldung gegenüber der Registry nutzen. Die übergeordnete Domain erkennt selbstständig, dass sie gültig sind, wenn man sie mit dem aktuellen KSK signiert hat, weil ihr dieser ja gemeldet worden ist. Ist ein Nameserver auf DNSsec umgestellt, liefert er ausschließlich signierte Antworten.

(Quelle: Heise.de - Artikel - Domain Name System absichern mit DNSsec)

Vorbereitung: KSK und ZSK

Zuerst ist es erforderlich nachfolgendes Verzeichnis anzulegen, welches den KSK (Key Signing Key) und den ZSK (Zone Signing Key) aufnehmen wird, was mit nachfolgendem Befehl durchgeführt werden kann:

# mkdir /var/named/keys

KSK (Key Signing Key)

Nachfolgende Befehle erstellen einen KSK (Key Signing Key) für die FORWARD - Zone - intra.tachtler.net:

# dnssec-keygen -K /var/named/keys -a ED25519 -f KSK -n ZONE intra.tachtler.net
Generating key pair.
Kintra.tachtler.net.+015+02340

und die REVERSE - Zone - 0.168.192.in-addr.arpa:

# dnssec-keygen -K /var/named/keys -a ED25519 -f KSK -n ZONE 0.168.192.in-addr.arpa
Generating key pair.
K0.168.192.in-addr.arpa.+015+64298

Nachfolgende Befehle erstellen einen KSK (Key Signing Key) für die FORWARD - Zone - tachtler.net:

# dnssec-keygen -K /var/named/keys -a ED25519 -f KSK -n ZONE tachtler.net
Generating key pair.
Ktachtler.net.+015+20289

und die REVERSE - Zone - 167.171.217.88.in-addr.arpa:

# dnssec-keygen -K /var/named/keys -a ED25519 -f KSK -n ZONE 167.171.217.88.in-addr.arpa
Generating key pair.
K167.171.217.88.in-addr.arpa.+015+59631

:!: HINWEIS - Dies muss für alle Zonen durchgeführt werden, welche mit DNSsec abgesichert werden sollen!

:!: HINWEIS - Je nachdem wie viel Entropie auf dem System vorhanden sind, kann die Erzeugung der Schlüsselpaare durchaus viel Zeit in Anspruch nehmen!

:!: HINWEIS - Um mehr „Entropien“ zur Beschleunigung der Generierung von Schlüsseln zur Verfügung zu haben, kann die Software Haveged installiert und als Daemon/Dienst gestartet werden.

Abschliessend ist es noch erforderlich, das der DNS-Server die privaten Schlüssel lesen kann, was durch Zuweisung der Besitzrechte an den privaten Schlüsseln erfolgen kann, da grundsätzlich die privaten Schlüssel nur durch den Besitzer der Datei gelesen werden können, was mit nachfolgendem Befehl realisiert werden kann:

# chown named:named /var/named/keys/*.private

ZSK (Zone Signing Key)

Nachfolgende Befehle erstellen einen ZSK (Zone Signing Key) für die FORWARD - Zone - intra.tachtler.net:

# dnssec-keygen -K /var/named/keys -a ED25519 -n ZONE intra.tachtler.net
Generating key pair.
Kintra.tachtler.net.+015+17796

und die REVERSE - Zone - 0.168.192.in-addr.arpa:

# dnssec-keygen -K /var/named/keys -a ED25519 -n ZONE 0.168.192.in-addr.arpa
Generating key pair.
K0.168.192.in-addr.arpa.+015+65325

Nachfolgende Befehle erstellen einen ZSK (Zone Signing Key) für die FORWARD - Zone - tachtler.net:

# dnssec-keygen -K /var/named/keys -a ED25519 -n ZONE tachtler.net
Generating key pair.
Ktachtler.net.+015+37463

und die REVERSE - Zone - 167.171.217.88.in-addr.arpa:

# dnssec-keygen -K /var/named/keys -a ED25519 -n ZONE 167.171.217.88.in-addr.arpa
Generating key pair.
K167.171.217.88.in-addr.arpa.+015+05640

:!: HINWEIS - Dies muss für alle Zonen durchgeführt werden, welche mit DNSsec abgesichert werden sollen!

:!: HINWEIS - Je nachdem wie viel Entropie auf dem System vorhanden sind, kann die Erzeugung der Schlüsselpaare durchaus viel Zeit in Anspruch nehmen!

:!: HINWEIS - Um mehr „Entropien“ zur Beschleunigung der Generierung von Schlüsseln zur Verfügung zu haben, kann die Software Haveged installiert und als Daemon/Dienst gestartet werden.

Abschliessend ist es noch erforderlich, das der DNS-Server die privaten Schlüssel lesen kann, was durch Zuweisung der Besitzrechte an den privaten Schlüsseln erfolgen kann, da grundsätzlich die privaten Schlüssel nur durch den Besitzer der Datei gelesen werden können, was mit nachfolgendem Befehl realisiert werden kann:

# chown named:named /var/named/keys/*.key

Überprüfung: Schlüssel

Mit nachfolgendem Befehl kann überprüft werden, ob die Schlüssel alle erstellt worden sind und die Ausgabe des nachfolgenden Befehls sollte in etwa wie folgt aussehen:

# ls -l /var/named/keys
total 64
-rw-r--r-- 1 named named 318 Nov  6 08:26 K0.168.192.in-addr.arpa.+015+64298.key
-rw------- 1 named named 179 Nov  6 08:26 K0.168.192.in-addr.arpa.+015+64298.private
-rw-r--r-- 1 named named 319 Nov  6 08:28 K0.168.192.in-addr.arpa.+015+65325.key
-rw------- 1 named named 179 Nov  6 08:28 K0.168.192.in-addr.arpa.+015+65325.private
-rw-r--r-- 1 named named 320 Nov  6 08:28 K167.171.217.88.in-addr.arpa.+015+05640.key
-rw------- 1 named named 179 Nov  6 08:28 K167.171.217.88.in-addr.arpa.+015+05640.private
-rw-r--r-- 1 named named 320 Nov  6 08:27 K167.171.217.88.in-addr.arpa.+015+59631.key
-rw------- 1 named named 179 Nov  6 08:27 K167.171.217.88.in-addr.arpa.+015+59631.private
-rw-r--r-- 1 named named 309 Nov  6 08:25 Kintra.tachtler.net.+015+02340.key
-rw------- 1 named named 179 Nov  6 08:25 Kintra.tachtler.net.+015+02340.private
-rw-r--r-- 1 named named 311 Nov  6 08:27 Kintra.tachtler.net.+015+17796.key
-rw------- 1 named named 179 Nov  6 08:27 Kintra.tachtler.net.+015+17796.private
-rw-r--r-- 1 named named 298 Nov  6 08:26 Ktachtler.net.+015+20289.key
-rw------- 1 named named 179 Nov  6 08:26 Ktachtler.net.+015+20289.private
-rw-r--r-- 1 named named 299 Nov  6 08:28 Ktachtler.net.+015+37463.key
-rw------- 1 named named 179 Nov  6 08:28 Ktachtler.net.+015+37463.private

Eine einfache Art um herauszufinden, welcher Schlüssel nun welcher ist

  • KSK (Key signing key)
  • ZSK (Zone signing key)

können nachfolgende Befehle genutzt werden, welche auf Dateiebene agieren:

KSK:

# grep key-signing /var/named/keys/*
/var/named/keys/K0.168.192.in-addr.arpa.+015+64298.key:; This is a key-signing key, keyid 64298, for 0.168.192.in-addr.arpa.
/var/named/keys/K167.171.217.88.in-addr.arpa.+015+59631.key:; This is a key-signing key, keyid 59631, for 167.171.217.88.in-addr.arpa.
/var/named/keys/Kintra.tachtler.net.+015+02340.key:; This is a key-signing key, keyid 2340, for intra.tachtler.net.
/var/named/keys/Ktachtler.net.+015+20289.key:; This is a key-signing key, keyid 20289, for tachtler.net.

und

ZSK:

# grep zone-signing /var/named/keys/*
/var/named/keys/K0.168.192.in-addr.arpa.+015+65325.key:; This is a zone-signing key, keyid 65325, for 0.168.192.in-addr.arpa.
/var/named/keys/K167.171.217.88.in-addr.arpa.+015+05640.key:; This is a zone-signing key, keyid 5640, for 167.171.217.88.in-addr.arpa.
/var/named/keys/Kintra.tachtler.net.+015+17796.key:; This is a zone-signing key, keyid 17796, for intra.tachtler.net.
/var/named/keys/Ktachtler.net.+015+37463.key:; This is a zone-signing key, keyid 37463, for tachtler.net.

DNSSec KSK und ZSK: /etc/named.conf

Es gibt die Möglichkeit den DNS-Server ISC (Internet System Consortium) so zu konfigurieren, das dieser die DNSsec Verwaltung voll automatisch übernimmt.

Dafür gibt es die Option

  • auto-dnssec

welche zwei mögliche Einstellungen haben kann:

  • allow
  • maintain

Bei der Einstellung allow wird der DNS-Server ISC (Internet System Consortium) das angegeben Schlüssel-Verzeichnis durchsuchen um die passenden Schlüssel zu finden und diese zur Zone hinzufügen um diese dann anschließend auch zu signieren. Dies geschieht allerdings nur, wenn der Befehl rndc sign <Zonemname> manuell abgesetzt wird.

Bei der Einstellung maintain wird der DNS-Server ISC (Internet System Consortium) alle Funktionalitäten wie bei der Einstellung allow durchführen, jedoch ohne das manuelle Anstoßen des entsprechenden Befehls, sondern vollkommen automatisiert die Schlüsselverwaltung selbst durchführen.

Nachfolgende Anpassungen der Konfigurationsdatei /etc/named.conf müssen durchgeführt werden um DNSsec voll automatisiert durch den DNS-Server ISC (Internet System Consortium) einzurichten.

Nachfolgende drei Konfigurationszeilen müssen bei der jeweiligen Zonen-Definition hinzugefügt werden:

...
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
...

:!: HINWEIS - Der DNS-Server ISC (Internet System Consortium) wird nach den entsprechenden Schlüsseln unter dem angegeben Pfad selbständig suchen!

Nachfolgend die Konfigurationsdatei mit den durchgeführten Anpassungen, welche von den Standardeinstellungen abweichen bzw. explizit gesetzt wurden, auch wenn diese den Standardeinstellungen entsprechen (komplette Konfigurationsdatei):

# egrep -v '(.*//|.*/\*|.*\*/|.*\{\%|.*\%\}|^$)' /etc/named.conf
acl primary_v4 {
	192.168.0.20;
};
acl interfaces_v4 {
	192.168.0.20;
	127.0.0.1;
};
acl home_v4 {
	192.168.0.0/24;
};
acl home_v6 {
	fd00:0:0:192::/64;
};
controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "tachtler.net-key"; };
};
include "//etc/rndc.key";
logging {
	channel default_log {
		file "/var/log/named/default" versions 4 size 20m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel auth_servers_log {
		file "/var/log/named/auth_servers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnssec_log {
		file "/var/log/named/dnssec" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel zone_transfers_log {
		file "/var/log/named/zone_transfers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel ddns_log {
		file "/var/log/named/ddns" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel client_security_log {
		file "/var/log/named/client_security" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rate_limiting_log {
		file "/var/log/named/rate_limiting" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rpz_log {
 		file "/var/log/named/rpz" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnstap_log {
		file "/var/log/named/dnstap" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel queries_log {
		file "/var/log/named/queries" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel query-errors_log {
		file "/var/log/named/query-errors" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity dynamic;
	};
	channel default_syslog {
		print-time yes;
		print-category yes;
		print-severity yes;
		syslog daemon;
		severity info;
	};
	channel default_debug {
		print-time yes;
		print-category yes;
		print-severity yes;
		file "/var/log/named/named.run";
		severity dynamic;
	};
	category default { default_syslog; default_debug; default_log; };
	category config { default_syslog; default_debug; default_log; };
	category dispatch { default_syslog; default_debug; default_log; };
	category network { default_syslog; default_debug; default_log; };
	category general { default_syslog; default_debug; default_log; };
	category zoneload { default_syslog; default_debug; default_log; };
	category resolver { auth_servers_log; default_debug; };       
	category cname { auth_servers_log; default_debug; };       
	category delegation-only { auth_servers_log; default_debug; };
	category edns-disabled { auth_servers_log; default_debug; };
	category dnssec { dnssec_log; default_debug; };
	category notify { zone_transfers_log; default_debug; };       
	category xfer-in { zone_transfers_log; default_debug; };       
	category xfer-out { zone_transfers_log; default_debug; };
	category update{ ddns_log; default_debug; };
	category update-security { ddns_log; default_debug; };
	category client{ client_security_log; default_debug; };       
	category security { client_security_log; default_debug; };
	category rate-limit { rate_limiting_log; default_debug; };       
	category spill { rate_limiting_log; default_debug; };       
	category database { rate_limiting_log; default_debug; };
	category rpz { rpz_log; default_debug; };
	category dnstap { dnstap_log; default_debug; };
	category queries { queries_log; };
	category query-errors { query-errors_log; };
};
options {
    directory "/var/named";
	geoip-directory none;
	key-directory "/var/named/keys";
	managed-keys-directory "/var/named/managedkeys";
	new-zones-directory "/var/named/zones";
	dump-file "/var/named/data/named_dump.db";
	memstatistics-file "/var/named/data/named.memstats";
	pid-file "/var/run/named/named.pid"; 
	recursing-file "/var/named/data/named.recursing";
	statistics-file "/var/named/data/named.stats";
	bindkeys-file "/etc/bind.keys";
	secroots-file "/var/named/data/named.secroots";
	session-keyalg hmac-sha512;	
	session-keyfile "/var/run/named/session.key";
	port 53;
	dnssec-update-mode maintain;
	allow-new-zones no;
	memstatistics yes;
	recursion yes;
	cookie-algorithm aes;
	auto-dnssec off;
	dnssec-validation yes;
	querylog no;
	check-names primary warn;
	allow-notify {
		localhost;
		primary_v4;
	};
	allow-query {
		localhost; localnets;
		home_v4;
	};
	allow-query-on {
		localhost;
		primary_v4;
	};
	allow-query-cache {
		localhost; localnets;
		home_v4;
	};
	allow-query-cache-on {
		localhost; localnets;
		home_v4;
	};
	allow-recursion {
		localhost; localnets;
		home_v4;
	};
	allow-recursion-on {
		localhost;
		primary_v4;
	};
	allow-update { none; };
	allow-update-forwarding { none; };
	allow-transfer {
		localhost;
		primary_v4;
	};
	listen-on port 53 { interfaces_v4; };
	query-source address * port *;
	max-cache-size 60%;
	lame-ttl 0;
	max-rsa-exponent-size 4096;
	version none;
	hostname none;
	server-id none;
};
statistics-channels {
	inet 192.168.0.20 port 80 allow {
		primary_v4; interfaces_v4; home_v4;
	};
};
view "internal" IN {
	match-clients {
		localhost; localnets;
		home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "intra.tachtler.net" IN {
		type master;
		file "zones/intra.tachtler.net.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
	zone "0.168.192.in-addr.arpa" IN {
		type master;
		file "zones/0.168.192.in-addr.arpa.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
};
view "external" IN {
	match-clients {
		localhost; localnets;
		!home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
                inline-signing yes;
                auto-dnssec maintain;
                key-directory "keys";
	};
};

DNSSec KSK und ZSK: Überprüfung

Mit nachfolgendem Befehl kann die syntaktische Richtigkeit der Konfigurationsdatei:

  • /etc/named.conf

durchgeführt werden und sollte keine Meldungen ausgeben, wenn die Konfigurationsdatei syntaktische richtig ist:

# named-checkconf -l -z
localhost IN internal master
0.0.127.in-addr.arpa IN internal master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN internal master
. IN internal hint
intra.tachtler.net IN internal master
0.168.192.in-addr.arpa IN internal master
tachtler.net IN internal master
167.171.217.88.in-addr.arpa IN internal master
localhost IN external master
0.0.127.in-addr.arpa IN external master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN external master
. IN external hint
tachtler.net IN external master
167.171.217.88.in-addr.arpa IN external master

DNSSec KSK und ZSK: Neustart

Falls die Basis-Konfiguration wie oben beschrieben durchgeführt wurde, sollte dem einem Neustart nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:

# systemctl restart named.service

Überprüfung KSK und ZSK: DNSsec

Folgende Abfrage sollte nun eine Ausgabe in etwa wie die nachfolgende zur Anzeige bringen:

# dig @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi

; <<>> DiG 9.16.22 <<>> @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24845
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: b10d9e1a661160640ec2507361862a83837599e81881e456 (good)
;; QUESTION SECTION:
;rechner10.intra.tachtler.net. IN A

;; ANSWER SECTION:
rechner10.intra.tachtler.net. 10800 IN A 192.168.0.10
rechner10.intra.tachtler.net. 10800 IN RRSIG A 15 4 10800 (
				20211202050313 20211106052028 39346 intra.tachtler.net.
				zpqCUFTa3WYbG1Gkmzt4fDvFBKS7E+Hg7NUQebmqr7+i
				2iF7ckWtH+REwMuELsQn9qDP4UIHloexp3K+GcHVAQ== )

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 08:10:59 CET 2021
;; MSG SIZE  rcvd: 215

:!: HINWEIS - Das Flag: ad ist bei Authoritativen DNS-Servern NICHT gesetzt! Nur bei rekursiven „resolvern“ ist das Flag: ad gesetzt, da nur diese die „Kette des Vertrauens“ abfragen und auflösen können!

Eine erweitere Ansicht kann durch Änderung nachfolgender Option erzeugt werden:

	// This option controls the addition of records to the authority and
	// additional sections of responses. The default is no-auth-recursive.
	minimal-responses no;

Nachfolgende Optionen sind möglich:

  • no

Der Server ist bei der Erstellung von Antworten so vollständig wie möglich.

  • yes

Der Server fügt nur dann Datensätze zu den Autoritäts- und Zusatzabschnitten hinzu, wenn solche Datensätze vom DNS-Protokoll verlangt werden (z. B. bei der Rückgabe von Delegationen oder negativen Antworten). Dies bietet die beste Serverleistung, kann aber zu mehr Client-Abfragen führen.

  • no-auth

Der Server lässt Datensätze aus dem „Authority“-Abschnitt weg, es sei denn, sie sind erforderlich, aber er kann trotzdem Datensätze zum „Additional“-Abschnitt hinzufügen.

  • no-auth-recursive

Wie no-auth, wenn in der Anfrage eine Rekursion verlangt wird (RD=1), oder dasselbe wie no, wenn keine Rekursion verlangt wird.

# dig @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi

; <<>> DiG 9.16.22 <<>> @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28738
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: 7d92298e0439251c33fe557b61862d2f0384b3cf818107cb (good)
;; QUESTION SECTION:
;rechner10.intra.tachtler.net. IN A

;; ANSWER SECTION:
rechner10.intra.tachtler.net. 10800 IN A 192.168.0.10
rechner10.intra.tachtler.net. 10800 IN RRSIG A 15 4 10800 (
				20211202050313 20211106052028 39346 intra.tachtler.net.
				zpqCUFTa3WYbG1Gkmzt4fDvFBKS7E+Hg7NUQebmqr7+i
				2iF7ckWtH+REwMuELsQn9qDP4UIHloexp3K+GcHVAQ== )

;; AUTHORITY SECTION:
intra.tachtler.net.	10800 IN NS ns1.intra.tachtler.net.
intra.tachtler.net.	10800 IN RRSIG NS 15 3 10800 (
				20211202050313 20211106052028 39346 intra.tachtler.net.
				tpV4dhMTi7dcwkG1KO4bV1rAZGj4LEh9W6cbVWKYqlVw
				NZre2Z+HhPOvMLG9rM2kjN2YdzRkSXbRey+EgZ9VDQ== )

;; ADDITIONAL SECTION:
ns1.intra.tachtler.net.	10800 IN A 192.168.0.20
ns1.intra.tachtler.net.	10800 IN RRSIG A 15 4 10800 (
				20211202050313 20211106052028 39346 intra.tachtler.net.
				QtPeaMy8d9882OXsrclMfEEQfiynpCzwnZ9ZqTzq75cD
				Nc/YTvM0mDP0pedOKnLshUcyMk2iNIVIJZwQRigTAw== )

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 08:22:23 CET 2021
;; MSG SIZE  rcvd: 477

Nachfolgende Abfrage bringt den DNSKEY zum Vorschein:

# dig @127.0.0.1 +cd +multi intra.tachtler.net dnskey

; <<>> DiG 9.16.22 <<>> @127.0.0.1 +cd +multi intra.tachtler.net dnskey
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7331
;; flags: qr aa rd ra cd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: cd9efc3bda1f13ad3e7e7c5661862dfd807565099769a475 (good)
;; QUESTION SECTION:
;intra.tachtler.net.	IN DNSKEY

;; ANSWER SECTION:
intra.tachtler.net.	10800 IN DNSKEY	256 3 15 (
				qgk5XFfcaRLuKn3EFZLOsaxcpVN/epd+SZ7JAmoDu80=
				) ; ZSK; alg = ED25519 ; key id = 39346
intra.tachtler.net.	10800 IN DNSKEY	257 3 15 (
				kmpgi1a8aVROY2pieFAgf/pTf60VvsrF03YuTtZPi8U=
				) ; KSK; alg = ED25519 ; key id = 50955

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 08:25:49 CET 2021
;; MSG SIZE  rcvd: 171

:!: HINWEIS - Eine Abfrage kann nur auf eine Zone erfolgen, nicht auf einen einzelnen DNS-Eintrag.

DNSsec - Variante CSK

:!: HINWEIS - Ab ISC BIND Version 9.16 verfügbar!

DNSSEC gibt es bereits 1997 mit einer ersten Definition der Domain Name System Security Extensions (DNSsec) im RFC 4034. Diese Fassung funktionierte jedoch nur in kleinen Netzen; bei großen überforderte das geschwätzige Protokoll die Domain Name Server. Nach verschiedenen Überarbeitungen liegt seit März 2005 die aktuelle Version vor, bekannt auch unter der Bezeichnung DNSsec-bis.

Mit DNSsec signiert der Administrator einer Domain die Namenseinträge in seinem Nameserver kryptografisch.

Dafür werden zusätzliche Ressource Records angelegt, sodass DNSsec-Antworten länger sind als herkömmliche DNS-Antworten. Die zusätzlichen DNS-Records werden bei Anfragen als Bestandteile des DNS-Response versendet, sodass Empfänger zunächst prüfen können, ob der Response integer, also unverfälscht ist. Weil der Response auch ein Zertifikat enthält (einen signierten kryptografischen Schlüssel), kann der Empfänger in einem zweiten Schritt auch den Absender verifizieren und so feststellen, ob die im Paket enthaltene Information vertrauenswürdig ist.

Mit ISC BIND ab Version 9.16 wurde eine neue Methode zur Aufrechterhaltung von DNSsec für Ihre Zonen eingeführt. Zusätzlich zu den Konfigurationsoptionen inline-signing und auto-dnssec gibt es jetzt dnssec-policy.

Mit dnssec-policy können Sie eine Key and Signing Policy (KASP) angeben und alle KASP-bezogenen Konfigurationen gruppieren, wodurch Ihre benannte Konfiguration in Bezug auf DNSsec intuitiver wird und es einfacher wird, DNSsec für Ihre Zonen zu aktivieren.

Dazu kommt nur noch ein Typ von Schlüsseln zum Einsatz,

  • ein Combined Signing Key (CSK) zur Weitergabe als DS-Record und zum Signieren der DNS-Records

als privat und öffentlich Schlüssel erstellt.

Mithin hat eine Domain somit nur noch mindestens zwei Schlüssel. Um den gleitenden Wechsel von einem abgelaufenen zu einem neuen Schlüssel zu gewährleisten, hat eine Domain in der Regel sogar mehrere Exemplare gleichzeitig, auch mehrere CSK (können sinnvoll sein, um unterschiedliche Signieralgorithmen nutzen zu können)

Wenn der Domain-Betreiber seinen aktuellen CSK dem Administrator der übergeordneten Domain bekannt gegeben hat, kann er mit diesem anschließend alle Schlüssel der eigenen Zone signieren und nutzen.

Alle anderen Daten der Zone werden ebenfalls mit dem CSK signiert. Ist ein Nameserver auf DNSsec umgestellt, liefert er ausschließlich signierte Antworten.

(Quelle: isc.org - Knowledgebase - DNSSEC Key and Signing Policy)

Vorbereitung: CSK

Die standardmässige DNSsec-Policy, welche unter dem Namen „default“ vorhanden ist, hat den Nachteil, das „nurNSEC und nicht NSEC3 zur Konfiguration von nicht existierenden DNS-Einträgen verwendet wird.

Deshalb soll die dnssec-policy wie folgt abgeändert werden, was auch die Vergabe eines eigenen Namens bedingt.

Die Vergabe und Konfiguration eine eigenen dnssec-policy erfolgt in der Konfigurationsdatei

  • /etc/named.conf

und kann wie folgt aussehen:

(Nur relevanter Ausschnitt)

dnssec-policy "defaultnsec3" {
    keys {
         csk key-directory lifetime unlimited algorithm ecdsa256;
    };
    nsec3param iterations 1 optout false salt-length 16;
 
    // Key timings
    dnskey-ttl PT1H;
    publish-safety PT1H;
    retire-safety PT1H;
    purge-keys P90D;
 
    // Signature timings
    signatures-refresh P5D;
    signatures-validity P14D;
    signatures-validity-dnskey P14D;
 
    // Zone parameters
    max-zone-ttl P1D;
    zone-propagation-delay PT5M;
    parent-ds-ttl P1D;
    parent-propagation-delay PT1H;
};

Erklärungen:

  • nsec3param iterations 1 optout false salt-length 16;

Dies ist die einzige Änderung bzw. Ergänzung zum dnssec-policy - „default“, die Ergänzung des nsec3param. Die Optionen des nsec3param lauten wie folgt:

  • Interationen bei der Erstellung
  • Anzeige der Ausgabe
  • „Salt“ zur Zufallsgenerierung

DNSSec CSK: /etc/named.conf

Es gibt die Möglichkeit den DNS-Server ISC (Internet System Consortium) so zu konfigurieren, das dieser die DNSsec Verwaltung voll automatisch übernimmt.

Dafür gibt es die Option

  • dnssec-policy

Bei der Einstellung dnssec-policy muss noch die entsprechende zu verwendende Policy als Parameter definiert werden, so dass der DNS-Server ISC (Internet System Consortium) das angegeben Schlüssel-Verzeichnis durchsucht um die passenden Schlüssel zu finden, oder diese automatisch erstellt, falls diese nicht vorhanden sein sollten und diese zur Zone hinzufügen um diese dann anschließend auch zu signieren vollkommen automatisiert.

Nachfolgende Anpassungen der Konfigurationsdatei /etc/named.conf müssen durchgeführt werden um DNSsec voll automatisiert durch den DNS-Server ISC (Internet System Consortium) einzurichten.

Nachfolgende drei Konfigurationszeilen müssen bei der jeweiligen Zonen-Definition hinzugefügt werden:

...
                dnssec-policy defaultnsec3;
...

:!: HINWEIS - Der DNS-Server ISC (Internet System Consortium) wird nach den entsprechenden Schlüsseln unter dem angegeben Pfad selbständig suchen!

Nachfolgend die Konfigurationsdatei mit den durchgeführten Anpassungen, welche von den Standardeinstellungen abweichen bzw. explizit gesetzt wurden, auch wenn diese den Standardeinstellungen entsprechen (komplette Konfigurationsdatei):

# egrep -v '(.*//|.*/\*|.*\*/|.*\{\%|.*\%\}|^$)' /etc/named.conf
acl primary_v4 {
	192.168.0.20;
};
acl interfaces_v4 {
	192.168.0.20;
	127.0.0.1;
};
acl home_v4 {
	192.168.0.0/24;
};
acl home_v6 {
	fd00:0:0:192::/64;
};
controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "tachtler.net-key"; };
};
include "//etc/rndc.key";
logging {
	channel default_log {
		file "/var/log/named/default" versions 4 size 20m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel auth_servers_log {
		file "/var/log/named/auth_servers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnssec_log {
		file "/var/log/named/dnssec" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel zone_transfers_log {
		file "/var/log/named/zone_transfers" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel ddns_log {
		file "/var/log/named/ddns" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel client_security_log {
		file "/var/log/named/client_security" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rate_limiting_log {
		file "/var/log/named/rate_limiting" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel rpz_log {
 		file "/var/log/named/rpz" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel dnstap_log {
		file "/var/log/named/dnstap" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel queries_log {
		file "/var/log/named/queries" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity info;
	};
	channel query-errors_log {
		file "/var/log/named/query-errors" versions 4 size 2m;
		print-time yes;
		print-category yes;
		print-severity yes;
		severity dynamic;
	};
	channel default_syslog {
		print-time yes;
		print-category yes;
		print-severity yes;
		syslog daemon;
		severity info;
	};
	channel default_debug {
		print-time yes;
		print-category yes;
		print-severity yes;
		file "/var/log/named/named.run";
		severity dynamic;
	};
	category default { default_syslog; default_debug; default_log; };
	category config { default_syslog; default_debug; default_log; };
	category dispatch { default_syslog; default_debug; default_log; };
	category network { default_syslog; default_debug; default_log; };
	category general { default_syslog; default_debug; default_log; };
	category zoneload { default_syslog; default_debug; default_log; };
	category resolver { auth_servers_log; default_debug; };       
	category cname { auth_servers_log; default_debug; };       
	category delegation-only { auth_servers_log; default_debug; };
	category edns-disabled { auth_servers_log; default_debug; };
	category dnssec { dnssec_log; default_debug; };
	category notify { zone_transfers_log; default_debug; };       
	category xfer-in { zone_transfers_log; default_debug; };       
	category xfer-out { zone_transfers_log; default_debug; };
	category update{ ddns_log; default_debug; };
	category update-security { ddns_log; default_debug; };
	category client{ client_security_log; default_debug; };       
	category security { client_security_log; default_debug; };
	category rate-limit { rate_limiting_log; default_debug; };       
	category spill { rate_limiting_log; default_debug; };       
	category database { rate_limiting_log; default_debug; };
	category rpz { rpz_log; default_debug; };
	category dnstap { dnstap_log; default_debug; };
	category queries { queries_log; };
	category query-errors { query-errors_log; };
};
options {
    directory "/var/named";
	geoip-directory none;
	key-directory "/var/named/keys";
	managed-keys-directory "/var/named/managedkeys";
	new-zones-directory "/var/named/zones";
	dump-file "/var/named/data/named_dump.db";
	memstatistics-file "/var/named/data/named.memstats";
	pid-file "/var/run/named/named.pid"; 
	recursing-file "/var/named/data/named.recursing";
	statistics-file "/var/named/data/named.stats";
	bindkeys-file "/etc/bind.keys";
	secroots-file "/var/named/data/named.secroots";
	session-keyalg hmac-sha512;	
	session-keyfile "/var/run/named/session.key";
	port 53;
	dnssec-update-mode maintain;
	allow-new-zones no;
	memstatistics yes;
	recursion yes;
	cookie-algorithm aes;
	auto-dnssec off;
	dnssec-validation yes;
	querylog no;
	check-names primary warn;
	allow-notify {
		localhost;
		primary_v4;
	};
	allow-query {
		localhost; localnets;
		home_v4;
	};
	allow-query-on {
		localhost;
		primary_v4;
	};
	allow-query-cache {
		localhost; localnets;
		home_v4;
	};
	allow-query-cache-on {
		localhost; localnets;
		home_v4;
	};
	allow-recursion {
		localhost; localnets;
		home_v4;
	};
	allow-recursion-on {
		localhost;
		primary_v4;
	};
	allow-update { none; };
	allow-update-forwarding { none; };
	allow-transfer {
		localhost;
		primary_v4;
	};
	listen-on port 53 { interfaces_v4; };
	query-source address * port *;
	max-cache-size 60%;
	lame-ttl 0;
	max-rsa-exponent-size 4096;
	version none;
	hostname none;
	server-id none;
};
statistics-channels {
	inet 192.168.0.20 port 80 allow {
		primary_v4; interfaces_v4; home_v4;
	};
};
view "internal" IN {
	match-clients {
		localhost; localnets;
		home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "intra.tachtler.net" IN {
		type master;
		file "zones/intra.tachtler.net.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
	zone "0.168.192.in-addr.arpa" IN {
		type master;
		file "zones/0.168.192.in-addr.arpa.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
};
view "external" IN {
	match-clients {
		localhost; localnets;
		!home_v4;
	};
	zone "localhost" IN {
		type master;
		file "localhost.zone";
	};
	zone "0.0.127.in-addr.arpa" IN {
		type master;
		file "127.0.0.zone";
	};
	zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
		type master;
		file "localhost.ip6.zone";
	};
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "tachtler.net" IN {
		type master;
		file "zones/tachtler.net.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
	zone "167.171.217.88.in-addr.arpa" IN {
		type master;
		file "zones/167.171.217.88.in-addr.arpa.zone";
		dnssec-policy defaultnsec3;
                key-directory "keys";
	};
};

DNSSec CSK: Überprüfung

Mit nachfolgendem Befehl kann die syntaktische Richtigkeit der Konfigurationsdatei:

  • /etc/named.conf

durchgeführt werden und sollte keine Meldungen ausgeben, wenn die Konfigurationsdatei syntaktische richtig ist:

# named-checkconf -l -z
localhost IN internal master
0.0.127.in-addr.arpa IN internal master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN internal master
. IN internal hint
intra.tachtler.net IN internal master
0.168.192.in-addr.arpa IN internal master
tachtler.net IN internal master
167.171.217.88.in-addr.arpa IN internal master
localhost IN external master
0.0.127.in-addr.arpa IN external master
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa IN external master
. IN external hint
tachtler.net IN external master
167.171.217.88.in-addr.arpa IN external master

DNSSec CSK: Neustart

Falls die Basis-Konfiguration wie oben beschrieben durchgeführt wurde, sollte dem einem Neustart nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:

# systemctl restart named.service

DNSSec CSK: Schlüsselerstellung

Nachdem kein Schlüsselmaterial erstellt worden ist, erscheinen nachfolgende Fehlermeldungen beim ersten Start im Log, welches mit nachfolgendem Befehl durchsucht werden kann:

Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.611 general: error: zone intra.tachtler.net/
IN/internal: could not get zone keys for secure dynamic update
Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.621 general: error: zone 0.168.192.in-addr.arpa/
IN/internal: could not get zone keys for secure dynamic update
Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.631 general: error: zone tachtler.net/
IN/internal: could not get zone keys for secure dynamic update
Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.641 general: error: zone tachtler.net/
IN/external: could not get zone keys for secure dynamic update
Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.641 general: error: zone 167.171.217.88.in-
addr.arpa/IN/internal: could not get zone keys for secure dynamic update
Jun 17 14:27:58 vml020 named[2832]: 17-Jun-2022 18:27:58.651 general: error: zone 167.171.217.88.in-
addr.arpa/IN/external: could not get zone keys for secure dynamic update

Dies ist nur das Ergebnis der Feststellung, das kein Schlüsselmaterial vorhanden ist und ISC BIND sich um die Schlüsselerstellung selbst noch kümmern muss.

Das Ergebnis der automatischen Schlüsselerstellung kann durch Auflistung des Verzeichnisses:

  • /var/named/keys

überprüft werden uns sollte verschiedenes Schlüsselmaterial in etwa wie folgt zur Anzeige bringen:

# ls -l /var/named/keys
total 48
-rw-r--r-- 1 named named 425 Jun 17 18:27 K0.168.192.in-addr.arpa.+013+21339.key
-rw------- 1 named named 215 Jun 17 18:27 K0.168.192.in-addr.arpa.+013+21339.private
-rw-r--r-- 1 named named 653 Jun 17 18:27 K0.168.192.in-addr.arpa.+013+21339.state
-rw-r--r-- 1 named named 435 Jun 17 18:27 K167.171.217.88.in-addr.arpa.+013+16299.key
-rw------- 1 named named 215 Jun 17 18:27 K167.171.217.88.in-addr.arpa.+013+16299.private
-rw-r--r-- 1 named named 658 Jun 17 18:27 K167.171.217.88.in-addr.arpa.+013+16299.state
-rw-r--r-- 1 named named 417 Jun 17 18:27 Kintra.tachtler.net.+013+42607.key
-rw------- 1 named named 215 Jun 17 18:27 Kintra.tachtler.net.+013+42607.private
-rw-r--r-- 1 named named 649 Jun 17 18:27 Kintra.tachtler.net.+013+42607.state
-rw-r--r-- 1 named named 405 Jun 17 18:27 Ktachtler.net.+013+15659.key
-rw------- 1 named named 215 Jun 17 18:27 Ktachtler.net.+013+15659.private
-rw-r--r-- 1 named named 643 Jun 17 18:27 Ktachtler.net.+013+15659.state

Überprüfung CSK: DNSsec

Folgende Abfrage sollte nun eine Ausgabe in etwa wie die nachfolgende zur Anzeige bringen:

# dig @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi

; <<>> DiG 9.18.3 <<>> @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26205
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: c15dc5b0231f0a5d7f46930b62ac764403fd2807928addb2 (good)
;; QUESTION SECTION:
;rechner10.intra.tachtler.net. IN A

;; ANSWER SECTION:
rechner10.intra.tachtler.net. 10800 IN A 192.168.0.10
rechner10.intra.tachtler.net. 10800 IN RRSIG A 13 4 10800 (
				20220626045317 20220617112758 42607 intra.tachtler.net.
				q6rSagtdy9bb69ED/ngjyRVgf7mTwAKx6lzjUZ/QhtlB
				fqAgkDgeV7I+K+4NfUW+Y+LAaSHNwAtPoLwqstLuoQ== )

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Jun 17 18:40:36 CEST 2022
;; MSG SIZE  rcvd: 215

:!: HINWEIS - Das Flag: ad ist bei Authoritativen DNS-Servern NICHT gesetzt! Nur bei rekursiven „resolvern“ ist das Flag: ad gesetzt, da nur diese die „Kette des Vertrauens“ abfragen und auflösen können!

Eine erweitere Ansicht kann durch Änderung nachfolgender Option erzeugt werden:

	// This option controls the addition of records to the authority and
	// additional sections of responses. The default is no-auth-recursive.
	minimal-responses no;

Nachfolgende Optionen sind möglich:

  • no

Der Server ist bei der Erstellung von Antworten so vollständig wie möglich.

  • yes

Der Server fügt nur dann Datensätze zu den Autoritäts- und Zusatzabschnitten hinzu, wenn solche Datensätze vom DNS-Protokoll verlangt werden (z. B. bei der Rückgabe von Delegationen oder negativen Antworten). Dies bietet die beste Serverleistung, kann aber zu mehr Client-Abfragen führen.

  • no-auth

Der Server lässt Datensätze aus dem „Authority“-Abschnitt weg, es sei denn, sie sind erforderlich, aber er kann trotzdem Datensätze zum „Additional“-Abschnitt hinzufügen.

  • no-auth-recursive

Wie no-auth, wenn in der Anfrage eine Rekursion verlangt wird (RD=1), oder dasselbe wie no, wenn keine Rekursion verlangt wird.

# dig @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi

; <<>> DiG 9.18.3 <<>> @127.0.0.1 rechner10.intra.tachtler.net +dnssec +multi
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10575
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
; COOKIE: 6e4a0a4e229380d7c64f7fae62ac76e0189e8716e37022f0 (good)
;; QUESTION SECTION:
;rechner10.intra.tachtler.net. IN A

;; ANSWER SECTION:
rechner10.intra.tachtler.net. 10800 IN A 192.168.0.10
rechner10.intra.tachtler.net. 10800 IN RRSIG A 13 4 10800 (
				20220626045317 20220617112758 42607 intra.tachtler.net.
				q6rSagtdy9bb69ED/ngjyRVgf7mTwAKx6lzjUZ/QhtlB
				fqAgkDgeV7I+K+4NfUW+Y+LAaSHNwAtPoLwqstLuoQ== )

;; AUTHORITY SECTION:
intra.tachtler.net.	10800 IN NS ns1.intra.tachtler.net.
intra.tachtler.net.	10800 IN RRSIG NS 13 3 10800 (
				20220626045317 20220617112758 42607 intra.tachtler.net.
				7AzDTZE5JcJ+RCu6S8bq4OSuk4HEgdht5yM+0841oC+b
				fOaZ8aVSVzG+Dmp744YsOJmFRSJ18HAGJmlGkJ/eww== )

;; ADDITIONAL SECTION:
ns1.intra.tachtler.net.	10800 IN A 192.168.0.20
ns1.intra.tachtler.net.	10800 IN RRSIG A 13 4 10800 (
				20220626045317 20220617112758 42607 intra.tachtler.net.
				0dBJWwufYcPPMiphUhF3hOQxBRABxfuRpJtHMZMgftBp
				9+ucj7ksGtVguiekxPdvUy9ekxqKkN0QdDlh1IHb0A== )

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Jun 17 18:43:12 CEST 2022
;; MSG SIZE  rcvd: 477

Nachfolgende Abfrage bringt den DNSKEY zum Vorschein:

# dig @127.0.0.1 +cd +multi intra.tachtler.net dnskey

; <<>> DiG 9.18.3 <<>> @127.0.0.1 +cd +multi intra.tachtler.net dnskey
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59227
;; flags: qr aa rd ra cd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 159da8d05abb887dc1ed847562ac77046457c9a3b5751b4f (good)
;; QUESTION SECTION:
;intra.tachtler.net.	IN DNSKEY

;; ANSWER SECTION:
intra.tachtler.net.	3600 IN	DNSKEY 257 3 13 (
				cwuwXubEW8if4s/vo/2jdWhGolvHBVFr2i4fNkEHlyx6
				dObg3GD3KN+KQLkRQE5QMxcP86il8GWWGeEYIv1lfw==
				) ; KSK; alg = ECDSAP256SHA256 ; key id = 42607

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Jun 17 14:43:48 CEST 2022
;; MSG SIZE  rcvd: 155

:!: HINWEIS - Eine Abfrage kann nur auf eine Zone erfolgen, nicht auf einen einzelnen DNS-Eintrag.

Manuelle Zone-Datei Updates

Wenn sowohl DNSSec als auch dynamische Updates aktiviert sind, funktioniert das Aktualisieren von Zonendaten/Zonendateien genauso wie bei herkömmlichem (unsicheren) DNS-Server, jedoch mit einer kleinen Einschränkung.

Sollen die Zonendaten/Zonendateien eines dynamischen DNS-Servers im laufenden Betrieb editiert werden, führt dies beim nächsten Start des named zu der Fehlermeldung

  • journal rollforward failed: journal out of sync with zone

und die Änderungen an den Zonendaten/Zonendateien wurden unter Umständen nicht übernommen.

Um auf Dateiebene die Zonendaten/Zonendateien manuell editieren zu können, muss zwingend nachfolgender Befehl VOR dem Editieren der Zonendaten/Zonendateien ausgeführt werden, um für die Zeit in der die Zonendaten/Zonendateien editiert werden, das automatische signieren der DNSSec gesicherten Zonen zu deaktivieren:

# rndc freeze intra.tachtler.net

Durch den Befehl rndc freeze [ZONE] werden die dynamischen Updates abgeschaltet und die Journal-Dateien werden in die Zonendateien übertragen.

Nachdem die Zonendaten/Zonendateien nun manuell editiert wurden, muss mit nachfolgendem Befehl die Erstellung von dynamischen Updates wieder eingeschaltet werden:

# rndc thaw intra.tachtler.net

nsupdate

Nachfolgende Schritte sind erforderlich um Zonen-Dateien via nsupdate bearbeiten zu können.

/var/named/managedkeys

Bevor mit dem Einsatz von nsupdate begonnen werden kann, sollte ein Schlüsselpaar für den Einsatz von nsupdate pro Zone erstellt werden

Die soll im Verzeichnis

  • /var/named/managedkeys

durchgeführt werden.

Nachfolgender Befehl wechselt in das angegebene Verzeichnis:

# cd /var/named/managedkeys

Die Erstellung von Schlüsselpaaren mit dem Algorithmus HMAC-MD5, kann mit nachfolgendem Befehl durchgeführt werden:

# ddns-confgen -q -a hmac-sha512 -z intra.tachtler.net > /var/named/managedkeys/ddns-key.intra.tachtler.net.key
# ddns-confgen -q -a hmac-sha512 -z 0.168.192.in-addr.arpa > /var/named/managedkeys/ddns-key.0.168.192.in-addr.arpa.key
# ddns-confgen -q -a hmac-sha512 -z tachtler.net > /var/named/managedkeys/ddns-key.tachtler.net.key
# ddns-confgen -q -a hmac-sha512 -z 167.171.217.88.in-addr.arpa > /var/named/managedkeys/ddns-key.171.217.88.in-addr.arpa.key

Anschliessend sollten nachfolgende Dateien erstellt worden sein:

# ls -l /var/named/managedkeys/
total 16
-rw-r--r-- 1 root root 167 Nov  6 09:33 ddns-key.0.168.192.in-addr.arpa.key
-rw-r--r-- 1 root root 168 Nov  6 09:33 ddns-key.167.171.217.88.in-addr.arpa.key
-rw-r--r-- 1 root root 163 Nov  6 09:33 ddns-key.intra.tachtler.net.key
-rw-r--r-- 1 root root 157 Nov  6 09:33 ddns-key.tachtler.net.key

Anschliessend sollten noch die richtigen Besitz- und Dateirechte mit nachfolgenden Befehlen gesetzt werden:

# chown root:named /var/named/managedkeys/*

und

# chmod 640 /var/named/managedkeys/*

Abschliessend sollten nachfolgende erstellt Dateien die entsprechenden Besitz und Dateirechte haben:

# ls -l /var/named/managedkeys/
total 16
-rw-r----- 1 root named 167 Nov  6 09:33 ddns-key.0.168.192.in-addr.arpa.key
-rw-r----- 1 root named 168 Nov  6 09:33 ddns-key.167.171.217.88.in-addr.arpa.key
-rw-r----- 1 root named 163 Nov  6 09:33 ddns-key.intra.tachtler.net.key
-rw-r----- 1 root named 157 Nov  6 09:33 ddns-key.tachtler.net.key

nsupdate: /etc/named.conf

Nachfolgend können nun alle zuvor erstellten Schlüssel mit einem Befehl aufgelistet werden, um so in die Konfigurationsdatei /etc/named.conf hinzugefügt zu werden:

# cat /var/named/managedkeys/ddns-key.*
key "0.168.192.in-addr.arpa" {
	algorithm hmac-sha512;
	secret "g8A4ASCMGOfTLw2+LJxWjE1b9J1zSK2puKC4SHyMpUQ4QJLK2E1s4PNrIAdZVAfscd/1KcwUrQMq8D7w1O/oHw==";
};
key "167.171.217.88.in-addr.arpa" {
	algorithm hmac-sha512;
	secret "ysfIqXOP/RdsuRa4UwFvfuDBiF5A2EgqxUi2HMg1ipullLmtGGWHUDYWxBr+DJAAIkxoICBNOgrbQM8S1g99JQ==";
};
key "intra.tachtler.net" {
	algorithm hmac-sha512;
	secret "F49qPfqEIvVlY+U2ipWXoqRqdYrEanlePQ+0j0WwR3VdB8LNAoGwh1mIOajw8o+Uyv23jy8nqByKu9D6PGtsow==";
};
key "tachtler.net" {
	algorithm hmac-sha512;
	secret "UQpTuEKpcdCkJSVZMoztSDTWSYD/X8BJGxkmmUjBHBR6PL9zeeBO5nKKMNKXOtWqrrFtPdKtYzvLTUriNMygCg==";
};

Nachfolgende Anpassungen der Konfigurationsdatei /etc/named.conf müssen durchgeführt werden um DNSsec voll automatisiert durch den DNS-Server ISC (Internet System Consortium) einzurichten.

Nachfolgende eine Konfigurationszeile muss bei der jeweiligen Zonen-Definition hinzugefügt werden:

...
include "/var/named/managedkeys/ddns-key.intra.tachtler.net.key"
include "/var/named/managedkeys/ddns-key.0.168.192.in-addr.arpa.key"
include "/var/named/managedkeys/ddns-key.tachtler.net.key"
include "/var/named/managedkeys/ddns-key.167.171.217.88.in-addr.arpa.key"
...
...
...
                allow-update { key "ddns-key.intra.tachtler.net"; };
...
                allow-update { key "ddns-key.0.168.192.in-addr.arpa"; };
...
                allow-update { key "ddns-key.tachtler.net"; };
...
                allow-update { key "ddns-key.167.171.217.88.in-addr.arpa"; };
...

nsupdate: Beispiel

Nachfolgendes Beispiel fügt einen A-Record der Zone intra.tachtler.net hinzu:

# nsupdate -k /var/named/managedkeys/ddns-key.intra.tachtler.net.key 
> server 192.168.0.20
> zone intra.tachtler.net
> update add test.intra.tachtler.net 300 A 192.168.0.120
> send
> quit

Anschliessend Abfrage zeigt sogleich das Ergebnis:

# dig @127.0.0.1 test.intra.tachtler.net

; <<>> DiG 9.16.22 <<>> @127.0.0.1 test.intra.tachtler.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14924
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 835cea52f04c4ff11b23914f618643c61e5818f67bad2e81 (good)
;; QUESTION SECTION:
;test.intra.tachtler.net.	IN	A

;; ANSWER SECTION:
test.intra.tachtler.net. 300	IN	A	192.168.0.120

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 09:58:46 CET 2021
;; MSG SIZE  rcvd: 96

Anschliessend kann der Eintrag mit nachfolgenden Befehlen wieder Rückgängig gemacht werden:

# nsupdate -k /var/named/managedkeys/ddns-key.intra.tachtler.net.key 
> server 10.0.0.20
> zone intra.tachtler.net
> update delete test.intra.tachtler.net
> send
> quit

Anschliessend Abfrage zeigt sogleich das Ergebnis:

# dig @127.0.0.1 test.intra.tachtler.net

; <<>> DiG 9.16.22 <<>> @127.0.0.1 test.intra.tachtler.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 62085
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 6f022f58ae416d0bc48ddee46186449f54177998cd80ca6e (good)
;; QUESTION SECTION:
;test.intra.tachtler.net.	IN	A

;; AUTHORITY SECTION:
intra.tachtler.net.	10800	IN	SOA	ns1.intra.tachtler.net. hostmaster.tachtler.net. 2021101106 86400 3600 604800 10800

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Nov 06 10:02:23 CET 2021
;; MSG SIZE  rcvd: 143

rndc sync

Mit nachfolgendem Befehl können nun die durch nsupdate durchgeführten Änderungen, welche sich nur im Hauptspeicher des Servers befinden und in einer Datei die den Namen der Zone trägt und um den Zusatz:

  • jnl

erweitert ist, auch in die Zonen-Datei übernommen werden:

# rndc sync

Anschliessend kann dies durch Ausgaben im Journal überprüft werden: (Nur relevanter Ausschnitt)

# journalctl -u named
...
...general: info: zone intra.tachtler.net/IN/internal (signed): serial 2021101105 (unsigned 2021101102)
...general: info: zone intra.tachtler.net/IN/internal (signed): serial 2021101106 (unsigned 2021101103)
...general: info: received control channel command 'sync'
...general: info: dumping all zones: success

Auch der Aufbau der entsprechenden Zonen-Datei auf der Festplatte wurde durch einen rndc sync umgeschrieben, wie nachfolgende Ausgabe zeigt:

# cat /var/named/zones/intra.tachtler.net.zone
$ORIGIN .
$TTL 10800	; 3 hours
intra.tachtler.net	IN SOA	ns1.intra.tachtler.net. hostmaster.tachtler.net. (
				2021101103 ; serial
				86400      ; refresh (1 day)
				3600       ; retry (1 hour)
				604800     ; expire (1 week)
				10800      ; minimum (3 hours)
				)
			NS	ns1.intra.tachtler.net.
			MX	10 mx1.tachtler.net.
$ORIGIN intra.tachtler.net.
ns1			A	192.168.0.20
rechner10		A	192.168.0.10
rechner20		A	192.168.0.20

ISC Bind 9 Configuration and Statistics

Auf nachfolgender WEB-Seite, kann nun über einen Browser und der IP-Adresse des Nameservers die Konfiguration und Statistiken z.B. im HTML-Format wie nachfolgend dargestellt angezeigt werden:

Nützlich Befehle

Nachfolgend befindet sich eine Liste mit nützlichen Befehlen rund um DNS- und die DNS-Server-Verwaltung. Die Liste erhebt keinen Anspruch auf Vollständigkeit:

DNS-Server Konfigurationsdatei auf Fehler überprüfen:

# /usr/sbin/named-checkconf /etc/named.conf

:!: HINWEIS - Der Parameter /etc/named.conf kann weggelassen werden, wenn die „default“ Konfigurationsdatei /etc/named.conf verwendet wird.

DNS-Server Konfigurationsdatei auf Fehler überprüfen: in chroot-Umgebung:

# /usr/sbin/named-checkconf -t /var/named/chroot /etc/named.conf

DNS-Server Konfigurationsdatei auf Fehler überprüfen - und Ausgabe der Konfigurationsdatei, mit „includes“ und ohne Kommentare:

# /usr/sbin/named-checkconf -p /etc/named.conf

DNS-Server Zonenkonfigurationsdatei auf Fehler überprüfen:

Zonen-Datei für die Forward-Auflösung - /var/named/zones/intra.tachtler.net.zone

# named-checkzone intra.tachtler.net /var/named/zones/intra.tachtler.net.zone

Zonen-Datei für die Reverse-Auflösung - /var/named/zones/0.168.192.zone

# named-checkzone 0.168.192 /var/named/zones/0.168.192.zone

DNS-Server alle Zonenkonfigurationsdateien neu einlesen, ohne den DNS-Server neu starten zu müssen:

# rndc reload

Neue Zonendatei für hint - root-Nameserver holen und abspeichern:

# dig +bufsize=1200 +norec NS . @a.root-servers.net > /var/named/named.root

Komplette Zonendatei der root - Zone holen und abspeichern zur ggf. späteren Einbindung nach dem Motto - „DNS-Root-Zone zu Hause“ der root-Zone. Siehe auch nachfolgende externe Links:

# dig +bufsize=1200 +norec AXFR . @lax.xfr.dns.icann.org > /var/named/rootzone.ca

Version des Verwendeten DNS-Servers abfragen (bind):

# dig txt chaos version.bind.

Auflisten aller DNS-Einträge einer Zone - hier z.B. intra.tachtler.net:

# dig axfr intra.tachtler.net

Logging für jede Anfrage einschalten und ausschalten:

# rndc querylog

Debugging Befehl für ein Abfrage via dig:

dig @127.0.0.1 +trace +recurse +all +qr -t NS google.de

:!: HINWEIS Es kann nach dem einschalten ein

  • tail -f /var/log/named/named.run

bzw.

  • tail -f /var/log/named/queries
  • tail -f /var/log/named/query-errors

durchgeführt werden, um jede Abfrage zu sehen!

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dns_isc_bind_archlinux.1655469867.txt.gz · Zuletzt geändert: 2022/06/17 14:44 von klaus