DNS Setup · 16 min read · Sep 08, 2025
So richten Sie einen lokalen DNS-Resolver mit Unbound auf Rocky Linux 9 ein

Unbound ist eine kostenlose und Open-Source-DNS-Server-Software, die für die Validierung, rekursive und zwischengespeicherte 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 des DNSSEC-validierten Caches und Unterstützung für Autoritätszonen unterstützt. Unbound konzentriert sich auf die Privatsphäre und Sicherheit von DNS, ohne dabei Geschwindigkeit und Leistung zu opfern.
Unbound wird hauptsächlich von NLnet Labs entwickelt und unter der BSD-Lizenz vertrieben und unterstützt moderne Funktionen auf offenen Standards des DNS-Servers. Unbound wurde rigoros geprüft und kann auf Linux, BSD und macOS ausgeführt werden. Unbound ist für die meisten dieser Betriebssysteme verfügbar und kann über den System-Paketmanager installiert werden.
In diesem Tutorial werde ich einen lokalen DNS-Server mit Unbound auf einem Rocky Linux 9-Server einrichten. Sie werden Unbound als autoritativen, validierenden und rekursiven Cache-DNS konfigurieren. Darüber hinaus werden Sie Unbound auch als DNS-Resolver für Ihr lokales Netzwerk mit aktiviertem DNS-over-TLS (DoT) einrichten.
Am Ende dieses Tutorials werden Sie auch Unbound-Protokolle über Rsyslog und Logrotate einrichten und auch eine Linux-Clientmaschine einrichten, um Unbound als DNS-Resolver zu verwenden und Ihre gesamte Installation von dort aus zu überprüfen.
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen, stellen Sie sicher, dass Sie die folgenden Anforderungen haben:
- Ein Server mit installiertem Rocky Linux 9 - Dieses Beispiel verwendet ein Rocky Linux mit dem Hostnamen ‘unbound-rocky’ und der IP-Adresse ‘192.168.5.25 ‘.
- Ein Nicht-Root-Benutzer mit Root/Sudo-Administratorrechten.
- Ein SELinux, das im permissiven Modus läuft.
Und das war’s. Wenn alle Anforderungen erfüllt sind, fahren Sie fort und beginnen Sie mit der Installation von Unbound auf Ihrem Server.
Installation von Unbound
Unbound ist eine DNS-Server-Software, die die Mehrheit der Betriebssysteme unterstützt, einschließlich Linux, BSD und macOS. Auf Rocky Linux ist das Unbound-Paket standardmäßig im offiziellen Rocky Linux AppStream-Repository verfügbar.
In diesem ersten Schritt installieren Sie das Unbound-Paket auf Ihrem Rocky Linux-System.
Führen Sie nun den folgenden dnf-Befehl aus, um das Paket ‘unbound‘ im AppStream-Repository zu überprüfen. Zum Zeitpunkt des Schreibens dieses Artikels bietet das Rocky Linux AppStream-Repository Unbound 1.16 an.
sudo dnf info unboundAusgabe:

Installieren Sie Unbound über den folgenden dnf-Befehl. Wenn Sie dazu aufgefordert werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren.
sudo dnf install unboundAusgabe:

Sobald Unbound installiert ist, starten und aktivieren Sie den ‘unbound’-Dienst über das folgende systemctl-Befehlswerkzeug. Dies startet Unbound auf Ihrem Rocky Linux-Server und aktiviert es, um beim Systemstart automatisch zu laufen.
sudo systemctl start unbound
sudo systemctl enable unboundÜberprüfen Sie den Unbound-Dienst mit dem folgenden systemctl-Befehl. Die Ausgabe ‘active (running)‘ bestätigt, dass der Unbound-Dienst läuft. Und die Ausgabe ‘loaded ….; enabled;…‘ bestätigt, dass der Unbound-Dienst aktiviert ist.
sudo systemctl status unboundAusgabe:

Ihr Unbound ist jetzt installiert und läuft mit der Standardkonfigurationsdatei ‘/etc/unbound/unbound.conf‘. Als Nächstes werden Sie die Unbound-Konfigurationsdatei ‘/etc/unbound/unbound.conf‘ ändern und Unbound als autoritativen, validierenden und rekursiven Cache-DNS einrichten und auch Unbound als DNS-Resolver mit aktiviertem DoT einrichten.
Konfiguration von Unbound
Standardmäßig befindet sich die Unbound-Konfigurationsdatei unter ‘/etc/unbound/unbound.conf‘. In diesem Schritt werden Sie die Konfigurationsdatei ‘/etc/unbound/unbound.conf‘ ändern und dann die Unbound-Installation einrichten und optimieren.
Sie werden Unbound so einrichten, dass es als autoritativer, validierender und rekursiver Cache-DNS läuft. Darüber hinaus werden Sie die Unbound-Installation für Leistung, Privatsphäre und Sicherheit optimieren. Und schließlich werden Sie Unbound als DNS-Resolver für lokale Netzwerke einrichten.
Zuerst führen Sie den folgenden wget-Befehl aus, um die Root-DNS-Datei in ‘/etc/unbound/root.hints‘ herunterzuladen. Ändern Sie dann den Besitz der Datei ‘/etc/unbound/root.hints‘ auf den Benutzer und die Gruppe ‘unbound‘.
wget https://www.internic.net/domain/named.root -O /etc/unbound/root.hints
sudo chown unbound:unbound /etc/unbound/root.hintsAls Nächstes sichern Sie die Standard-Unbound-Konfigurationsdatei in ‘/etc/unbound/unbound.conf.orig‘ und ändern die Originaldatei ‘/etc/unbound/unbound.conf‘ mit dem folgenden nano-Editor-Befehl.
sudo cp -v /etc/unbound/unbound{.conf,.conf.orig}
sudo nano /etc/unbound/unbound.confJetzt lassen Sie uns mit der Konfiguration von Unbound beginnen.
Grundkonfiguration von Unbound
Zuerst legen Sie fest, welche IP-Adresse und welchen Port der Unbound-Dienst verwenden soll. Dann richten Sie auch ein Zertifikatspaket ein, das zur Authentifizierung von Verbindungen verwendet wird, die upstream hergestellt werden, und fügen die Root-DNS-Server über den Parameter ‘root-hints’ hinzu.
Fügen Sie die folgenden Zeilen im Abschnitt ‘server:‘ hinzu. Mit diesen Einstellungen wird Unbound auf einer lokalen IP-Adresse ‘192.168.5.25‘ mit dem Standard-UDP-Port ‘53‘ ausgeführt.
server:
...
...
# interface-automatic: no
do-ip6: no
interface: 192.168.5.25
port: 53
prefetch: yes
tls-cert-bundle: /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
root-hints: /etc/unbound/root.hintsDetailparameter:
- do-ip6: Verwenden Sie ‘yes‘, um Unbound mit IPv6 auszuführen, oder setzen Sie ‘no‘, um IPv6 zu deaktivieren.
- interface: Netzwerkinterface oder IP-Adresse, auf der Unbound ausgeführt wird. Sie können eine IP-Adresse oder den Schnittstellennamen wie ‘eth0‘ verwenden. Sie können auch auf einem bestimmten Port ausführen, indem Sie das Format wie folgt hinzufügen: ‘IP-ADDRESS@PORT’.
- port: Geben Sie den Port an, auf dem Unbound ausgeführt wird und über den die Verbindungen der Clients abgewickelt werden. Der Standard-DNS-Port ist 53.
- prefetch: Auf ‘yes‘ setzen, um das Vorababrufen von fast abgelaufenen Nachrichten-Cache-Einträgen zu aktivieren.
- tls-cert-bundle: Zertifikate, die zur Authentifizierung von Verbindungen verwendet werden, die upstream hergestellt werden. Bei RHEL-basierten Distributionen befindet sich die Zertifikatdatei unter ‘/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem’.
- root-hints: Eine Datei, die Details zu den Root-DNS-Servern enthält. Sie haben diese Datei in ‘/etc/unbound/root.hints’ heruntergeladen.
Aktivieren des DNS-Caches
Fügen Sie nun die folgenden Zeilen hinzu, um rekursive Caching-DNS über Unbound zu aktivieren. Dies wird DNS-Abfragen, die von Clients auf dem Unbound-Server gemacht werden, für eine bestimmte Zeit zwischenspeichern.
cache-max-ttl: 14400
cache-min-ttl: 1200Detailparameter:
- 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 Sie können dies auf Ihre Vorliebe ändern, z. B. ‘1200‘ Sekunden. Setzen Sie dies nicht auf mehr als 1 Stunde, da Sie sonst aufgrund veralteter Daten in Schwierigkeiten geraten.
Härtung von Unbound
Einige Datenschutz- und Sicherheitsparameter für Unbound sind standardmäßig in der RHEL-basierten Distribution aktiviert. Sie können jedoch auch weitere Parameter wie diese Zeilen hinzufügen.
hide-identity: yes
hide-version: yes
use-caps-for-id: yesDetailparameter:
- hide-identity: Auf yes setzen, um Antworten von Bind-Abfragen zu id.server oder hostname.bind zu deaktivieren.
- hide-version: Auf yes setzen, um version.server und version.bind-Abfragen zu deaktivieren.
- use-caps-for-id: Auf yes setzen, um die Verwendung von ‘0x20-encoded‘ in der Abfrage zu aktivieren, um Spoofing-Versuche zu vereiteln.
Definieren von privaten Adressen und Zugriffskontrolllisten
Als Nächstes müssen Sie private Adressen und ACLs (Zugriffskontrolllisten) für Ihre lokalen Netzwerke definieren. Stellen Sie sicher, dass Sie das lokale Subnetz in den folgenden Zeilen mit Ihrer aktuellen Netzwerkumgebung ändern.
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
# kontrollieren, welche Clients (rekursive) Abfragen stellen dürfen
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 allowDetailparameter:
- private-address: Definieren Sie private Netzwerk-Subnets in Ihrer Infrastruktur. Nur ‘private-domain‘ und ‘local-data‘ Namen dürfen diese privaten Adressen haben.
- access-control: Definieren Sie die Zugriffskontrolle, in der Clients (rekursive) Abfragen an den Unbound-Server stellen dürfen. Der Parameter ‘allow‘ ermöglicht rekursive Abfragen, während ‘allow_snoop‘ sowohl rekursive als auch nicht-rekursive Abfragen ermöglicht.
Einrichten von lokalen Domainnamen und Sub-Domains
Nachdem Sie private Adressen und Zugriffskontrolllisten konfiguriert haben, erstellen Sie nun lokale Domainnamen über den Unbound-Parameter ‘local-zone’. Dies ist besonders nützlich, wenn Sie mehrere selbst gehostete Anwendungen in Ihrem lokalen Netzwerk haben. Sie können ganz einfach Ihren Domainnamen oder Sub-Domains definieren und auf die spezifische Ziel-IP-Adresse verweisen.
In diesem Beispiel richten Sie eine ‘statische‘ lokale Domain ‘garden.lan‘ ein und erstellen mehrere Sub-Domains über den Parameter ‘local-data‘. Jede Sub-Domain wird auf eine spezifische IP-Adresse verwiesen, und Sie erstellen auch PTR-Einträge über den Parameter ‘local-data-ptr‘.
# lokale 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: Definieren Sie die lokale Domain hier.
- local-data: Definieren Sie A-Einträge für Sub-Domains und welche lokale IP-Adresse aufgelöst wird.
- local-data-ptr: Definieren Sie den PTR-Eintrag für Ihre Sub-Domains.
Optimierung und Anpassungen von Unbound
Fügen Sie als Nächstes die folgenden Zeilen hinzu, um Ihre Unbound-Installation zu optimieren. Sie können die Parameter unten je nach Ihrer aktuellen Umgebung anpassen und optimieren.
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: 8mDetailparameter:
- msg-cache-slabs: Die Anzahl der Slabs, die für den Nachrichten-Cache verwendet werden sollen. Setzen Sie es auf 8, um Unbound zu optimieren, mehr Speicher für das Caching zu verwenden.
- rrset-cache-slabs: Die Anzahl der Slabs, die für den RRset-Cache verwendet werden sollen. Setzen Sie es auf 8, um Unbound zu optimieren, mehr Speicher für den RRSet-Cache zu verwenden.
- infra-cache-slabs: Die Anzahl der Slabs, die für den Infrastruktur-Cache verwendet werden sollen. Setzen Sie es auf 8, um Unbound zu optimieren, mehr Speicher für den Infrastruktur-Cache zu verwenden.
- key-cache-slabs: Die Anzahl der Slabs, die für den Schlüssel-Cache verwendet werden sollen. Setzen Sie es auf 8, um Unbound zu optimieren, mehr Speicher für den Schlüssel-Cache zu verwenden.
- rrset-cache-size: Geben Sie die Menge an Speicher für den RRSet-Cache an. Dieses Beispiel verwendet 256MB, während der Standard nur 4MB beträgt.
- msg-cache-size: Geben Sie die Menge an Speicher für den Nachrichten-Cache an. Dieses Beispiel verwendet 128MB, während der Standard nur 4MB beträgt.
- so-rcvbuf: Richten Sie die Puffergröße für den DNS-Port 53/udp auf 8MB ein.
Einrichten von Unbound als DNS-Resolver mit DNS-over-TLS (DoT)
Fügen Sie schließlich einen neuen Abschnitt ‘forward-zone‘ hinzu, um Unbound als DNS-Resolver für Ihre lokalen Netzwerke einzurichten. Dieses Beispiel verwendet Quad9-DNS-Server mit aktiviertem DoT (DNS-over-TLS) als upstream-DNS-Resolver.
forward-zone:
name: "."
forward-ssl-upstream: yes
## Fügen Sie auch IBM IPv6 Quad9 über TLS hinzu
forward-addr: 9.9.9.9@853#dns.quad9.net
forward-addr: 149.112.112.112@853#dns.quad9.netDetailparameter:
- forward-zone: Definieren Sie die Weiterleitungszone für Unbound.
- name: Auf “.” setzen, um alle DNS-Abfragen weiterzuleiten.
- forward-addr: Verwenden Sie einen bestimmten Forwarder, um alle DNS-Abfragen weiterzuleiten. Dieses Beispiel verwendet Quad9-DNS mit aktivierter DNS-over-TLS (DoT).
Jetzt speichern und beenden Sie die Datei ‘/etc/unbound/unbound.conf‘, wenn alles fertig ist.
Führen Sie als Nächstes den folgenden Befehl aus, um die Unbound-Konfigurationen zu überprüfen und sicherzustellen, dass Sie eine korrekte und ordnungsgemäße Konfiguration haben. Bei Erfolg sollten Sie eine Ausgabe wie ‘unbound-checkconf: keine Fehler in /etc/unbound/unbound.conf‘ erhalten.
unbound-checkconf
Jetzt starten Sie den Unbound-Dienst über das systemctl-Befehlswerkzeug unten neu und wenden die Änderungen an.
sudo systemctl restart unboundDamit haben Sie nun die Unbound-Konfiguration abgeschlossen und es läuft jetzt auf der IP-Adresse ‘192.168.5.25‘ mit dem Standard-UDP-Port ‘53‘.
In den nächsten Schritten richten Sie die firewalld ein, um den DNS-Port zu öffnen, und richten die Unbound-Protokollierung über Rsyslog und Logrotate ein.
Einrichten von Firewalld
Also, Unbound läuft auf dem Standard-UDP-Port 53. Jetzt müssen Sie den DNS-Port 53/UDP in firewalld öffnen und Clients den Zugriff auf Ihren Unbound-DNS-Server erlauben.
Führen Sie den folgenden firewall-cmd-Befehl aus, um den neuen Dienst ‘dns‘ hinzuzufügen. Laden Sie dann die firewalld neu, um die Änderungen anzuwenden. Bei Erfolg sollten Sie eine Ausgabe wie ‘success‘ in Ihrem Terminal erhalten.
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reloadFühren Sie als Nächstes den folgenden Befehl aus, um die Liste der aktivierten Dienste in firewalld zu überprüfen. Und Sie sollten den Dienst ‘dns‘ in der firewalld sehen.
sudo firewall-cmd --list-allAusgabe:

Einrichten von Unbound-Logs über Rsyslog und Logrotate
Nachdem Sie die firewalld konfiguriert haben, richten Sie nun eine Protokolldatei für Unbound über rsyslog und logrotate ein. Der Rsyslog-Dienst erstellt eine spezifische Protokolldatei für Unbound, und der logrotate wird die Unbound-Protokolldatei zu einem bestimmten Zeitpunkt rotieren.
Erstellen Sie eine neue Konfigurationsdatei ‘/etc/rsyslog.d/unbound.conf‘ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/rsyslog.d/unbound.confFügen Sie die folgenden Zeilen in die Datei ein. Damit erstellt Rsyslog eine neue Protokolldatei ‘/var/log/unbound.log‘ für ‘$programname’ == ‘unbound‘.
# Protokollnachrichten, die von der Unbound-Anwendung generiert werden
if $programname == 'unbound' then /var/log/unbound.log
# stoppe die weitere Verarbeitung
& stopSpeichern Sie die Datei und beenden Sie die Datei ‘/etc/rsyslog.d/unbound.conf‘, wenn Sie fertig sind.
Erstellen Sie als Nächstes eine neue Logrotate-Konfigurationsdatei ‘/etc/logrotate.d/unbound‘ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/logrotate.d/unboundFügen Sie die folgenden Zeilen in die Datei ein. Dies wird die Protokolldrehung für die Unbound-Protokolldatei ‘/var/log/unbound.log‘ täglich erstellen.
/var/log/unbound.log {
daily
rotate 7
missingok
create 0640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}Speichern Sie die Datei und beenden Sie den Editor, wenn Sie fertig sind.
Zuletzt führen Sie den folgenden systemctl-Befehl aus, um sowohl die Rsyslog- als auch die Logrotate-Dienste neu zu starten und die Änderungen auf Ihr System anzuwenden.
sudo systemctl restart rsyslog
sudo systemctl restart logrotateDamit haben Sie nun die Unbound-Installation abgeschlossen. Im nächsten Schritt erfahren Sie, wie Sie eine lokale Clientmaschine einrichten, um Unbound als DNS-Resolver zu verwenden, und zwar auf zwei Arten, und dann überprüfen Sie den Unbound-DNS-Server von dort aus.

