DNS-Server · 15 min read · Sep 08, 2025

So richten Sie einen lokalen DNS-Resolver mit Unbound auf Ubuntu 22.04 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 installieren Sie Unbound auf einem Ubuntu 22.04-Server und richten ihn als lokalen DNS-Server mit einigen aktivierten Funktionen ein, wie z. B. DNSSEC, DNS-Cache, lokale Domainnamen und Subdomains sowie DNS-over-TLS (DoT). Sie richten auch das Unbound-Logging über Rsyslog und Logrotate ein und konfigurieren eine Ubuntu-Clientmaschine, um Ihre Unbound-Installation zu überprüfen.

Voraussetzungen

Um dieses Tutorial abzuschließen, müssen Sie die folgenden Anforderungen erfüllen:

  • Ein Ubuntu 22.04-Server - Dieses Beispiel verwendet einen Ubuntu-Server mit dem Hostnamen ‘unbound-server‘ und der IP-Adresse ‘192.168.5.100‘.
  • Ein Nicht-Root-Benutzer mit sudo/root-Administratorrechten.

Das war’s. Sie sind jetzt bereit, mit der Unbound-Installation fortzufahren.

Installation des Unbound DNS-Servers

Standardmäßig bietet das Ubuntu-Repository ein Unbound-Paket, das Sie einfach über APT installieren können. Bevor Sie mit der Unbound-Installation beginnen, geben Sie den folgenden apt-Befehl ein, um Ihr Ubuntu-Paket-Index zu aktualisieren und zu aktualisieren.

sudo apt update

Überprüfen Sie nun die Details des Unbound-Pakets mit dem folgenden Befehl.

sudo apt info unbound

Zum Zeitpunkt des Schreibens bietet das Standard-Ubuntu-Repository Unbound 1.13.

zeige unmbound paket

Installieren Sie als Nächstes Unbound mit dem folgenden apt-Befehl. Wenn Sie dazu aufgefordert werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren.

sudo apt install unbound

Ausgabe:

installiere unbound

Sobald Unbound installiert ist, führen Sie den folgenden systemctl-Befehl aus, um den Unbound-Dienst zu überprüfen.

sudo systemctl is-enabled unbound  
sudo systemctl status unbound

Die Ausgabe ‘enabled‘ bestätigt, dass Unbound aktiviert ist und beim Systemstart automatisch gestartet wird. Und die Ausgabe ‘active (running)‘ bestätigt, dass Unbound läuft.

überprüfe unbound

Konfigurieren von Unbound als lokalen DNS-Server

Die Standardkonfiguration von Unbound befindet sich unter ‘/etc/unbound/unbound.conf’. In diesem Schritt werden Sie die Hauptkonfigurationsdatei von Unbound ‘/etc/unbound/unbound.conf’ mit Ihrem bevorzugten Editor ändern.

Sie werden nun die grundlegende Konfiguration eines Unbound-DNS-Servers kennenlernen, den DNS-Cache aktivieren, lokale Domainnamen und Subdomains einrichten und Unbound als DNS-Resolver mit aktiviertem DoT (DNS-over-TLS) einrichten.

Grundkonfiguration

Öffnen Sie die Standardkonfigurationsdatei von Unbound ‘/etc/unbound/unbound.conf’ mit Ihrem bevorzugten Editor. Dieses Beispiel verwendet nano zum Bearbeiten der Konfigurationsdatei ‘/etc/unbound/unbound.conf’.

sudo nano /etc/unbound/unbound.conf

Fügen Sie die folgenden Zeilen in die Datei ein. Der Abschnitt ‘server‘ ermöglicht es Ihnen, grundlegende Unbound-Konfigurationen festzulegen. In diesem Beispiel wird Unbound auf der lokalen IP-Adresse ‘192.168.5.100‘ mit dem Standardport 53 ausgeführt. Außerdem richten Sie das Logging für Syslog-Nachrichten ein und deaktivieren IPv6. Schließlich richten Sie Unbound so ein, dass es rekursiv jeden Hostnamen von den Root-DNS-Servern über die Datei ‘root-hints‘ abfragt.

