Wie man einen lokalen DNS Resolver mit Unbound unter Debian einrichtet
Unbound ist eine freie und quelloffene DNS-Server-Software, die für validierende, rekursive und cachende DNS-Resolver verwendet werden kann. Es ist ein funktionsreicher DNS-Server, der DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), Query Name Minimisation, die aggressive Nutzung von DNSSEC-validiertem Cache und die Unterstützung von Autoritätszonen unterstützt. Unbound konzentriert sich auf den Schutz der Privatsphäre und die Sicherheit von DNS, ohne dabei Abstriche bei der Geschwindigkeit und Leistung zu machen.
Unbound wird in erster Linie von NLnet Labs entwickelt und unter der BSD-Lizenz vertrieben und unterstützt moderne Funktionen auf offenen Standards von DNS Server. Unbound wurde rigoros geprüft und kann unter Linux, BSD und macOS ausgeführt werden. Unbound ist für die meisten dieser Betriebssysteme verfügbar und kann über den Systempaketmanager installiert werden.
In dieser Anleitung erfährst du, wie du einen Private DNS Server mit Unbound auf einem Debian 11 und Debian 12 Server einrichtest. Du richtest Unbound als lokalen DNS-Server mit einigen Funktionen wie einem autoritativen DNS-Server ein, aktivierst den DNS-Cache, richtest lokale IP-Adressen und Zugriffskontrolllisten (ACLs) ein, richtest lokale Domainnamen ein und richtest Unbound als DNS-Resolver mit aktiviertem DNS-over-TLS (DoT) ein.
Außerdem richtest du das Logging für den Unbound-Dienst über Rsyslog und Logrotate ein.
Vorraussetzungen
Um diese Anleitung durchzuführen, brauchst du die folgenden Voraussetzungen
- Ein System, auf dem ein Debian 11 Server oder ein Debian 12 Server läuft.
- Ein Benutzerkonto mit sudo/root Administrator-Rechten.
Das war’s schon. Du kannst jetzt mit der Installation von Unbound als Local DNS Server beginnen.
Installation von Unbound
Standardmäßig ist das Unbound-Paket im Debian-Repository verfügbar. Du kannst es über die APT installieren. In diesem ersten Schritt installierst du das Unbound-Paket, das die „dns-root-data“ enthält, auf deinem Debian-Server.
Bevor du beginnst, aktualisiere deinen Debian-Paketindex mit dem unten stehenden apt-Befehl.
sudo apt update
Führe nun den unten stehenden apt-Befehl aus, um zu prüfen, ob das Paket„unbound“ im Debian-Repository verfügbar ist.
sudo apt info unbound
Die unten stehende Ausgabe bestätigt, dass das Paket Unbound standardmäßig im Debian-Server-Repository in der aktuellen Version 1.13 verfügbar ist.
Führe nun den folgenden apt-Befehl aus, um unbound auf deinem Debian-System zu installieren. Wenn du dazu aufgefordert wirst, gib y zur Bestätigung ein und drücke ENTER, um fortzufahren.
sudo apt install unbound
Ausgabe:
Sobald Unbound installiert ist, führe den folgenden systemctl-Befehl aus, um den Unbound-Dienst zu überprüfen und sicherzustellen, dass der Dienst aktiviert ist und läuft.
sudo systemctl is-enabled unbound sudo systemctl status unbound
Der Unbound-Dienst ist aktiviert und wird beim Systemstart automatisch gestartet. Und der Status des Unbound-Dienstes ist „running“.
Ein zusätzlicher Hinweis: Wenn du IPv6 auf deinem Debian-Server deaktiviert hast, kann der Unbound-Dienst nicht starten. Um dieses Problem zu lösen, kannst du den Parameter„do-ip6: no“ zum Abschnitt„server“ in der Unbound-Konfigurationsdatei „/etc/unbound/unbound.conf“ hinzufügen.
Nachdem du Unbound installiert hast, kannst du als Nächstes damit beginnen, Unbound auf deinem System zu konfigurieren.
Unbound DNS Server konfigurieren
Die Standardkonfiguration von Unbound befindet sich in der Datei „/etc/unbound/unbound.conf“. In diesem Schritt wirst du die Hauptkonfigurationsdatei von Unbound „/etc/unbound.conf“ mit deinem bevorzugten Editor ändern.
Jetzt lernst du die Grundkonfiguration eines Unbound DNS-Servers kennen.
Grundlegende Konfiguration
Öffne die standardmäßige Unbound-Konfigurationsdatei „/etc/unbound/unbound.conf“ mit deinem bevorzugten Editor. In diesem Beispiel wird nano für die Bearbeitung der Konfigurationsdatei„/etc/unbound/unbound.conf“ verwendet.
sudo nano /etc/unbound/unbound.conf
Füge die folgenden Zeilen in die Datei ein. Im Abschnitt „Server“ kannst du grundlegende Unbound-Konfigurationen einrichten. In diesem Beispiel lässt du Unbound mit der lokalen IP-Adresse „192.168.5.20“ und dem Standardport 53 laufen. Außerdem richtest du die Protokollierung für Syslog-Nachrichten ein und deaktivierst IPv6. Schließlich richtest du Unbound so ein, dass es jeden Hostnamen von den Root-DNS-Servern über die Datei„root-hints“ rekursiv abfragt.
#Adding DNS-Over-TLS support server: use-syslog: yes username: "unbound" directory: "/etc/unbound" tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt do-ip6: no interface: 192.168.5.20 port: 53 prefetch: yes
root-hints: /usr/share/dns/root.hints
harden-dnssec-stripped: yes
Detailparameter:
- use-syslog: Aktiviere die Protokollierung von Syslog-Nachrichten.
- username: als Benutzer unbound laufen lassen, was der Standardbenutzer ist.
- directory: Das Standardarbeitsverzeichnis für Unbound ist das Verzeichnis„/etc/unbound„.
- tls-cert-bundle: Zertifikate, die zur Authentifizierung von Verbindungen im Vorfeld verwendet werden. Bei Debian-basierten Distributionen befindet sich die Zertifikatsdatei im Verzeichnis „/etc/ssl/certs/ca-certificates.crt“.
- do-ip6: Verwende„yes„, um Unbound mit IPv6 zu betreiben oder setze„no„, um IPv6 zu deaktivieren.
- interface: Netzwerkschnittstelle oder IP-Adresse, über die Unbound ausgeführt werden soll. Du kannst eine IP-Adresse oder den Schnittstellennamen wie z.B.„eth0“ verwenden. Du kannst auch einen bestimmten Port angeben, indem du ein Format wie„IP-ADDRESS@PORT“ hinzufügst.
- port: Gib den Port an, auf dem Unbound läuft und über den die Verbindungen der Clients abgewickelt werden. Der Standard-DNS-Port ist 53.
- prefetch: Setzt du den Wert auf„yes„, werden fast abgelaufene Einträge im Nachrichten-Cache vorgeholt.
- root-hints: eine Datei, die Angaben zum Root-DNS-Server enthält. Die Datei „/usr/share/dns/root.hints“ wird mit dem Paket „dns-root-data“ bereitgestellt. Du kannst die root-hints-Datei auch von hier herunterladen: https://www.internic.net/domain/named.cache.
- harden-dnssec-stripped: Setze sie auf„yes„, um den Empfang von dnssec-stripped Daten zu verhindern.
DNS-Cache aktivieren
Als Nächstes fügst du die folgenden Zeilen hinzu, um die DNS-Cache-Abfrage in deiner Unbound-Installation zu aktivieren.
cache-max-ttl: 14400 cache-min-ttl: 1200
Detailparameter:
- cache-max-ttl: TTL oder Time To Live für RRSets und Nachrichten im DNS-Cache. Das Format ist in Sekunden.
- cache-min-ttl: minimale Time To Live für den Cache. Der Standardwert ist 0, aber du kannst ihn nach deinem Geschmack ändern, z.B.„1200“ Sekunden. Setze diesen Wert nicht auf mehr als 1 Stunde, sonst bekommst du Probleme wegen veralteter Daten.
Ungebundene Privatsphäre und Sicherheit
Jetzt kannst du die folgenden Zeilen hinzufügen, um die grundlegenden Datenschutz- und Sicherheitseinstellungen für Unbound einzurichten.
aggressive-nsec: yes hide-identity: yes hide-version: yes use-caps-for-id: yes
Detailparameter:
- aggressive-nsec: Setze sie auf„yes„, um aggressives NSEC zu aktivieren, das die DNSSEC NSEC-Kette verwendet, um NXDOMAIN und andere Verweigerungen zu synthetisieren. Schau auf der IETF-Webseite über„NSEC“ https://www.ietf.org/archive/id/draft-ietf-dnsop-nsec-ttl-00.html nach .
- hide-identity: setzt du auf yes, um Antworten von Bind-Anfragen über id.server oder hostname.bind zu deaktivieren.
- hide-version: setzt du auf yes, um version.server- und version.bind-Abfragen zu deaktivieren.
- use-caps-for-id: setzt du auf ja, um die Verwendung von „0x20-encoded“ in der Abfrage zu aktivieren, um Spoofing-Versuche zu verhindern.
Privates Netzwerk und Zugriffskontrolllisten (ACLs) definieren
Als nächstes musst du die private Adresse deines Netzwerks und die ACLs (Access Control Lists) definieren. Ändere das lokale Subnetz in den unten stehenden Zeilen mit deiner aktuellen Netzwerkumgebung ab.
private-address: 192.168.0.0/16 private-address: 169.254.0.0/16 private-address: 172.16.0.0/12 private-address: 10.0.0.0/8 private-address: fd00::/8 private-address: fe80::/10
#control which clients are allowed to make (recursive) queries
access-control: 127.0.0.1/32 allow_snoop
access-control: ::1 allow_snoop
access-control: 127.0.0.0/8 allow
access-control: 192.168.5.0/24 allow
Detailparameter:
- private-address: Definiere private Netzwerk-Subnetze in deiner Infrastruktur. Nur die Namen„private-domain“ und „local-data“ dürfen diese privaten Adressen haben.
- access-control: Definiere die Zugriffskontrolle, bei der Clients (rekursive) Anfragen an den Unbound-Server stellen dürfen. Der Parameter‚allow‚ erlaubt rekursive Anfragen, während der Parameter‚allow_snoop‚ sowohl rekursive als auch nicht-rekursive Anfragen erlaubt.
Lokale Domäne einrichten
Nachdem du die private Adresse und die Zugriffskontrolllisten konfiguriert hast, legst du nun die lokale Zone für deinen lokalen Domainnamen fest. Das ist sehr nützlich, besonders wenn du mehrere selbst gehostete Anwendungen in deinem lokalen Netzwerk hast. Du kannst ganz einfach deinen Domainnamen oder Subdomains definieren und auf eine bestimmte Ziel-IP-Adresse verweisen.
In diesem Beispiel wird die Zone für die Domäne„garden.lan“ mit dem Typ„static“ erstellt, dann erstellst du mehrere Subdomänen über den Parameter „local-data“. Jede Subdomain wird auf eine bestimmte IP-Adresse verweisen. Außerdem erstellst du PTR-Einträge über den Parameter„local-data-ptr„.
# local zone local-zone: "garden.lan." static
local-data: „firewall.garden.lan. IN A 10.0.0.1“
local-data: „vault.garden.lan. IN A 10.0.0.2“
local-data: „media.garden.lan. IN A 10.0.0.3“
local-data: „docs.garden.lan. IN A 10.0.0.4“
local-data: „wiki.garden.lan. IN A 10.0.0.5“
local-data-ptr: „10.0.0.1 firewall.garden.lan“
local-data-ptr: „10.0.0.2 vault.garden.lan“
local-data-ptr: „10.0.0.3 media.garden.lan“
local-data-ptr: „10.0.0.4 docs.garden.lan“
local-data-ptr: „10.0.0.5 wiki.garden.lan“
Detailparameter:
- local-zone: Definiere hier die lokale Domain.
- local-data: Definiere den A-Record für Subdomains und die lokale IP-Adresse, die aufgelöst werden soll.
- local-data-ptr: Definiere den ptr-Eintrag für deine Subdomains.
Ungebundene Leistungsoptimierung und Tweak
Füge die folgenden Zeilen hinzu, um mehr Leistung zu erhalten. Du kannst die folgenden Parameter an deine aktuelle Umgebung anpassen.
num-threads: 4 msg-cache-slabs: 8 rrset-cache-slabs: 8 infra-cache-slabs: 8 key-cache-slabs: 8 rrset-cache-size: 256m msg-cache-size: 128m so-rcvbuf: 8m
Detailparameter:
- num-threads: die Anzahl der Threads, die erstellt werden. Der Wert sollte mit den CPU-Kernen des Servers übereinstimmen.
- msg-cache-slabs: Die Anzahl der Slabs, die für den Nachrichten-Cache verwendet werden sollen. Setze den Wert auf 8, um Unbound so zu optimieren, dass mehr Speicher für das Caching verwendet wird.
- rrset-cache-slabs: Die Anzahl der Slabs, die für den RRset-Cache verwendet werden sollen. Setze ihn auf 8, um Unbound so zu optimieren, dass mehr Speicher für den RRSet-Cache verwendet wird.
- infra-cache-slabs: Die Anzahl der Slabs, die für den Infrastruktur-Cache verwendet werden sollen. Setze ihn auf 8, um Unbound so zu optimieren, dass mehr Speicher für den Infrastruktur-Cache verwendet wird.
- key-cache-slabs: Die Anzahl der Slabs, die für den Key-Cache verwendet werden sollen. Setze ihn auf 8, um Unbound so zu optimieren, dass mehr Speicher für den Key-Cache verwendet wird.
- rrset-cache-size: gib den Speicherplatz für den RRSet-Cache an. In diesem Beispiel werden 256 MB verwendet, während der Standardwert nur 4 MB beträgt.
- msg-cache-size: Legt die Größe des Speichers für den Nachrichten-Cache fest. In diesem Beispiel werden 128 MB verwendet, der Standardwert beträgt nur 4 MB.
- so-rcvbuf: setze die Puffergröße für DNS Port 53/udp auf 8 MB.
Unbound als DNS-Resolver mit DNS-over-TLS (DoT) einrichten
Zum Schluss fügst du einen neuen Abschnitt„forward-zone“ hinzu, um Unbound als DNS-Resolver für deine lokalen Netzwerke einzurichten. In diesem Beispiel werden Quad9 DNS-Server mit aktiviertem DoT (DNS-over-TLS) verwendet.
forward-zone: name: "." forward-ssl-upstream: yes ## Also add IBM IPv6 Quad9 over TLS forward-addr: 9.9.9.9@853#dns.quad9.net forward-addr: 149.112.112.112@853#dns.quad9.net
Details zu den Parametern:
- forward-zone: Definiere die Forward-Zone für Unbound.
- name: Setze auf „.“, um alle DNS-Anfragen weiterzuleiten.
- forward-addr: Verwende einen bestimmten Forwarder, um alle DNS-Anfragen weiterzuleiten. In diesem Beispiel wird Quad9 DNS mit aktiviertem DNS-over-TLS (DoT) verwendet.
Speichere und beende die Datei„/etc/unbound/unbound.conf„, wenn du fertig bist. Nachdem du die Unbound-Konfigurationsdatei geändert hast, kannst du den Unbound-Dienst neu starten und die Änderungen übernehmen.
Führe den folgenden Befehl aus und überprüfe die Unbound-Konfiguration. Wenn du erfolgreich bist, solltest du eine Ausgabe wie „unbound-checkconf: no errors in /etc/unbound/unbound.conf“ erhalten.
sudo unbound-checkconf
Als Nächstes führst du den Befehl systemctl aus, um den Unbound-Dienst neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart unbound
Nachdem du die Unbound-Konfiguration abgeschlossen hast, richtest du als Nächstes die UFW-Firewall ein und öffnest den Standard-DNS-Port 53.
Einrichten der UFW-Firewall
In diesem Schritt richtest du die UFW-Firewall auf dem Debian-Server ein und öffnest den DNS-Port 53/udp. Zuvor musst du jedoch die UFW-Pakete aus dem Debian-Repository über APT installieren.
Führe den folgenden apt-Befehl aus, um die UFW-Firewall auf deinem Debian-Server zu installieren. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
sudo apt install ufw
Ausgabe:
Sobald UFW installiert ist, musst du den OpenSSH-Dienst auf UFW mit dem unten stehenden Befehl öffnen. Dann kannst du den DNS-Port 53/udp zur UFW-Firewall hinzufügen.
sudo ufw allow OpenSSH sudo ufw allow 53/udp
Als Nächstes führst du den folgenden Befehl aus, um den UFW-Firewall-Dienst zu starten und zu aktivieren. Wenn du dazu aufgefordert wirst, gib y zur Bestätigung ein und drücke ENTER, um fortzufahren.
sudo ufw enable
Die Ausgabe‚Firewall ist aktiv und wird beim Systemstart aktiviert‚ bestätigt, dass die UFW-Firewall läuft und aktiviert ist, was bedeutet, dass die UFW-Firewall beim Systemstart automatisch startet.
Ausgabe:
Führe nun den folgenden ufw-Befehl aus, um den Status der UFW-Firewall zu überprüfen. Du solltest die Ausgabe erhalten, dass der UFW-Status„aktiv“ ist und der OpenSSH-Dienst und der DNS-Port 53/udp aktiviert sind.
sudo ufw status
Ausgabe:
Ungebundenes Log über Rsyslog und Logrotate
Nachdem du die UFW-Firewall konfiguriert hast, richtest du nun über rsyslog und logrotate eine Logdatei für Unbound ein. Der rsyslog-Dienst erstellt eine spezielle Logdatei für Unbound und logrotate rotiert die Unbound-Logdatei in einer bestimmten Zeit.
Erstelle eine neue Rsyslog-Konfigurationsdatei „/etc/rsyslog.d/unbound.conf“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/rsyslog.d/unbound.conf
Füge die folgenden Zeilen in die Datei ein. Damit werden die Unbound-Logs unter „/var/log/unbound.log“ gespeichert.
# Log messages generated by unbound application if $programname == 'unbound' then /var/log/unbound.log # stop processing it further & stop
Speichere die Datei und beende den Editor, wenn du fertig bist.
Führe nun den folgenden systemctl-Befehl aus, um den Dienst „rsyslog“ neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart rsyslog
Als Nächstes richtest du die Log-Rotation für die Unbound-Logdatei„/var/log/unbound.log“ ein. Dies kannst du über den logrotate-Dienst erreichen.
Erstelle eine neue logrotate-Konfigurationsdatei„/etc/logrotate.d/unbound“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/logrotate.d/unbound
Füge die folgenden Zeilen in die Datei ein. Dadurch wird die Logrotation für die Unbound-Logdatei„/var/log/unbound.log“ täglich durchgeführt.
/var/log/unbound.log { daily rotate 7 missingok create 0640 root adm postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }
Speichere die Datei und beende den Editor, wenn du fertig bist.
Führe nun den folgenden systemctl-Befehl aus, um den logrotate-Dienst neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart logrotate
Damit hast du den Unbound DNS-Server erfolgreich installiert und konfiguriert und die Protokollierung über Rsyslog und Logrotate eingerichtet. Die Unbound-Protokolle werden in der Datei „/var/unbound/unbound.log“ gespeichert.
DNS Resolver auf dem Linux Client einstellen
In diesem Schritt lernst du, wie du einen DNS-Resolver auf den Client-Rechnern einrichtest. Wir zeigen dir zwei Methoden für verschiedene Linux-Distributionen.
Für Ubuntu-Clients: Das Netzwerk unter Ubuntu wird vom NetworkManager verwaltet. Um einen DNS-Resolver einzurichten, kannst du den NetworkManager mit systemd-resolved als Backend kombinieren.
Für Debian-Clients: Auf Debian-Systemen (Minimalversion) wird das Netzwerk über die traditionelle Konfigurationsdatei „/etc/network/interface“ verwaltet. Du kannst das DNS-Auflösungsverzeichnis in der Datei „/etc/network/interface“ definieren oder den Dienst systemd-resolved verwenden, der standardmäßig auf dem Debian-Server verfügbar ist.
Für Ubuntu-Clients mit NetworkManager und Systemd-resolved
Dies ist für Ubuntu-Nutzer, die NetworkManager als Standard-Netzwerkkonfiguration verwenden. Du richtest systemd-resolved als Backend für den DNS-Server im NetworkManager ein.
Öffne die Datei„/etc/NetworkManager/NetworkManager.conf“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/NetworkManager/NetworkManager.conf
Entferne die Markierung des Parameters„dns“ und füge den Backend„systemd-resolved“ hinzu.
dns=systemd-resolved
Speichere und beende die Datei, wenn du fertig bist.
Führe nun den folgenden systemctl-Befehl aus, um den NetworkManager-Dienst neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart NetworkManager
Als nächstes definierst du den ungebundenen lokalen DNS in systemd-resolved.
Öffne die systemd-resolved Konfigurationsdatei„/etc/systemd/resolved.conf“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/systemd/resolved.conf
Entferne im Abschnitt „[Resolve]“ die Markierung des Parameters„DNS“ und gib die IP-Adresse deines ungebundenen DNS-Servers ein.
[Resolve] DNS= 192.168.5.20
Speichere und beende die Datei, wenn du fertig bist.
Als Nächstes führst du den folgenden systemctl-Befehl aus, um den Dienst „systemd-resolved“ zu starten und zu aktivieren.
sudo systemctl start systemd-resolved sudo systemctl enable systemd-resolved
Überprüfe nun den Status des Dienstes„systemd-resolved“ mit dem unten stehenden Befehl. Du solltest sehen, dass systemd-resolved aktiviert ist und beim Systemstart automatisch ausgeführt wird. Und der Status des Dienstes„systemd-resolved“ ist jetzt aktiv.
sudo systemctl status systemd-resolved
Du kannst die Konfiguration deines DNS-Resolvers auch mit dem unten stehenden Befehl„resolvectl“ überprüfen. Du solltest sehen, dass der Standard-Resolver dein Unbound DNS-Server mit der IP-Adresse„192.168.5.20“ ist.
resolvectl status
Für Debian-Clients
Für das Debian-System kannst du auch den Dienst systemd-resolved verwenden, um einen DNS-Resolver einzurichten.
Öffne die systemd-resolved Konfigurationsdatei „/etc/systemd/resolved.conf“ mit dem unten stehenden nano-Editor.
sudo nano /etc/systemd/resolved.conf
Füge den Parameter„DNS“ gefolgt von der IP-Adresse des Unbound-Servers in den Abschnitt „[Resolver]“ ein.
[Resolve] DNS=192.168.5.20
Speichere die Datei und beende den Editor, wenn du fertig bist.
Führe nun den folgenden systemctl-Befehl aus, um den systemd-resolved-Dienst zu starten und zu aktivieren.
sudo systemctl start systemd-resolved sudo systemctl enable systemd-resolved
Ausgabe:
Überprüfe dann den Status des systemd-resolved-Dienstes, um sicherzustellen, dass er läuft. Die Ausgabe„active (running)“ bestätigt, dass systemd-resolved läuft, und die Ausgabe„loaded ../../../systemd-resolved.service; enabled;..“ bestätigt, dass der Dienst aktiviert ist.
sudo systemctl status systemd-resolved
Ausgabe:
Du kannst die Konfiguration deines DNS-Resolvers mit dem folgenden Befehl„resolvectl“ überprüfen. Du solltest sehen, dass der Standard-Resolver dein Unbound DNS-Server mit der IP-Adresse„192.168.5.20“ ist.
resolvectl status
Ausgabe:
Testen des Unbound DNS Servers
Führe den folgenden dig-Befehl aus, um sicherzustellen, dass der Unbound DNS als DNS-Resolver funktioniert. Der Parameter „@192.168.5.20“ stellt sicher, dass du einen Unbound DNS Server verwendest, der unter der IP-Adresse„192.168.5.20“ läuft.
dig @192.168.5.20
Wenn du erfolgreich bist, erhältst du eine Antwort vom Root-DNS-Server, wie in der folgenden Ausgabe zu sehen ist. Außerdem siehst du das Flag„ad“ (authentic data) in der Header-Ausgabe, was bedeutet, dass DNSSEC aktiviert ist.
Als Nächstes führst du den folgenden Befehl aus, um sicherzustellen, dass die Clients online auf die Domänennamen zugreifen können.
dig github.com dig duckduckgo.com
Bei Erfolg solltest du eine Ausgabe mit Details zu den DNS-Einträgen für die Domänen„github.com“ und„duckduckgo.com“ erhalten. Du kannst sehen, dass der DNS-Resolver, der die Abfrage beantwortet,„127.0.0.53#53“ ist, also der systemd-resolved, der Unbound als Standardresolver verwendet. Außerdem kannst du die„Abfragezeit“ für jede Abfrage sehen, die„Abfragezeit“ für die Domain„github.com“ ist„1367“ und für„duckduckgo.com“ ist„1059„.
Ausgabe für github.com:
Ausgabe für duckduckgo.com:
Wenn du den dig-Befehl noch einmal ausführst, sollte sich die „Abfragezeit“ verringern. Dies bestätigt, dass deine Abfragen zwischengespeichert wurden und der DNS-Cache funktioniert.
dig github.com dig duckduckgo.com
Ausgabe:
Als Nächstes überprüfst du die lokale Domain oder Sub-Domain mit dem unten stehenden dig-Befehl. Bei Erfolg wird jede Subdomain auf die richtige IP-Adresse verwiesen, wie sie in der Unbound-Konfigurationsdatei„/etc/unbound/unbound.conf“ konfiguriert ist.
dig firewall.garden.lan +short dig vault.garden.lan +short dig media.garden.lan +short
Ausgabe:
Führe nun den folgenden dig-Befehl aus, um sicherzustellen, dass die PTR-Einträge auf den richtigen Domainnamen verweisen.
dig -x 10.0.0.1 +short dig -x 10.0.0.2 +short dig -x 10.0.0.3 +short
Ausgabe:
Zu guter Letzt kannst du DoT (DNS over TLS) auch über tcpdump überprüfen. Installiere das Paket„tcpdump“ auf deinem Unbound-Server.
sudo apt install tcpdump
Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
Führe nun den folgenden tcpdump-Befehl aus, um den Datenverkehr auf der Schnittstelle„eth0“ mit DoT-Port 853 zu überwachen. In diesem Beispiel läuft der Unbound DNS über die IP-Adresse„192.168.5.20“ und die Schnittstelle„eth0„.
tcpdump -vv -x -X -s 1500 -i eth0 'port 853'
Gehe zum Client-Rechner und führe den unten stehenden Befehl aus, um über den unten stehenden dig-Befehl auf externe/Internet-Domänennamen zuzugreifen.
dig google.com
Ausgabe:
Gehe danach zurück zum Unbound-Server und du solltest jetzt eine ähnliche Ausgabe wie diese auf der tcpdump-Ausgabe erhalten.
Damit hast du den lokalen DNS-Server über Unbound installiert und konfiguriert. Außerdem hast du einen DNS-Resolver auf Ubuntu-Clients über systemd-resolved und NetworkManager und auf Debian-Clients über systemd-resolved konfiguriert.
Fazit
In dieser Anleitung hast du den Unbound Local DNS Server auf einem Debian 11 Server installiert. Du hast den DNS-Cache und DNSSEC (standardmäßig aktiviert) aktiviert, private Adressen und ACLs konfiguriert, die lokale Domain über local-zone hinzugefügt und Unbound als DNS-Resolver mit DoT (DNS-over-TLS) konfiguriert.
Außerdem hast du grundlegende DNS-Datenschutz- und Sicherheitseinstellungen vorgenommen, Unbound optimiert und Unbound-Logs über rsyslog und logrotate konfiguriert.
Am Ende dieses Leitfadens hast du auch gelernt, wie du einen DNS-Resolver auf Ubuntu- und Debian-Rechnern über NetworkManager und systemd-resolved einrichtest. Außerdem hast du gelernt, wie du den Befehl dig zur Überprüfung des DNS-Servers verwendest.