GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Richten Sie Ihren eigenen DNS-Resolver auf Debian 10 Buster mit BIND9 ein

Dieses Tutorial zeigt Ihnen, wie Sie einen lokalen DNS-Resolver unter Debian 10 Buster mit der weit verbreiteten BIND9-DNS-Software einrichten. Es gibt viele Synonyme für DNS-Resolver, von denen einige unten aufgeführt sind. Sie beziehen sich alle auf dasselbe.

  • vollständiger Resolver (im Gegensatz zum Stub-Resolver)
  • DNS-Rekursor
  • rekursiver DNS-Server
  • rekursiver Resolver

Beachten Sie auch, dass ein DNS-Server auch als Nameserver bezeichnet werden kann. 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 PC 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 als Cache-DNS-Server bezeichnet.

Warum einen eigenen DNS-Resolver ausführen

Normalerweise verwendet Ihr Computer oder Router den DNS-Resolver Ihres ISP, um Domänennamen abzufragen, um eine IP-Adresse zu erhalten. Das Ausführen Ihres eigenen lokalen DNS-Resolvers kann die DNS-Suche beschleunigen, weil

  1. Der lokale DNS-Resolver hört nur auf Ihre DNS-Anfragen und antwortet nicht auf die DNS-Anfragen anderer Personen, sodass Sie eine viel höhere Chance haben, eine DNS-Antwort direkt aus dem Cache des Resolvers zu erhalten.
  2. 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 einen lokalen DNS-Resolver ausführen, um die DNS-Suche zu beschleunigen. 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.

Sie können auch Ihren eigenen DNS-Resolver ausführen, wenn Sie nicht möchten, dass Ihr Internet-Browserverlauf auf einem Drittanbieter-Server gespeichert wird.

Wenn Sie eine Website besitzen und möchten, dass Ihr eigener DNS-Server die Namensauflösung für Ihren Domainnamen übernimmt, anstatt den DNS-Server Ihres Domain-Registrars zu verwenden, müssen Sie einen autoritativen DNS-Server einrichten, der sich von einem DNS-Resolver unterscheidet. BIND kann gleichzeitig als autoritativer DNS-Server und als DNS-Resolver fungieren, aber es ist eine gute Praxis, die beiden Rollen auf verschiedenen Rechnern zu trennen . Dieses Tutorial zeigt, wie Sie einen lokalen DNS-Resolver einrichten, und da er auf dem lokalen Host/lokalen Netzwerk verwendet wird, ist keine Verschlüsselung (DNS über TLS oder DNS über HTTPS) erforderlich. Das Einrichten eines DoT- oder DoH-Servers wird in einem zukünftigen Artikel besprochen.

Bitte beachten Sie, dass Sie Root-Rechte haben müssen, wenn Sie Software unter Debian installieren. Sie können sudo hinzufügen am Anfang eines Befehls oder verwenden Sie su - Befehl, um zum Root-Benutzer zu wechseln.

Installieren Sie BIND9 auf Debian 10 Buster

BIND (Berkeley Internet Name Domain) ist eine Open-Source-DNS-Serversoftware, die aufgrund ihrer Stabilität und hohen Qualität unter Unix/Linux weit verbreitet ist. Es wurde ursprünglich von der UC Berkeley entwickelt und später im Jahr 1994 an das Internet Systems Consortium, Inc (ISC) übertragen.

Führen Sie den folgenden Befehl aus, um BIND 9 auf Debian 10 Buster aus dem Standard-Repository zu installieren. BIND 9 ist die aktuelle Version und BIND 10 ist ein totes Projekt.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils

Überprüfen Sie die Versionsinformationen.

sudo named -v

Beispielausgabe:

BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>

Führen Sie

aus, um die Versionsnummer und die Build-Optionen zu überprüfen
sudo named -V

Standardmäßig startet BIND automatisch nach der Installation. Sie können den Status überprüfen mit:

systemctl status bind9

Tipp:Wenn der obige Befehl nicht sofort beendet wird, drücken Sie Q.

Wenn es nicht läuft, starten Sie es mit:

sudo systemctl start bind9

Und aktivieren Sie den automatischen Start beim Booten:

sudo systemctl enable bind9

Der BIND-Server wird als bind ausgeführt Benutzer, der während der Installation erstellt wird und auf TCP- und UDP-Port 53 lauscht, wie Sie sehen können, wenn Sie den folgenden Befehl ausführen:

sudo netstat -lnptu | grep named

Normalerweise werden DNS-Anfragen an den UDP-Port 53 gesendet. Der TCP-Port 53 ist für Antworten größer als 512 Byte.

Der BIND-Daemon heißt named . (Ein Daemon ist eine Software, die im Hintergrund läuft.) Der named Binary wird von bind9 installiert Paket und es gibt eine weitere wichtige Binärdatei:rndc , der Remote-Name-Daemon-Controller, der von bind9utils installiert wird Paket. Der rndc Binary wird verwendet, um andere Aspekte des BIND-Daemons neu zu laden/zu stoppen und zu steuern. Die Kommunikation erfolgt über den TCP-Port 953.

Beispielsweise können wir den Status des BIND-Nameservers überprüfen.

sudo rndc status

Konfigurationen für einen lokalen DNS-Resolver

/etc/bind/ ist das Verzeichnis, das Konfigurationen für BIND enthält.

  • named.conf :die primäre Konfigurationsdatei, die Konfigurationen von drei anderen Dateien enthält.
  • db.127 :Localhost-IPv4-Reverse-Mapping-Zonendatei.
  • db.local :localhost leitet IPv4- und IPv6-Mapping-Zonendatei weiter.
  • db.leer :eine leere Zonendatei

Das bind9-Paket auf Debian 10 wird nicht mit db.root ausgeliefert -Datei verwendet es jetzt die Root-Hinweisdatei unter /usr/share/dns/root.hints . Die Root-Hinweise Datei wird von DNS-Resolvern verwendet, um Root-DNS-Server abzufragen. Es gibt 13 Gruppen von Root-DNS-Servern, von a.root-servers.net zu m.root-servers.net .

Standardmäßig bietet der BIND9-Server unter Debian nur rekursive Dienste für Localhost- und lokale Netzwerkclients. Anfragen von außen werden abgelehnt. Sie müssen also die Konfigurationsdateien nicht bearbeiten. Um Sie mit BIND 9-Konfigurationen vertraut zu machen, zeige ich Ihnen, wie Sie den Rekursionsdienst trotzdem aktivieren.

Die Haupt-BIND-Konfigurationsdatei /etc/bind/named.conf bezieht die Einstellungen aus 3 anderen Dateien.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

Um den Rekursionsdienst zu aktivieren, bearbeiten Sie die erste Datei.

sudo nano /etc/bind/named.conf.options

In den options Klausel, fügen Sie die folgenden Zeilen hinzu. Ersetzen Sie IP-Adressen in allow-recursion Anweisung mit Ihren eigenen lokalen Netzwerkadressen.

 // hide version number from clients for security reasons.
 version "not currently available";

 // optional - BIND default behavior is recursion
 recursion yes;

 // provide recursion service to trusted clients only
 allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

 // enable the query log
 querylog yes;

Speichern und schließen Sie die Datei. Testen Sie dann die Syntax der Konfigurationsdatei.

sudo named-checkconf

Wenn der Test erfolgreich ist (angezeigt durch eine stille Ausgabe), starten Sie BIND9 neu.

sudo systemctl restart bind9

Wenn auf dem BIND-Server eine Firewall läuft, müssen Sie Port 53 öffnen, damit LAN-Clients DNS-Anfragen senden können. Wenn Sie eine UFW-Firewall verwenden, können Sie den folgenden Befehl ausführen.

sudo ufw allow in from 192.168.0.0/24 to any port 53

Dadurch werden TCP- und UDP-Port 53 zum privaten Netzwerk 192.168.0.0/24 geöffnet. Dann können wir von einem anderen Computer im selben LAN aus den folgenden Befehl ausführen, um den A-Eintrag von google.com abzufragen. Ersetzen Sie 192.168.0.102 durch die IP-Adresse Ihres BIND-Resolvers.

dig A google.com @192.168.0.102

Überprüfen Sie nun auf dem BIND-Resolver das Abfrageprotokoll mit dem folgenden Befehl.

sudo journalctl -eu bind9

Dies zeigt die neueste Protokollnachricht der bind9-Serviceeinheit. Ich kann die folgende Zeile im Protokoll finden, die darauf hinweist, dass eine DNS-Abfrage für den A-Eintrag von google.com von Port 57806 der IP-Adresse 192.168.0.103 empfangen wurde.

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