#DNS-Over-TLS-Unterstützung hinzufügen  
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.100  
    port: 53  
    prefetch: yes  
  
    root-hints: /usr/share/dns/root.hints  
    harden-dnssec-stripped: yes

Detailparameter:

  • use-syslog: Aktivieren Sie das Logging für Syslog-Nachrichten.
  • username: Ausführen als Benutzer unbound, der der Standardbenutzer ist.
  • directory: Das Standardarbeitsverzeichnis für Unbound ist das Verzeichnis ‘/etc/unbound’.
  • tls-cert-bundle: Zertifikate, die verwendet werden, um Verbindungen, die upstream hergestellt werden, zu authentifizieren. Bei Debian-basierten Distributionen befindet sich die Zertifikatdatei unter ‘/etc/ssl/certs/ca-certificates.crt’.
  • 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. Außerdem können Sie auf einem bestimmten Port ausführen, indem Sie ein Format wie ‘IP-ADDRESS@PORT‘ hinzufügen.
  • port: Geben Sie den Port an, auf dem Unbound ausgeführt wird, und dieser Port wird die Verbindungen der Clients verwalten. Der Standard-DNS-Port ist 53.
  • prefetch: Auf ‘yes‘ setzen, um das Vorababrufen von fast abgelaufenen Nachrichten-Cache-Einträgen zu aktivieren.
  • root-hints: Eine Datei, die Details zu den Root-DNS-Servern enthält. Die Datei ‘/usr/share/dns/root.hints’ wird vom Paket ‘dns-root-data‘ bereitgestellt. Außerdem können Sie die root-hints-Datei von hier herunterladen ‘https://www.internic.net/domain/named.cache’.
  • harden-dnssec-stripped: Setzen Sie es auf ‘yes‘, um sich gegen den Empfang von dnssec-stripped Daten abzusichern.

DNS-Cache aktivieren

Fügen Sie als Nächstes die folgenden Zeilen hinzu, um die DNS-Cache-Abfrage in Ihrer Unbound-Installation zu aktivieren.

    cache-max-ttl: 14400  
    cache-min-ttl: 11000

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 Sie können dies auf Ihre Vorliebe ändern, z. B. ‘11000‘ Sekunden. Setzen Sie dies nicht auf mehr als 1 Stunde, da Sie aufgrund veralteter Daten in Schwierigkeiten geraten.

Unbound Datenschutz und Sicherheit

Jetzt können Sie die folgenden Zeilen hinzufügen, um grundlegende Datenschutz- und Sicherheitsmaßnahmen für Unbound einzurichten.

    aggressive-nsec: yes  
    hide-identity: yes  
    hide-version: yes  
    use-caps-for-id: yes

Detailparameter:

  • aggressive-nsec: Auf ‘yes‘ setzen, um aggressives NSEC zu aktivieren, um die DNSSEC-NSEC-Kette zu verwenden, um NXDOMAIN und andere Ablehnungen zu synthetisieren. Überprüfen Sie die IETF-Webseite über ‘NSEC’ https://www.ietf.org/archive/id/draft-ietf-dnsop-nsec-ttl-00.html.
  • hide-identity: Setzen Sie auf yes, um Antworten von Bind-Abfragen zu id.server oder hostname.bind zu deaktivieren.
  • hide-version: Setzen Sie auf yes, um version.server und version.bind-Abfragen zu deaktivieren.
  • use-caps-for-id: Setzen Sie auf yes, um die Verwendung von ‘0x100-encoded’ in der Abfrage zu aktivieren, um Spoofing-Versuche zu vereiteln.

Definieren Sie private Netzwerke und Zugriffskontrolllisten (ACLs)

Als Nächstes müssen Sie die privaten Adressen Ihres Netzwerks und die ACLs (Zugriffskontrolllisten) 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: 192.168.5.0/24  
    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 durchführen 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 allow

Detailparameter:

  • 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 durchführen dürfen. Der Parameter ‘allow‘ aktiviert rekursive Abfragen, während ‘allow_snoop‘ sowohl rekursive als auch nicht-rekursive Abfragen aktiviert.

Lokale Domain einrichten