Einrichten des DNS-Resolvers für den Client
Um einen DNS-Resolver auf Clientmaschinen einzurichten, können Sie verschiedene Methoden verwenden. In diesem Schritt erfahren Sie, wie Sie DNS-Resolver über NetworkManager und über systemd-resolved in Kombination mit NetworkManager einrichten.
Über NetworkManager
Wenn Sie den DNS-Resolver direkt über NetworkManager einrichten möchten, müssen Sie Ihre Netzwerkschnittstellenkonfigurationen bearbeiten, die im Verzeichnis ‘/etc/NetworkManager/system-connections/‘ gespeichert sind.
In diesem Beispiel ist die Hauptverbindung für die Clientmaschine ‘eth0‘, sodass die Konfiguration im NetworkManager ‘/etc/NetworkManager/system-connections/eth0.nmconnection‘ sein sollte. Möglicherweise haben Sie unterschiedliche Schnittstellennamen wie eth1 und viele mehr.
Öffnen Sie die NetworkManager-Schnittstellenkonfigurationsdatei ‘/etc/NetworkManager/system-connections/eth0.nmconnection‘ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/NetworkManager/system-connections/eth0.nmconnectionFügen Sie die folgenden Zeilen im Abschnitt ‘[ipv4]‘ hinzu. Stellen Sie außerdem sicher, dass Sie die IP-Adresse im Parameter ‘dns‘ mit Ihrem Unbound-DNS-Server ändern.
[ipv4]
...
dns=192.168.5.25
ignore-auto-dns=trueSpeichern Sie die Datei und beenden Sie die Datei, wenn Sie fertig sind.
Führen Sie als Nächstes den folgenden systemctl-Befehl aus, um den NetworkManager-Dienst neu zu starten und die Änderungen anzuwenden. Überprüfen Sie dann die DNS-Resolver-Konfigurationsdatei ‘/etc/resolv.conf‘ über den cat-Befehl.
sudo systemctl restart NetworkManager
cat /etc/resolv.confSie sollten eine Ausgabe erhalten, dass die IP-Adresse ‘192.168.5.25‘ als Standard-DNS-Resolver für Ihre Clientmaschine konfiguriert ist.

