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
- 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.
- 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üfensudo 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 🙂