Nachdem Sie die private Adresse und die Zugriffskontrolllisten konfiguriert haben, definieren Sie die lokale Zone Ihres Domainnamens. Dies ist besonders nützlich, wenn Sie mehrere selbst gehostete Anwendungen in Ihrem lokalen Netzwerk haben. Sie können ganz einfach Ihren Domainnamen oder Subdomains definieren und auf die spezifische Ziel-IP-Adresse verweisen.

Dieses Beispiel erstellt die Zone für die Domain ‘home.lan‘ mit dem Typ ‘static‘, dann erstellen Sie mehrere Subdomains über den Parameter ‘local-data‘. Jede Subdomain wird auf eine spezifische IP-Adresse verwiesen, und Sie erstellen auch PTR-Einträge über den Parameter ‘local-data-ptr‘.

    # lokale Zone  
    local-zone: "home.lan." static  
  
    local-data: "firewall.home.lan.  IN A 10.0.0.1"  
    local-data: "vault.home.lan.    IN A 10.0.0.2"  
    local-data: "media.home.lan.   IN A 10.0.0.3"  
    local-data: "docs.home.lan.       IN A 10.0.0.4"  
    local-data: "wiki.home.lan.     IN A 10.0.0.5"  
  
    local-data-ptr: "10.0.0.1  firewall.home.lan"  
    local-data-ptr: "10.0.0.2  vault.home.lan"  
    local-data-ptr: "10.0.0.3  media.home.lan"  
    local-data-ptr: "10.0.0.4  docs.home.lan"  
    local-data-ptr: "10.0.0.5  wiki.home.lan"

Detailparameter:

  • local-zone: Definieren Sie die lokale Domain hier.
  • local-data: Definieren Sie A-Einträge für Subdomains und welche lokale IP-Adresse aufgelöst wird.
  • local-data-ptr: Definieren Sie den PTR-Eintrag für Ihre Subdomains.

Unbound-Leistungsoptimierung und -anpassung

Fügen Sie die folgenden Zeilen hinzu, um mehr Leistung zu erzielen. Sie können die folgenden Parameter an Ihre 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 Platten, die für den Nachrichten-Cache verwendet werden. Setzen Sie es auf 8, um Unbound zu optimieren, um mehr Speicher für das Caching zu verwenden.
  • rrset-cache-slabs: die Anzahl der Platten, die für den RRset-Cache verwendet werden. Setzen Sie es auf 8, um Unbound zu optimieren, um mehr Speicher für den RRSet-Cache zu verwenden.
  • infra-cache-slabs: die Anzahl der Platten, die für den Infrastruktur-Cache verwendet werden. Setzen Sie es auf 8, um Unbound zu optimieren, um mehr Speicher für den Infrastruktur-Cache zu verwenden.
  • key-cache-slabs: die Anzahl der Platten, die für den Schlüssel-Cache verwendet werden. Setzen Sie es auf 8, um Unbound zu optimieren, um 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 256 MB, während der Standardwert nur 4 MB beträgt.
  • msg-cache-size: Geben Sie die Menge an Speicher für den Nachrichten-Cache an. Dieses Beispiel verwendet 128 MB, während der Standardwert nur 4 MB beträgt.
  • so-rcvbuf: Legen Sie die Puffergröße für den DNS-Port 53/udp auf 8 MB fest. Auf dem Ubuntu-System müssen Sie auch einen höheren Wert für den Kernelparameter ‘net.core.rmem_max‘ festlegen.

Unbound als DNS-Resolver mit DNS-over-TLS (DoT) einrichten

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).

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.net

Detailparameter:

  • 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 aktiviertem DNS-over-TLS (DoT).

Speichern Sie die Datei ‘/etc/unbound/unbound.conf’, wenn Sie fertig sind. Mit der modifizierten Unbound-Konfigurationsdatei können Sie jetzt den Unbound-Dienst neu starten und die Änderungen anwenden.

Führen Sie den folgenden Befehl aus, um die Unbound-Konfiguration zu überprüfen und zu verifizieren. Wenn erfolgreich, sollten Sie eine Ausgabe wie ‘unbound-checkconf: keine Fehler in /etc/unbound/unbound.conf’ erhalten.

sudo unbound-checkconf