Über systemd-resolved und NetworkManager
Eine andere Möglichkeit, einen DNS-Resolver einzurichten, besteht darin, systemd-resolved und NetworkManager zu verwenden. Damit können Sie den DNS-Resolver systemweit einfach ändern und sind nicht von den Netzwerkschnittstellen auf Ihrem System abhängig.
Bei RHEL-basierten Distributionen ist systemd-resolved noch nicht installiert. Sie können es ganz einfach über den folgenden dnf-Befehl installieren. Wenn Sie dazu aufgefordert werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren.
sudo dnf install systemd-resolvedAusgabe:

Nachdem systemd-resolved installiert ist, öffnen Sie die Konfigurationsdatei ‘/etc/systemd/resolved.conf‘ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/systemd/resolved.confIm Abschnitt ‘[Resolver]‘ kommentieren Sie den Parameter ‘DNS‘ aus und fügen Sie die IP-Adresse Ihres Unbound-DNS-Servers hinzu.
[Resolver]
DNS=192.168.5.25Speichern Sie die Datei und beenden Sie die Datei, wenn Sie fertig sind.
Führen Sie als Nächstes 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üfen Sie nun den Dienst ‘systemd-resolved‘, um sicherzustellen, dass der Dienst läuft. Sie sollten eine Ausgabe wie ‘active (running)‘ erhalten, was bestätigt, dass der Dienst läuft. Und die Ausgabe ‘Loaded ../../systemd-resolved.service; enabled;..‘ bestätigt, dass der Dienst aktiviert ist und beim Systemstart automatisch gestartet wird.
sudo systemctl status systemd-resolvedAusgabe:

Mit dem laufenden systemd-resolved werden Sie als Nächstes das DNS-Backend für den NetworkManager-Dienst ändern.
Öffnen Sie die NetworkManager-Konfigurationsdatei ‘/etc/NetworkManager/NetworkManager.conf‘ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/NetworkManager/NetworkManager.confFügen Sie im Abschnitt ‘[main]‘ den Parameter ‘dns‘ mit dem Wert ‘systemd-resolved‘ hinzu. Dies überschreibt den DNS-Server in Ihrem NetworkManager, um den Dienst ‘systemd-resolved‘ zu verwenden.
[main]
dns=systemd-resolvedSpeichern Sie die Datei und beenden Sie die Datei, wenn Sie fertig sind.
Führen Sie als Nächstes den folgenden systemctl-Befehl aus, um den NetworkManager-Dienst neu zu starten und die Änderungen anzuwenden. Der neue DNS-Resolver für den NetworkManager wird in der Datei ‘/run/NetworkManager/resolv.conf‘ geschrieben.
sudo systemctl restart NetworkManagerFühren Sie den folgenden Befehl aus, um die Standarddatei ‘/etc/resolve.conf‘ zu entfernen. Erstellen Sie dann eine neue Symlink-Datei von ‘/run/NetworkManager/resolv.conf‘ zu ‘/etc/resolv.conf‘.
rm -f /etc/resolv.conf
ln -s /run/NetworkManager/resolv.conf /etc/resolv.confDamit verwendet Ihre Clientmaschine jetzt systemd-resolved als DNS-Resolver. Hinter dem ‘systemd-resolved‘ verwenden Sie den Unbound-DNS-Server.
Unten finden Sie die Details der Datei ‘/etc/resolv.conf‘, nachdem Sie systemd-resolved und NetworkManager verwendet haben.
cat /etc/resolv.confAusgabe:

Überprüfen des Unbound-DNS-Servers
Führen Sie den folgenden dig-Befehl aus, um sicherzustellen, dass der Unbound-DNS als DNS-Resolver funktioniert. Der Parameter ‘@192.168.5.25‘ stellt sicher, dass Sie einen Unbound-DNS-Server verwenden, der auf der IP-Adresse ‘192.168.5.25‘ läuft.
dig @192.168.5.25Bei Erfolg erhalten Sie eine Antwort vom Root-DNS-Server wie die folgende Ausgabe. Außerdem werden Sie das Flag ‘ad‘ (authentische Daten) in der Header-Ausgabe bemerken, was bedeutet, dass DNSSEC aktiviert ist.

