Domain Name Service (DNS) ist ein Internetdienst, der IP-Adressen und vollständig qualifizierte Domainnamen (FQDN) einander zuordnet. Auf diese Weise erleichtert DNS das Speichern von IP-Adressen. Computer, auf denen DNS ausgeführt wird, werden Namensserver genannt. Ubuntu wird mit BIND (Berkley Internet Naming Daemon) ausgeliefert, dem am häufigsten verwendeten Programm zur Wartung eines Nameserver unter Linux.,
Geben Sie an einer Terminalaufforderung den folgenden Befehl zum Installieren von DNS ein:
sudo apt install bind9
Ein sehr nützliches Paket zum Testen und Beheben von DNS-Problemen ist das Paket dnsutils
. Sehr oft werden diese Tools bereits installiert, aber um zu überprüfen und/oder zu installieren dnsutils
geben Sie Folgendes ein:
sudo apt install dnsutils
Konfiguration
Es gibt viele Möglichkeiten, BIND9 zu konfigurieren. Einige der häufigsten Konfigurationen sind ein Caching-Nameserver, ein primärer Server und ein sekundärer Server.,
-
Wenn BIND9 als Caching-Nameserver konfiguriert ist, findet BIND9 die Antwort auf Namensabfragen und merkt sich die Antwort, wenn die Domäne erneut abgefragt wird.
-
Als Primärserver liest BIND9 die Daten für eine Zone aus einer Datei auf seinem Host und ist für diese Zone maßgebend.
-
Als sekundärer Server ruft BIND9 die Zonendaten von einem anderen Nameserver ab, der für die Zone maßgebend ist.
Übersicht
Die DNS-Konfigurationsdateien werden im Verzeichnis /etc/bind
gespeichert., Die primäre Konfigurationsdatei ist /etc/bind/named.conf
, die im Layout des Pakets nur diese Dateien enthält.
Die Root-Nameserver wurden früher in der Datei beschrieben. Dies wird jetzt stattdessen von der /usr/share/dns/root.hints
– Datei bereitgestellt, die mit dem dns-root-data
– Paket geliefert wird, und wird in der obigen – Konfigurationsdatei referenziert.
Es ist möglich, denselben Server so zu konfigurieren, dass er ein Caching-Nameserver ist, primär und sekundär: Alles hängt von den Zonen ab, die er bedient., Ein Server kann der Start von Authority (SOA) für eine Zone sein, während er einen sekundären Dienst für eine andere Zone bereitstellt. Die ganze Zeit Caching-Dienste für Hosts auf dem lokalen LAN bereitstellt.
Caching-Nameserver
Die Standardkonfiguration fungiert als Caching-Server. Kommentieren und bearbeiten Sie einfach /etc/bind/named.conf.options
, um die IP-Adressen der DNS-Server Ihres ISP festzulegen:
forwarders { 1.2.3.4; 5.6.7.8;};
Hinweis
Ersetzen Sie
1.2.3.4
und5.6.7.8
durch die IP-Adressen der tatsächlichen nameserver.,
Um die neue Konfiguration zu aktivieren, starten Sie den DNS-Server neu. Über eine Terminalaufforderung:
sudo systemctl restart bind9.service
Informationen zum Testen eines Caching-DNS-Servers finden Sie unter dig.
Primärserver
In diesem Abschnitt wird BIND9 als Primärserver für die Domäne konfiguriert example.com
. Ersetzen Sie einfach example.com
mit der FQDN (Fully Qualified Domain Name).,
Zonendatei weiterleiten
Um BIND9 eine DNS-Zone hinzuzufügen und BIND9 in einen primären Server umzuwandeln, bearbeiten Sie zuerst /etc/bind/named.conf.local
:
zone "example.com" { type master; file "/etc/bind/db.example.com";};
Hinweis
Wenn bind wie bei DDNS automatische Updates für die Datei erhält, verwenden Sie
/var/lib/bind/db.example.com
anstelle von/etc/bind/db.example.com
sowohl hier als auch im folgenden Kopierbefehl.,
Verwenden Sie nun eine vorhandene Zonendatei als Vorlage, um die /etc/bind/db.example.com
– Datei zu erstellen:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Bearbeiten Sie die neue Zonendatei /etc/bind/db.example.com
und ändern Sie localhost.
in den FQDN lassen Sie die zusätzliche .
am Ende Ihres Servers., Ändern Sie 127.0.0.1
in die IP-Adresse des Nameserver und root.localhost
in eine gültige E-Mail-Adresse, jedoch mit einem .
anstelle der üblichen @
Symbol, wobei Sie am Ende erneut die .
. Ändern Sie den Kommentar, um die Domäne anzugeben, für die diese Datei bestimmt ist.
Erstellen Sie einen A-Datensatz für die Basisdomäne example.com
. Erstellen Sie außerdem einen A-Datensatz für ns.example.com
, den Nameserver in diesem Beispiel:
Sie müssen die Seriennummer jedes Mal erhöhen, wenn Sie Änderungen an der Zonendatei vornehmen., Wenn Sie vor dem Neustart von BIND9 mehrere Änderungen vornehmen, erhöhen Sie die Seriennummer einfach einmal.
Jetzt können Sie DNS-Einträge am unteren Rand der Zonendatei hinzufügen. Siehe Allgemeine Datensatztypen für Details.,
Hinweis
Viele Admins verwenden gerne das letzte Datum, das als Seriennummer einer Zone bearbeitet wurde, z. B. 2020012100, das yyyymmddss ist (wobei ss die Seriennummer ist)
Sobald Sie Änderungen an der Zonendatei vorgenommen haben, muss BIND9 neu gestartet werden, damit die Änderungen wirksam werden:
sudo systemctl restart bind9.service
Reverse Zone File
Nachdem die Zone eingerichtet ist und Namen in IP-Adressen aufgelöst werden, muss eine Reverse Zone hinzugefügt werden, damit DNS eine Adresse in einen Namen auflösen kann.,
Bearbeiten Sie /etc/bind/named.conf.local
und fügen Sie Folgendes hinzu:
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192";};
Hinweis
Ersetzen Sie
1.168.192
durch die ersten drei Oktette des verwendeten Netzwerks. Benennen Sie auch die Zonendatei/etc/bind/db.192
entsprechend. Es sollte mit dem ersten Oktett Ihres Netzwerks übereinstimmen.,
Erstellen Sie nun die /etc/bind/db.192
Datei:
sudo cp /etc/bind/db.127 /etc/bind/db.192
Weiter bearbeiten /etc/bind/db.192
Ändern der gleichen Optionen wie /etc/bind/db.example.com
:
Die Seriennummer in der umgekehrten Zone muss auch bei jeder Änderung inkrementiert werden. Für jeden Datensatz, den Sie in /etc/bind/db.example.com
konfigurieren, dh für eine andere Adresse, müssen Sie einen PTR-Datensatz in /etc/bind/db.192
.,
Nach dem Erstellen der Reverse Zone-Datei starten Sie BIND9 neu:
sudo systemctl restart bind9.service
Sekundärer Server
Sobald ein primärer Server konfiguriert wurde, wird dringend ein sekundärer Server empfohlen, um die Verfügbarkeit der Domäne aufrechtzuerhalten, falls der primäre nicht mehr verfügbar ist.
Zunächst muss auf dem primären Server die Zonenübertragung zulässig sein., Fügen Sie die Option allow-transfer
zu den Beispieldefinitionen für Vorwärts-und Rückwärtszonen in /etc/bind/named.conf.local
hinzu:
Hinweis
Ersetzen Sie
192.168.1.11
durch die IP-Adresse Ihres sekundären Nameserver.
Starten Sie BIND9 auf dem primären Server neu:
sudo systemctl restart bind9.service
Als nächstes installieren Sie das bind9-Paket auf dem sekundären Server auf dieselbe Weise wie auf dem primären., Bearbeiten Sie dann die /etc/bind/named.conf.local
und fügen Sie die folgenden Deklarationen für die Vorwärts-und Rückwärtszonen hinzu:
Hinweis
Ersetzen Sie
192.168.1.10
durch die IP-Adresse Ihres primären Nameserver.,
Starten Sie BIND9 auf dem sekundären Server neu:
sudo systemctl restart bind9.service
In /var/log/syslog
sollten Sie etwas Ähnliches wie das Folgende sehen (einige Zeilen wurden aufgeteilt, um dem Format dieses Dokuments zu entsprechen):
Hinweis
Hinweis: Eine Zone wird nur übertragen, wenn die Seriennummer auf der primären größer ist als die auf der sekundären., Wenn Sie möchten, dass Ihr primärer DNS andere sekundäre DNS-Server über Zonenänderungen benachrichtigt, können Sie
also-notify { ipaddress; };
zu/etc/bind/named.conf.local
hinzufügen, wie im folgenden Beispiel gezeigt:
Hinweis
Das Standardverzeichnis für nicht autorisierende Zonendateien ist
/etc/bind/named.conf.local
= „2f21455f0a“ > . Dieses Verzeichnis ist auch in AppArmor so konfiguriert, dass der benannte Daemon darauf schreiben kann. Weitere Informationen zu AppArmor finden Sie unter Sicherheit-AppArmor.,
Fehlerbehebung
Dieser Abschnitt behandelt die Diagnose von Problemen mit DNS-und BIND9-Konfigurationen.
Prüfung
resolv.conf
Der erste Schritt beim Testen von BIND9 besteht darin, die IP-Adresse des Nameserver zu einem Hosts-Resolver hinzuzufügen. Der primäre Nameserver sollte ebenso konfiguriert werden wie ein anderer Host, um die Dinge zu überprüfen. Einzelheiten zum Hinzufügen von Nameserver-Adressen zu Ihren Netzwerkclients finden Sie unter DNS-Clientkonfiguration., Am Ende sollte Ihre nameserver
Zeile in /etc/resolv.conf
auf 127.0.0.53
und Sie sollten einen search
Parameter für Ihre Domain haben. In etwa so:
nameserver 127.0.0.53search example.com
Um zu überprüfen, welchen DNS-Server Ihr lokaler Resolver verwendet, führen Sie Folgendes aus:
systemd-resolve --status
Hinweis
Sie sollten Ihrer Clientkonfiguration auch die IP-Adresse des sekundären Nameserver hinzufügen, falls der primäre nicht verfügbar ist.,
dig
Wenn Sie das dnsutils-Paket installiert haben, können Sie Ihr Setup mit dem DNS-Lookup-Dienstprogramm dig testen:
-
Nach der Installation von BIND9 verwenden Sie dig für die Loopback-Schnittstelle, um sicherzustellen, dass Port 53 überwacht wird.,i>
Wenn Sie BIND9 als Caching-Nameserver konfiguriert haben, „graben“ Sie eine externe Domäne, um die Abfragezeit zu überprüfen:
dig ubuntu.com
Beachten Sie die Abfragezeit gegen Ende der Befehlsausgabe:
;; Query time: 49 msec
Nach einem zweiten Graben sollte es Verbesserungen geben:
;; Query time: 1 msec
ping
Um nun zu demonstrieren, wie Anwendungen DNS verwenden, um einen Hostnamen aufzulösen, verwenden Sie das ping-Dienstprogramm, um eine ICMP-Echoanforderung zu senden:
ping example.com
Dies testet, ob der Nameserver den Namen ns.example.com
in eine IP-Adresse auflösen kann., Die Befehlsausgabe sollte ähneln:
named-checkzone
Eine gute Möglichkeit, Ihre Zonendateien zu testen, ist die Verwendung des Dienstprogramms named-checkzone
, das mit dem Paket bind9
installiert ist. Mit diesem Dienstprogramm können Sie sicherstellen, dass die Konfiguration korrekt ist, bevor Sie BIND9 neu starten und die Änderungen live vornehmen.,
-
Um unsere Beispiel-Forward Zone-Datei zu testen, geben Sie Folgendes über eine Eingabeaufforderung ein:
named-checkzone example.com /etc/bind/db.example.com
Wenn alles richtig konfiguriert ist, sollten Sie eine ähnliche Ausgabe sehen wie:
zone example.com/IN: loaded serial 6OK
-
Um die Reverse zone-Datei zu testen, geben Sie Folgendes ein:
named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
Die Ausgabe sollte ähnlich sein wie:
zone 1.168.192.in-addr.arpa/IN: loaded serial 3OK
Hinweis
Die Seriennummer Ihrer Zonendatei wird wahrscheinlich unterschiedlich sein.,
Schnelle temporäre Abfrageprotokollierung
Mit dem Tool rndc
können Sie die Abfrageprotokollierung schnell ein-und ausschalten, ohne den Dienst neu zu starten oder die Konfigurationsdatei zu ändern.
Um die Abfrageanmeldung einzuschalten, führen Sie Folgendes aus:
sudo rndc querylog on
Um sie auszuschalten, führen Sie Folgendes aus:
sudo rndc querylog off
Die Protokolle werden an syslog gesendet und werden standardmäßig in /var/log/syslog
angezeigt:
Hinweis
Die Anzahl der Protokolle, die durch Aktivieren von
querylog
generiert werden, könnte riesig sein!,
Logging
BIND9 verfügt über eine Vielzahl von Protokollierungskonfigurationsoptionen, aber die beiden wichtigsten sind channel und category, die konfigurieren, wohin Protokolle gehen und welche Informationen protokolliert werden.
Wenn keine Protokollierungsoptionen konfiguriert sind, lautet die Standardkonfiguration:
logging { category default { default_syslog; default_debug; }; category unmatched { null; };};
Konfigurieren wir stattdessen BIND9, um Debug-Nachrichten im Zusammenhang mit DNS-Abfragen an eine separate Datei zu senden.
Wir müssen einen Kanal konfigurieren, um anzugeben, an welche Datei die Nachrichten gesendet werden sollen, und eine Kategorie., In diesem Beispiel protokolliert die Kategorie alle Abfragen. Bearbeiten Sie /etc/bind/named.conf.local
und fügen Sie Folgendes hinzu:
logging { channel query.log { file "/var/log/named/query.log"; severity debug 3; }; category queries { query.log; };};
Hinweis
Die Debug-Option kann von 1 auf 3 gesetzt werden. Wenn kein Level angegeben ist, ist Level 1 der Standardwert.,
-
Da der benannte Daemon als bind-Benutzer ausgeführt wird, muss das Verzeichnis
/var/log/named
erstellt und der Besitz geändert werden:sudo mkdir /var/log/namedsudo chown bind:bind /var/log/named
-
Starten Sie nun BIND9 neu, damit die Änderungen wirksam werden:
sudo systemctl restart bind9.service
Sie sollten die Datei /var/log/named/query.log
mit Abfrageinformationen füllen. Dies ist ein einfaches Beispiel für die Protokollierungsoptionen BIND9. Für die Abdeckung der erweiterten Optionen siehe weitere Informationen.,
Allgemeine Datensatztypen
Dieser Abschnitt behandelt einige der häufigsten DNS-Datensatztypen.
-
A
Datensatz: Dieser Datensatz ordnet eine IP-Adresse einem Hostnamen zu.www IN A 192.168.1.12
-
CNAME
record: Wird verwendet, um einen Alias für einen vorhandenen Datensatz zu erstellen. Sie können keinenCNAME
– Datensatz erstellen, der auf einen anderenCNAME
– Datensatz verweist.web IN CNAME www
-
MX
Datensatz: Definiert, wohin E-Mails gesendet werden sollen., Muss auf einen – Datensatz verweisen, nicht auf eineCNAME
.@ IN MX 1 mail.example.com.mail IN A 192.168.1.13
-
NS
Datensatz: Definiert, welche Server Kopien einer Zone bereitstellen. Es muss auf einen – Datensatz verweisen, nicht auf eineCNAME
. Hier werden primäre und sekundäre Server definiert.@ IN NS ns.example.com.@ IN NS ns2.example.com.ns IN A 192.168.1.10ns2 IN A 192.168.1.11
Weitere Informationen
-
Upstream BIND9 Dokumentation
-
Bind9.net hat links zu einer großen Sammlung von DNS-und BIND9 Ressourcen.,
-
DNS and BIND ist jetzt ein beliebtes Buch in seiner fünften Ausgabe. Es gibt jetzt auch ein DNS – und BIND-On-IPv6-Buch.
-
Ein großartiger Ort, um BIND9-Unterstützung anzufordern und sich mit der Ubuntu-Server-Community zu beschäftigen, ist der #ubuntu-Server IRC-Kanal auf freenode.
Zuletzt aktualisiert vor 10 Monaten. Helfen Sie, dieses Dokument im Forum zu verbessern.