Führen Sie als Nächstes den folgenden Befehl aus, um den Standardwert ‘net.core.rmem_max’ Ihres Systems über die Datei ‘/etc/sysctl.conf’ zu erhöhen. Wenden Sie dann die Änderungen über den Befehl ‘sysctl‘ an.

echo "net.core.rmem_max= 8388608" >> /etc/sysctl.conf  
sudo sysctl -p

Führen Sie danach den folgenden systemctl-Befehl aus, um den Unbound-Dienst neu zu starten und die Änderungen anzuwenden.

sudo systemctl restart unbound

Damit sollte der Unbound-Dienst mit der neuen Konfiguration auf der IP-Adresse 192.168.5.100 auf dem Port 53 ausgeführt werden.

konfiguriere unbound

Überprüfen Sie die Liste der offenen Ports auf Ihrem System über den ss-Befehl unten.

ss -tulpn

Sie erhalten eine Ausgabe wie diese - Der Standard-DNS-UDP-Port 53 wird vom Unbound-Dienst verwendet.

überprüfe unbound-port

Jetzt, da Sie die Unbound-Konfigurationen abgeschlossen haben, richten Sie die UFW-Firewall ein und öffnen den Standard-DNS-Port 53.

Einrichten der UFW-Firewall

Auf Ubuntu ist die standardmäßig installierte Firewall UFW. Sie ist installiert, aber noch inaktiv. In diesem Schritt richten Sie die UFW-Firewall ein und öffnen den UDP-Port für Unbound.

Führen Sie den folgenden Befehl aus, um den OpenSSH-Dienst in UFW über den folgenden Befehl zu öffnen. Dann können Sie den DNS-Port 53/udp zur UFW-Firewall hinzufügen.

sudo ufw allow OpenSSH  
sudo ufw allow 53/udp

Führen Sie als Nächstes den folgenden Befehl aus, um den UFW-Firewall-Dienst zu starten und zu aktivieren. Wenn Sie dazu aufgefordert werden, geben Sie y ein, um zu bestätigen, und drücken Sie ENTER, um fortzufahren.

sudo ufw enable

Die Ausgabe ‘Firewall ist aktiv und beim Systemstart aktiviert‘ bestätigt, dass die UFW-Firewall läuft und aktiviert ist, was bedeutet, dass die UFW-Firewall beim Systemstart automatisch gestartet wird.

Ausgabe:

einrichten ufw

Führen Sie jetzt den folgenden UFW-Befehl aus, um den Status der UFW-Firewall zu überprüfen. Sie sollten eine Ausgabe erhalten, dass der UFW-Status ‘aktiv‘ ist, mit dem OpenSSH-Dienst und dem DNS-Port 53/udp aktiviert.

sudo ufw status

Ausgabe:

überprüfe ufw

Einrichten des Unbound-Logs über Rsyslog und Logrotate

Nachdem Sie die UFW-Firewall konfiguriert haben, richten Sie jetzt eine Protokolldatei für Unbound über Rsyslog und Logrotate ein. Der Rsyslog-Dienst erstellt eine spezifische Protokolldatei für Unbound, und Logrotate wird die Unbound-Protokolldatei zu einem bestimmten Zeitpunkt rotieren.

Führen Sie den folgenden Befehl aus, um eine neue Rsyslog-Konfiguration ‘/etc/rsyslog.d/unbound.conf’ für den Unbound-Dienst hinzuzufügen. Damit werden die Unbound-Protokolle in ‘/var/log/unbound.log‘ gespeichert.

cat <

Führen Sie als Nächstes den folgenden Befehl aus, um die Logrotate-Konfiguration ‘/etc/logrotate.d/unbound‘ für den Unbound-Dienst hinzuzufügen. Dies wird die Protokollrotation für die Unbound-Protokolldatei ‘/var/log/unbound.log‘ täglich erstellen.

cat <

einrichten logging unbound

Führen Sie jetzt den folgenden systemctl-Befehl aus, um die Rsyslog- und Logrotate-Dienste neu zu starten. Dies wird die Änderungen anwenden, die Sie an beiden Diensten vorgenommen haben.

sudo systemctl restart rsyslog logrotate

Zuletzt können Sie die Protokolldatei überprüfen, indem Sie den Unbound-Dienst mit dem folgenden Befehl neu starten.