Führen Sie als Nächstes den folgenden Befehl aus, um sicherzustellen, dass Clients auf Domainnamen im Internet zugreifen können.
dig google.com
dig fb.comBei Erfolg sollten Sie eine Ausgabe mit den DNS-Datensätzen für die Domains ‘google.com‘ und ‘fb.com‘ erhalten. Sie können sehen, dass der DNS-Resolver, der die Abfrage beantwortet, ‘127.0.0.53#53‘ ist, was der systemd-resolved ist, der Unbound als Standard-Resolver verwendet. Außerdem können Sie die ‘Query time‘ für jede Abfrage sehen, die ‘Query time‘ für die Domain ‘google.com‘ beträgt ‘74ms‘ und für ‘fb.com‘ ‘154ms‘.
Ausgabe für google.com:

Ausgabe für fb.com:

Wenn Sie den dig-Befehl erneut ausführen, sollte die ‘Query time‘ reduziert werden. Und das bestätigt, dass Ihre Abfragen zwischengespeichert wurden und der DNS-Cache funktioniert.
dig google.com
dig fb.comAusgabe:


Überprüfen Sie als Nächstes die lokale Domain oder Sub-Domain über den folgenden dig-Befehl. Bei Erfolg wird jede Sub-Domain auf die korrekte IP-Adresse verwiesen, wie in der Unbound-Konfigurationsdatei ‘/etc/unbound/unbound.conf‘ konfiguriert.
dig firewall.garden.lan +short
dig vault.garden.lan +short
dig media.garden.lan +shortAusgabe:

Führen Sie nun den folgenden dig-Befehl aus, um sicherzustellen, dass 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 +shortAusgabe:

Zuletzt können Sie auch DoT (DNS über TLS) über tcpdump überprüfen. Installieren Sie das Paket ‘tcpdump‘ auf Ihrem Unbound-Server über den folgenden dnf-Befehl.
sudo dnf install tcpdumpGeben Sie y ein, wenn Sie dazu aufgefordert werden, und drücken Sie ENTER, um fortzufahren.

Führen Sie nun den folgenden tcpdump-Befehl aus, um den Datenverkehr auf der Schnittstelle ‘eth0‘ mit dem DoT-Port 853 zu überwachen. In diesem Beispiel läuft der Unbound-DNS auf der IP-Adresse ‘192.168.5.25‘ mit der Schnittstelle ‘eth0‘.
tcpdump -vv -x -X -s 1500 -i eth0 'port 853'Wechseln Sie zur Clientmaschine und führen Sie den folgenden Befehl aus, um auf externe/Internet-Domainnamen über den folgenden dig-Befehl zuzugreifen.
dig twitter.comAusgabe:

Danach wechseln Sie zurück zum Unbound-Server und sollten nun eine Ausgabe erhalten, die dieser auf der tcpdump-Ausgabe ähnelt.

Damit haben Sie nun einen lokalen DNS-Server über Unbound installiert und konfiguriert. Außerdem haben Sie einen DNS-Resolver auf RHEL-Clients über systemd-resolved und NetworkManager konfiguriert.
Fazit
In diesem Leitfaden haben Sie den Unbound Local DNS Server auf einem Rocky Linux 9-Server installiert. Sie haben den DNS-Cache aktiviert, DNSSEC (standardmäßig aktiviert), private Adressen und ACLs konfiguriert, lokale Domains über local-zone hinzugefügt und dann Unbound als DNS-Resolver mit DoT (DNS-over-TLS) konfiguriert.
Darüber hinaus haben Sie grundlegende Datenschutz- und Sicherheitsmaßnahmen konfiguriert, Unbound optimiert und Unbound-Protokolle über rsyslog und logrotate konfiguriert.
Am Ende dieses Leitfadens haben Sie auch gelernt, wie Sie einen DNS-Resolver auf RHEL-basierten Distributionen über NetworkManager und systemd-resolved einrichten. Und auch die grundlegende Verwendung des dig-Befehls zum Überprüfen des DNS-Servers gelernt.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.