Dieses Tutorial zeigt Ihnen, wie Sie einen lokalen DNS-Resolver unter Ubuntu 20.04 mit Unbound einrichten . Ein DNS-Resolver ist unter vielen Namen bekannt, von denen einige unten aufgeführt sind. Sie beziehen sich alle auf dasselbe.
- vollständiger Resolver (im Gegensatz zum Stub-Resolver)
- rekursiver DNS-Server
- rekursiver Nameserver
- rekursiver Resolver
- DNS-Rekursor
Beispiele für DNS-Resolver sind 8.8.8.8
(öffentlicher Google-DNS-Server) und 1.1.1.1
(öffentlicher Cloudflare-DNS-Server). Das Betriebssystem auf Ihrem Computer verfügt ebenfalls über einen Resolver, obwohl er aufgrund seiner begrenzten Fähigkeiten Stub-Resolver genannt wird. Ein Stub-Resolver ist ein kleiner DNS-Client auf dem Computer des Endbenutzers, der DNS-Anfragen von Anwendungen wie Firefox empfängt und Anfragen an einen rekursiven Resolver weiterleitet . Fast jeder Resolver kann DNS-Antworten zwischenspeichern, um die Leistung zu verbessern, daher werden sie auch Caching-DNS-Server genannt .
Warum einen eigenen DNS-Resolver ausführen
Normalerweise verwendet Ihr Computer, Router oder Server den DNS-Resolver Ihres Internetdienstanbieters, um DNS-Namen abzufragen. Warum also einen lokalen DNS-Resolver ausführen?
- Es kann DNS-Lookups beschleunigen, da der lokale DNS-Resolver nur Ihre DNS-Anfragen abhört und nicht auf die DNS-Anfragen anderer Personen antwortet, sodass Sie eine viel höhere Chance haben, DNS-Antworten direkt aus dem Cache des Resolvers zu erhalten. Die Netzwerklatenz zwischen Ihrem Computer und dem DNS-Resolver wird eliminiert (nahezu null), sodass DNS-Abfragen schneller an Root-DNS-Server gesendet werden können.
- Wenn Sie einen Mailserver betreiben und DNS-Blacklists (DNSBL) verwenden, um Spam zu blockieren, sollten Sie Ihren eigenen DNS-Resolver ausführen, da einige DNS-Blacklists wie URIBL Anfragen von öffentlichen DNS-Resolvern ablehnen.
- Wenn Sie Ihren eigenen VPN-Server auf einem VPS (Virtual Private Server) betreiben, empfiehlt es sich auch, einen DNS-Resolver auf demselben VPS zu installieren.
- Möglicherweise möchten Sie auch Ihren eigenen DNS-Resolver ausführen, wenn Sie nicht möchten, dass Ihr Internet-Browserverlauf auf einem Drittanbieter-Server gespeichert wird.
Hinweis :Local
bedeutet nicht Ihren Heimcomputer. Vielmehr bedeutet dies, dass der DNS-Resolver auf derselben Box oder demselben Netzwerk wie der DNS-Client ausgeführt wird. Sie können den ungebundenen DNS-Resolver auf Ihrem Heimcomputer installieren. Es ist lokal auf Ihrem Heimcomputer. Sie können den ungebundenen DNS-Resolver auch auf einem Cloud-Server installieren und er ist lokal auf dem Cloud-Server.
Ungebundener DNS-Resolver
Unbound ist ein Open-Source-DNS-validierender Resolver, was bedeutet, dass er eine DNSSEC-Validierung durchführen kann, um sicherzustellen, dass die DNS-Antwort authentisch ist. Ungebundene Funktionen:
- Leicht und extrem schnell, da es keine vollwertige autoritative DNS-Serverfunktionalität bietet. Auf einem meiner Server verbraucht Unbound ein Viertel des Speichers, den BIND9 benötigt.
- DNS-Antwortcache
- Prefetch:Abrufen von Daten, die kurz vor dem Ablauf stehen, damit der Client keine Latenzspitzen bekommt, wenn die Suche wiederholt werden muss, wenn TTL für Daten abläuft.
- DNS über TLS
- DNS über HTTPS
- Minimierung des Abfragenamens:Senden Sie eine minimale Menge an Informationen an Upstream-Server, um den Datenschutz zu verbessern.
- Aggressive Nutzung von DNSSEC-validiertem Cache
- Autoritätszonen, für eine lokale Kopie der Stammzone
- DNS64
- DNSCrypt
- DNSSEC-Validierung:Sie ist standardmäßig auf Ubuntu aktiviert 🙂
- EDNS-Client-Subnetz
- Kann als DNS-Weiterleitung ausgeführt werden.
- Unterstützt lokale Daten- und Antwortrichtlinienzonen, um eine benutzerdefinierte Antwort für bestimmte Domänennamen zurückzugeben.
Schritt 1:Unbound DNS Resolver auf Ubuntu 20.04 installieren
Führen Sie den folgenden Befehl aus, um Unbound unter Ubuntu 20.04 aus dem Standard-Repository zu installieren.
sudo apt update sudo apt install unbound
Version prüfen.
unbound -V
Beispielausgabe:
Standardmäßig startet Unbound automatisch nach der Installation. Sie überprüfen seinen Status mit:
systemctl status unbound
Wenn es nicht läuft, starten Sie es mit:
sudo systemctl start unbound
Und aktivieren Sie den automatischen Start beim Booten:
sudo systemctl enable unbound
Hinweis :Wenn ein anderer Dienst UDP-Port 53 abhört, kann Unbound möglicherweise nicht gestartet werden. Sie müssen diesen Dienst stoppen, bevor Sie ungebunden starten. Führen Sie den folgenden Befehl aus, um herauszufinden, welcher Dienst bereits UDP-Port 53 verwendet.
sudo ss -lnptu | grep 53
Wenn Sie den BIND9-Resolver zuvor installiert haben, müssen Sie den folgenden Befehl ausführen, um ihn zu stoppen und zu deaktivieren, damit Unbound den UDP-Port 53 abhören kann. Standardmäßig lauscht Unbound auf 127.0.0.1:53
und [::1]:53
sudo systemctl disable named --now
Schritt 2:Ungebunden konfigurieren
Die Hauptkonfigurationsdatei für Unbound ist /etc/unbound/unbound.conf
. Standardmäßig bietet der Unbound-Server auf Ubuntu nur rekursive Dienste für localhost. Anfragen von außen werden abgelehnt.
Bearbeiten Sie die Konfigurationsdatei.
sudo nano /etc/unbound/unbound.conf
Standardmäßig gibt es in dieser Datei nur eine Konfigurationszeile.
include: "/etc/unbound/unbound.conf.d/*.conf"
Dazu gehören die Konfigurationsdateien unter /etc/unbound/unbound.conf.d/
Verzeichnis, das zwei Konfigurationsdateien enthält.
qname-minimisation.conf
:Aktiviert die QNAME-Minimierung.root-auto-trust-anchor-file.conf
:Aktiviert die DNSSEC-Validierung.
Sie müssen diese beiden Dateien nicht berühren. Sie müssen nur wissen, dass sie Ihrer DNS-Auflösung guttun werden. Jetzt müssen wir unsere benutzerdefinierten Konfigurationen hinzufügen. Sie können sich die Beispielkonfigurationsdatei /usr/share/doc/unbound/examples/unbound.conf
ansehen um zu erfahren, wie Unbound konfiguriert wird. Zu Ihrer Bequemlichkeit habe ich eine minimale Konfiguration für Sie zusammengestellt. Fügen Sie die folgenden Zeilen in /etc/unbound/unbound.conf
hinzu Datei.
server: # the working directory. directory: "/etc/unbound" # run as the unbound user username: unbound verbosity: 2 # uncomment and increase to get more logging. # listen on all interfaces, answer queries from the local subnet. interface: 0.0.0.0 # comment out the following line if your system doesn't have IPv6. interface: ::0 # perform prefetching of almost expired DNS cache entries. prefetch: yes access-control: 10.0.0.0/8 allow access-control: 127.0.0.1/24 allow access-control: 2001:DB8::/64 allow # hide server info from clients hide-identity: yes hide-version: yes remote-control: # Enable remote control with unbound-control(8) here. control-enable: no # what interfaces are listened to for remote control. # give 0.0.0.0 and ::0 to listen to all interfaces. # set to an absolute path to use a unix local name pipe, certificates # are not used for that, so key and cert files need not be present. control-interface: 127.0.0.1 # control-interface: ::1 # port number for remote control operations. control-port: 8953
Die obigen Konfigurationen sind selbsterklärend. Es gibt zwei Dinge, die Sie möglicherweise berücksichtigen müssen.
(1) Ubuntu führt standardmäßig den systemd-aufgelösten Stub-Resolver aus, der auf 127.0.0.53:53
lauscht . Sie müssen es stoppen, damit unbound an 0.0.0.0:53
binden kann .
sudo systemctl disable systemd-resolved --now
(2) Wenn Ihr lokaler Netzwerkbereich nicht 10.0.0.0/8
ist , müssen Sie das ändern, zum Beispiel
access-control: 192.168.0.0/24 allow
ungebunden akzeptiert also DNS-Anfragen aus dem Netzwerk 192.168.0.0/24.
Speichern und schließen Sie die Datei. Starten Sie dann Unbound neu.
sudo systemctl restart unbound
Überprüfen Sie den Status. Stellen Sie sicher, dass es ausgeführt wird.
systemctl status unbound
Wenn auf dem Unbound-Server eine UFW-Firewall ausgeführt wird, müssen Sie Port 53 öffnen, damit LAN-Clients DNS-Anfragen senden können.
sudo ufw allow in from 10.0.0.0/8 to any port 53
Dadurch werden TCP- und UDP-Port 53 für das private Netzwerk 10.0.0.0/8 geöffnet.
Schritt 3:Festlegen des Standard-DNS-Resolvers auf Ubuntu 20.04-Server
Wir müssen den Ubuntu 20.04-Server dazu bringen, 127.0.0.1 als DNS-Resolver zu verwenden, damit unbound DNS-Anfragen beantwortet. Das ungebundene Paket auf Ubuntu wird mit einem systemd-Dienst unbound-resolvconf.service
ausgeliefert das soll uns helfen, dies zu erreichen. Ich habe jedoch festgestellt, dass es nicht funktioniert.
Stattdessen können Sie einen benutzerdefinierten unbound-resolvconf.service
erstellen Datei.
sudo nano /etc/systemd/system/unbound-resolvconf.service
Fügen Sie dieser Datei die folgenden Zeilen hinzu.
[Unit] Description=local unbound via resolvconf After=unbound.service ConditionFileIsExecutable=/sbin/resolvconf [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound' ExecStop=/sbin/resolvconf -d lo.unbound [Install] WantedBy=unbound.service
Speichern und schließen Sie diese Datei. Laden Sie dann systemd neu.
sudo systemctl daemon-reload
Stellen Sie sicher, dass Ihr System über die resolvconf
verfügt binär.
sudo apt install openresolv
Als nächstes starten Sie diesen Dienst neu.
sudo systemctl restart unbound-resolvconf.service
Überprüfen Sie nun den Inhalt von /etc/resolv.conf
.
cat /etc/resolv.conf
Wie Sie sehen können, ist 127.0.0.1 (ungebunden) der Standard-DNS-Resolver.
Fehlerbehebung
Wenn Sie einen anderen Wert in /etc/resolv.conf
sehen Datei, das bedeutet, dass Unbound immer noch nicht Ihr Standard-DNS-Resolver ist. Beachten Sie, dass einige Hosting-Anbieter wie Linode möglicherweise einen Netzwerkhelfer verwenden, um die /etc/resolv.conf
automatisch zu generieren Datei. Um den Standard-DNS-Resolver zu ändern, müssen Sie diesen Netzwerkhelfer in der Hosting-Systemsteuerung deaktivieren.
Wenn diese Methode immer noch nicht funktioniert, liegt es vielleicht daran, dass die /etc/resolv.conf
Datei auf Ihrem Ubuntu-Server ist kein symbolischer Link zu /run/resolvconf/resolv.conf
. Sie müssen die /etc/resolv.conf
löschen Datei und erstellen Sie einen symbolischen Link.
sudo rm /etc/resolv.conf sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Wenn Sie den WireGuard VPN-Client auf dem Ubuntu-Server ausführen, müssen Sie die folgende DNS-Einstellung in der Konfigurationsdatei des WireGuard-Clients verwenden.
DNS = 127.0.0.1
Starten Sie dann den WireGuard VPN-Client neu.
Schritt 4:Festlegen des Standard-DNS-Resolvers auf Client-Computern
Auf dem Ubuntu-Desktop können Sie den obigen Anweisungen folgen, um den Standard-DNS-Resolver festzulegen, aber denken Sie daran, 127.0.0.1 durch die IP-Adresse des ungebundenen Servers zu ersetzen. Die Schritte zum Festlegen des Standard-DNS-Resolvers unter MacOS und Windows finden Sie im Internet.
So deaktivieren Sie IPv6 in Unbound
Wenn Ihr Server keine IPv6-Konnektivität hat, empfiehlt es sich, IPv6 in Unbound zu deaktivieren, um unnötige DNS-Lookups über IPv6 zu reduzieren. Um IPv6 in Unbound auf Ubuntu zu deaktivieren, fügen Sie einfach die folgende Zeile in server:
hinzu -Klausel in /etc/unbound/unbound.conf
Datei.
do-ip6: no
Speichern und schließen Sie die Datei. Starten Sie dann Unbound neu.
sudo systemctl restart unbound
Ungebundenes DNSSEC
DNSSEC ist eine Möglichkeit zu validieren, dass die DNS-Antwort nicht manipuliert wird. Es ist standardmäßig aktiviert, wenn Sie Unbound aus dem Standard-Ubuntu-Repository installieren. Führen wir eine schnelle DNS-Abfrage auf dem Ubuntu 20.04-Server durch.
dig A linuxbabe.com
Sie können die ad
sehen Flag in der DNS-Antwort. AD bedeutet authentische Daten.
Beachten Sie, dass der Domänenname DNSSEC aktivieren muss, damit die Validierung funktioniert. Wenn Sie das Anzeigen-Flag nicht sehen, könnte dies bedeuten, dass der Domainname DNSSEC nicht aktiviert hat.
Lokale-Daten
Sie können die Funktion für lokale Daten in Unbound verwenden, um lokale interne Hostnamen bereitzustellen oder öffentliche DNS-Einträge zu überschreiben.
Wenn ich beispielsweise unbound auf meinem Blog-Webserver installiere, kann ich die folgenden vier Zeilen im server:
hinzufügen -Klausel in den Unbound-Konfigurationsdateien, sodass die Domäne immer in localhost.
local-data: "linuxbabe.com A 127.0.0.1" local-data: "www.linuxbabe.com A 127.0.0.1" local-data: "linuxbabe.com AAAA ::1" local-data: "www.linuxbabe.com AAAA ::1"
Es konnten keine Server erreicht werden
Wenn Sie bei der Verwendung von dig
den folgenden Fehler sehen Befehl auf Client-Computern
;; connection timed out; no servers could be reached
Es könnte sein, dass Ihre Firewall-Regel falsch ist oder der Unbound-Resolver nicht ausgeführt wird.
Schlussfolgerung
Ich hoffe, dieses Tutorial hat Ihnen geholfen, einen lokalen DNS-Resolver unter Ubuntu 20.04 mit Unbound einzurichten. Da es auf einem lokalen Host/lokalen Netzwerk verwendet wird, ist keine Verschlüsselung (DNS über TLS oder DNS über HTTPS) erforderlich. Um einen DoT-Resolver oder DoH-Resolver einzurichten, lesen Sie bitte die folgenden Tutorials.
- Einfaches Einrichten eines DNS-über-TLS-Resolvers mit Nginx unter Ubuntu
- DNS über HTTPS (DoH) Resolver auf Ubuntu mit DNSdist einrichten
Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere Tipps und Tricks zu erhalten. Pass auf dich auf 🙂