Festlegen des Standard-DNS-Resolvers auf Debian 10 Buster Server

Auf dem BIND-Server müssen wir 127.0.0.1 als Standard-DNS-Resolver festlegen. Sie können den aktuellen DNS-Resolver unter Debian 10 mit dem folgenden Befehl überprüfen.

cat /etc/resolv.conf

Beispielausgabe:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#      DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 108.61.10.10

Das bind9-Paket auf Debian 10 wird mit einer Systemd-Diensteinheit bind9-resolvconf.service ausgeliefert , was uns hilft, BIND als Standard-DNS-Resolver auf dem Debian-Server festzulegen. Standardmäßig ist dieser Dienst deaktiviert, wir müssen ihn starten und den automatischen Start beim Booten aktivieren.

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

Sie können nun den Inhalt von /etc/resolv.conf prüfen wieder. Wie Sie sehen können, ist 127.0.0.1 (BIND) jetzt der Standard-DNS-Resolver auf Debian 10 Buster.

Wenn Ihr DNS-Resolver nicht 127.0.0.1 ist, hat Ihr System möglicherweise nicht die resolvconf Binary, was die bind9-resolvconf verursacht Dienst ausfallen. Sie müssen die resolvconf installieren Paket und starten Sie den Dienst neu.

sudo apt install resolvconf

sudo systemctl restart bind9-resolvconf

Festlegen des Standard-DNS-Resolvers auf Client-Computern

Jetzt können Sie andere Computer im LAN konfigurieren, um den BIND-Server als DNS-Resolver zu verwenden. Für Windows- und MacOS-Computer können Sie bei Google suchen, um herauszufinden, wie Sie Standard-DNS-Resolver festlegen. Hier zeige ich Ihnen, wie Sie den DNS-Resolver auf Linux-Desktop-Computern einstellen. Die folgende Methode funktioniert auf jeder Linux-Distribution, die NetworkManager verwendet.

Klicken Sie auf das Network Manager-Symbol auf Ihrem Linux-Desktop, um Edit connections zu finden . (Bei einigen Linux-Distributionen müssen Sie mit der rechten Maustaste auf den Netzwerk-Manager klicken.)

Wählen Sie dann die aktuelle Verbindung aus und klicken Sie auf das Zahnradsymbol, um diese Verbindung zu bearbeiten.

Wählen Sie die Registerkarte IPv4-Einstellungen, ändern Sie die Methode von Automatic(DHCP) an Automatic(DHCP) addresses only , wodurch verhindert wird, dass Ihr Ubuntu-System die DNS-Serveradresse von Ihrem Router erhält. Geben Sie dann einen DNS-Server an. Hier gebe ich die IP-Adresse des BIND-Servers in meinem LAN ein.

Speichern Sie Ihre Änderungen. Starten Sie anschließend NetworkManager neu, damit die Änderungen wirksam werden.

sudo systemctl restart NetworkManager

Sobald Sie wieder verbunden sind, klicken Sie erneut auf das Network Manager-Symbol und wählen Sie connection information . Sie können sehen, dass Ihr Linux-Desktop-Computer jetzt Ihren BIND-DNS-Server verwendet.

Wie man IPv6 in BIND deaktiviert

Wenn Sie IPv6 nicht in Ihrem Netzwerk verwenden, dann ist es eine gute Idee, IPv6 in BIND auszuschalten, da es sonst viele Fehler zu IPv6 im BIND-Protokoll geben wird, wie unten gezeigt.

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Um IPv6 in BIND auf Ubuntu zu deaktivieren, öffnen Sie einfach die /etc/default/bind9 Datei

sudo nano /etc/default/bind9

Fügen Sie -4 hinzu zu den OPTIONEN.

OPTIONS="-u bind -4"

Speichern und schließen Sie die Datei. Dann starten Sie BIND neu und Sie sind fertig.

sudo systemctl restart bind9

BIND SERVFAIL

Wenn Ihr BIND-Resolver keine DNS-Anfragen beantworten kann (SERVFAIL), und Sie die folgende Zeile im BIND-Protokoll sehen.

dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out

