GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie den ungebundenen DNS-Resolver auf dem Ubuntu 20.04-Server ein

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.

aufgelöst wird
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 🙂


Ubuntu
  1. So richten Sie den Squid-Proxyserver unter Ubuntu 18.04 ein und installieren ihn

  2. So richten Sie WireGuard unter Ubuntu 22.04 ein

  3. So installieren Sie den ungebundenen DNS-Resolver unter Ubuntu 22.04

  4. So richten Sie einen TeamSpeak-Server unter Ubuntu 16.04 ein

  5. So richten Sie einen ungebundenen DNS-Resolver unter Ubuntu 20.04 ein

So richten Sie mit Nginx unter Ubuntu einfach einen DNS über TLS-Resolver ein

So richten Sie Quad 9 DNS auf Ubuntu 16.04 und Ubuntu 17.10 Desktop ein

Richten Sie einen lokalen DNS-Resolver auf Ubuntu 18.04, 16.04 mit BIND9 ein

Richten Sie den lokalen DNS-Resolver unter Ubuntu 20.04 mit BIND9 ein

So installieren Sie den DNS-Server unter Ubuntu 20.04 LTS

Ubuntu-Server mit EHCP einrichten (LAMP, DNS, FTP, Mail)