Damit werden die Nachrichten, die während des Neustartprozesses vom Unbound-Dienst generiert werden, in der Protokolldatei ‘/var/log/unbound.log‘ gespeichert. Führen Sie den cat-Befehl aus, um den Inhalt der Protokolldatei ‘/var/log/unbound.log‘ anzuzeigen.

sudo systemctl restart unbound  
cat /var/log/unbound.log

Ausgabe:

überprüfe unbound-log

Einrichten des DNS-Resolvers auf dem Client

Auf der Client-Seite müssen Sie den DNS-Resolver einrichten und Unbound als Standard-Resolver auf dem Client-System verwenden. Für die Ubuntu-Distribution können Sie NetworkManager, den systemd-resolved-Dienst oder eine statische Datei für ‘/etc/resolv.conf‘ verwenden.

In diesem Schritt lernen Sie, wie Sie den DNS-Resolver auf Ubuntu Desktop und Ubuntu Server einrichten.

Für Ubuntu Desktop

Der NetworkManager-Dienst verwaltet das Standardnetzwerk für die Ubuntu Desktop-Version. Sie können den DNS-Resolver also ganz einfach über den NetworkManager einrichten, was über die Befehlszeile, die GUI oder durch Bearbeiten der Konfigurationsdatei für jede Netzwerkschnittstelle erfolgen kann.

Um den DNS-Resolver über die Befehlszeile einzurichten, können Sie nmcli verwenden. Führen Sie den folgenden Befehl aus, um den DNS-Resolver für die spezifische Netzwerkschnittstelle einzurichten. Sie können den Schnittstellennamen eth0 ersetzen.

sudo nmcli connection modify eth0 ipv4.dns "192.168.5.100"

Jede von NetworkManager verwaltete Schnittstelle hat eine spezifische Konfigurationsdatei, die im Verzeichnis ‘/etc/NetworkManager/system-connections’ mit dem Format ‘.nmconnection’ gespeichert ist.

Sie können die Schnittstellenkonfiguration mit Ihrem bevorzugten Texteditor ändern und die folgenden Zeilen zum Abschnitt ‘[ipv4]‘ hinzufügen.

[ipv4]  
dns=192.168.5.100  
ignore-auto-dns=true  
never-default=true

Wenn Sie eine GUI-Anwendung bevorzugen, öffnen Sie die NetworkManager-Anwendung auf Ihrem Computer und bearbeiten Sie den Schnittstellennamen, den Sie ändern möchten. Klicken Sie auf die Registerkarte ‘IPv4-Einstellungen’ und geben Sie Ihren lokalen DNS-Server ein. Klicken Sie dann auf Speichern, um zu bestätigen.

dns resolver gui network manager

Für generische Ubuntu-Server

Für generische Ubuntu-Servermaschinen wird das Netzwerk von Netplan mit dem Backend-Systemd-networkd-Dienst verwaltet. Und für die DNS-Resolver-Konfiguration wird systemd-networkd verwendet, das systemd-resolved verwendet. Um den DNS-Resolver auf einem generischen Ubuntu-Server einzurichten, können Sie dies über den Dienst systemd-resolved erreichen.

Öffnen Sie die Konfigurationsdatei von systemd-resolved mit Ihrem bevorzugten Editor. Dieses Beispiel verwendet einen Nano-Editor.

sudo nano /etc/systemd/resolved.conf

Im Abschnitt ‘[Resolve]‘ kommentieren Sie den Parameter ‘DNS‘ aus und geben die IP-Adresse Ihres lokalen DNS-Servers ein.

[Resolve]  
DNS=192.168.5.100

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.

Führen Sie jetzt den folgenden Befehl aus, um den Dienst systemd-resolved neu zu starten und die Änderungen anzuwenden. Dann können Sie den Status des DNS-Resolvers über den resolvectl-Befehl wie unten überprüfen.

sudo systemctl restart systemd-resolved  
sudo resolvectl status

Wenn erfolgreich, sollten Sie eine Ausgabe wie diese sehen - Der Standard-DNS-Resolver wurde auf die IP-Adresse des lokalen DNS-Servers Unbound 192.168.5.100 geändert.