Es liegt wahrscheinlich daran, dass Ihr Server keine funktionierende IPv6-Konnektivität hat. Dies ist einem meiner Server passiert. Ich dachte, die IPv6-Konnektivität funktioniert wie gewohnt, aber sie ist plötzlich aus mir unbekannten Gründen unterbrochen. Nachdem ich IPv6 in BIND deaktiviert habe, funktioniert die DNS-Auflösung wieder.

Automatischer Neustart von BIND

Wenn Ihr Bind-Prozess aus irgendeinem Grund beendet wird, müssen Sie den folgenden Befehl ausführen, um ihn neu zu starten.

sudo systemctl restart bind9

Anstatt diesen Befehl manuell einzugeben, können wir bind automatisch neu starten lassen, indem wir named.service bearbeiten Systemd-Diensteinheit. Um die standardmäßige systemd-Dienstkonfiguration zu überschreiben, erstellen wir ein separates Verzeichnis.

sudo mkdir -p /etc/systemd/system/bind9.service.d/

Erstellen Sie dann eine Datei in diesem Verzeichnis.

sudo nano /etc/systemd/system/bind9.service.d/restart.conf

Fügen Sie die folgenden Zeilen in die Datei ein, wodurch Bind automatisch 5 Sekunden nach Erkennung eines Fehlers neu gestartet wird.

[Service]
Restart=always
RestartSec=5s

Speichern und schließen Sie die Datei. Laden Sie dann systemd neu.

sudo systemctl daemon-reload

Um zu prüfen, ob dies funktioniert, beenden Sie Bind mit:

sudo pkill named

Überprüfen Sie dann den Bindungsstatus. Bind wird automatisch neu gestartet.

systemctl status bind9

BIND max-cache-size

BIND kann DNS-Ergebnisse auf dem Server zwischenspeichern, um die DNS-Suche für Clients zu beschleunigen. BIND geht davon aus, dass Sie einen dedizierten DNS-Resolver ausführen, d. h. keine anderen Webdienste auf demselben Host ausgeführt werden, sodass die Standard-Cache-Größe (definiert durch max-cache-size ) ist auf 90 % des gesamten Arbeitsspeichers eingestellt, um die beste Leistung zu erzielen. Sie können eine Zeile wie unten im BIND-Protokoll sehen (sudo journalctl -eu bind9 ), wenn BIND startet.

none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)

Beachten Sie, dass BIND nicht sofort 90 % Ihres Arbeitsspeichers verwendet. Wenn es nur wenige DNS-Anfragen gibt, verwendet BIND nur wenig RAM, da nicht viele DNS-Ergebnisse zwischengespeichert werden müssen. Wenn es viele DNS-Anfragen gibt, wird viel RAM verwendet, um den DNS-Cache zu speichern.

Wenn Ihr Arbeitsspeicher begrenzt ist, möchten Sie möglicherweise nicht, dass BIND 90 % Ihres Arbeitsspeichers für den Cache verwendet. Bearbeiten Sie die BIND-Konfigurationsdatei /etc/bind/named.conf.options .

sudo nano /etc/bind/named.conf.options

Fügen Sie die folgende Direktive in den options hinzu Klausel. Ändern Sie 50 % in Ihren bevorzugten Wert.

max-cache-size 50%;

Starten Sie BIND neu, damit die Änderung wirksam wird.

sudo systemctl restart bind9

Schlussfolgerung

Ich hoffe, dieses Tutorial hat Ihnen geholfen, einen lokalen DNS-Resolver auf Debian 10 Buster mit BIND9 einzurichten. 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 🙂


Debian
  1. So legen Sie eine statische IP-Adresse unter Debian 10 Buster fest

  2. So richten Sie einen Samba-Server unter Debian 10 Buster ein

  3. So richten Sie einen NFS-Server unter Debian 10 Buster ein

  4. So installieren Sie Steam mit Steam Play unter Debian 10 Buster

  5. Richten Sie einen Mailserver mit PostfixAdmin auf Debian 9 ein

So richten Sie mit iRedMail ganz einfach einen Mailserver unter Debian 10 Buster ein

Betreiben Sie Ihre eigene Video-Sharing-Website mit YouPHPTube auf Debian 10 Buster

Richten Sie den autoritativen BIND-DNS-Server auf Debian 10 Buster ein

Richten Sie DNS über HTTPS (DoH) Resolver auf Ubuntu mit DNSdist 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