Inhaltsverzeichnis
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
- internalview
- 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
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
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.171.217.88.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 zwei Konfigurationszeilen müssen bei der jeweiligen Zonen-Definition hinzugefügt werden:
... inline-signing yes; auto-dnssec maintain; ...
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; }; 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; }; zone "tachtler.net" IN { type master; file "zones/tachtler.net.zone"; inline-signing yes; auto-dnssec maintain; }; 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; }; }; 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; }; 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; }; };
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 „nur“ NSEC 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 0 optout no salt-length 0; // 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 0 optout no salt-length 0;
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
HINWEIS - Nachfolgende Seiten geben über den aktuellen Stand der Benutzung von NSEC3 Auskunft:
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 zwei Konfigurationszeilen müssen bei der jeweiligen Zonen-Definition hinzugefügt werden:
... inline-signing yes; dnssec-policy defaultnsec3; ...
ACHTUNG - Falls inline-signing yes;
nicht gesetzt wird werden die Zonen-Dateien umgeschrieben!
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; }; zone "0.168.192.in-addr.arpa" IN { type master; file "zones/0.168.192.in-addr.arpa.zone"; dnssec-policy defaultnsec3; inline-signing yes; }; zone "tachtler.net" IN { type master; file "zones/tachtler.net.zone"; dnssec-policy defaultnsec3; inline-signing yes; }; zone "167.171.217.88.in-addr.arpa" IN { type master; file "zones/167.171.217.88.in-addr.arpa.zone"; dnssec-policy defaultnsec3; inline-signing yes; }; }; 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; inline-signing yes; }; zone "167.171.217.88.in-addr.arpa" IN { type master; file "zones/167.171.217.88.in-addr.arpa.zone"; dnssec-policy defaultnsec3; inline-signing yes; }; };
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!