dns resolver systemd resolved

Testen des Unbound DNS-Servers

Um sicherzustellen, dass der Unbound DNS als DNS-Resolver funktioniert, führen Sie den folgenden dig-Befehl von der Ubuntu-Clientmaschine aus. Der Parameter ‘@192.168.5.100‘ stellt sicher, dass Sie einen Unbound-DNS-Server verwenden, der auf der IP-Adresse ‘192.168.5.100‘ ausgeführt wird.

dig @192.168.5.100

Wenn erfolgreich, erhalten Sie eine Antwort vom Root-DNS-Server wie die folgende Ausgabe. Außerdem werden Sie das ‘ad‘ ( authentic data) Flag in der Headerausgabe bemerken, was bedeutet, dass DNSSEC aktiviert ist.

überprüfe dig dns-server

Führen Sie als Nächstes den folgenden Befehl aus, um sicherzustellen, dass Clients auf Domainnamen im Internet zugreifen können.

dig github.com  
dig duckduckgo.com

Wenn erfolgreich, sollten Sie eine Ausgabe mit Details zu den DNS-Einträgen für die Domain ‘github.com‘ und ‘duckduckgo.com‘ erhalten. Sie können sehen, dass der DNS-Resolver, der die Abfrage beantwortet, ‘127.0.0.53#53’ ist, der systemd-resolved, 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 ‘github.com‘ beträgt ‘ 1748‘ und für ‘duckduckgo.com‘ beträgt sie ‘ 999‘.

Ausgabe für github.com:

dig github.com

Ausgabe für duckduckgo.com:

dig duckduckgo vorher

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

dig github.com  
dig duckduckgo.com

Zugriff auf Github, nachdem der Cache gespeichert wurde:

dns-cache überprüfen

Zugriff auf duckduckgo, nachdem der Cache gespeichert wurde:

nach dem Speichern

Überprüfen Sie als Nächstes die lokale Domain oder Subdomain über den folgenden dig-Befehl. Wenn erfolgreich, wird jede Subdomain auf die richtige IP-Adresse verwiesen, die in der Unbound-Konfigurationsdatei ‘/etc/unbound/unbound.conf‘ konfiguriert ist.

dig firewall.home.lan +short  
dig vault.home.lan +short  
dig media.home.lan +short

Ausgabe:

überprüfe lokale Domains

Führen Sie jetzt 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 +short

Ausgabe:

teste ptr-einträge

Sie können auch DoT (DNS über TLS) über tcpdump überprüfen. Installieren Sie das Paket ‘tcpdump‘ auf Ihrem Unbound-Server.

sudo apt install tcpdump

Geben Sie y ein, wenn Sie dazu aufgefordert werden, und drücken Sie ENTER, um fortzufahren.

installiere tcpdump

Führen Sie jetzt den folgenden tcpdump-Befehl aus, um den Datenverkehr auf der Schnittstelle ‘eth0‘ mit dem DoT-Port 853 zu überwachen. In diesem Beispiel wird der Unbound-DNS auf der IP-Adresse ‘192.168.5.100‘ mit der Schnittstelle ‘eth0‘ ausgeführt.

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 google.com

Ausgabe:

dig google

Wechseln Sie danach zurück zum Unbound-Server, und Sie sollten jetzt eine Ausgabe ähnlich dieser im tcpdump-Ausgang erhalten.

dns verschlüsselt mit DoT

Damit haben Sie jetzt den lokalen DNS-Server über Unbound auf dem Ubuntu-Server installiert und konfiguriert. Außerdem haben Sie einen DNS-Resolver auf Ubuntu-Desktops und -Servern über NetworkManager und systemd-resolved konfiguriert.

Fazit

In diesem Leitfaden haben Sie den Unbound Local DNS Server auf einem Ubuntu 22.04-Server installiert. Sie haben den DNS-Cache, DNSSEC (standardmäßig aktiviert), private Adressen und ACLs aktiviert, eine lokale Domain über die lokale 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 für DNS 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 Ubuntu-Desktops und -Servern über NetworkManager und systemd-resolved einrichten. Und auch die grundlegende Verwendung des dig-Befehls zum Überprüfen des DNS-Servers gelernt.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.