So installierst du einen DNS-Server mit BIND auf Rocky Linux 9
BIND oder Berkeley Internet Name Domain ist eine freie und quelloffene DNS-Server-Software. Sie ist eine der beliebtesten DNS-Server-Software, die von mehr als 70% der DNS im Internet genutzt wird. BIND gibt es bereits seit den 1980er Jahren und ist bekannt für seine Flexibilität, Leistung und Funktionen. BIND kann sowohl als autoritativer DNS als auch als Caching DNS eingesetzt werden und unterstützt Load Balancing, dynamische Updates, Split DNS, DNSSEC, IPv6 und vieles mehr.
Die BIND DNS-Software ist einer der zuverlässigsten DNS-Server für Unix-ähnliche Betriebssysteme. Sie ist auf den meisten Linux-Distributionen verfügbar und bietet zusätzliche Tools zur Diagnose und zum Testen des DNS-Servers.
Diese Anleitung zeigt dir, wie du einen DNS-Server mit BIND auf einem Rocky Linux 9 Server einrichtest. BIND ist eine der beliebtesten DNS Server Software, die verschiedene Funktionen wie Authoritative DNS, Cache-Only DNS, Basic DNS Load Balancing, Split DNS, DNSSEC, IPv6 und viele mehr bietet.
Voraussetzungen
In diesem Lernprogramm wirst du einen BIND DNS Server mit Master-Slave-Architektur einrichten und implementieren. Du brauchst also zwei Rocky Linux Server. Außerdem brauchst du auf beiden Servern Root-/Administrator-Rechte.
Um einen öffentlichen DNS-Server einzurichten, der deine Domain verwalten kann (autoritativer DNS-Server), musst du auch den Domainnamen registrieren lassen und „Glue Records“ konfigurieren.
In diesem Leitfaden gehen wir außerdem davon aus, dass SELinux im Modus „permissive“ läuft.
Das System vorbereiten
Zu Beginn dieses Leitfadens musst du den richtigen FQDN (Fully Qualified Domain Name) auf jedem deiner Rocky Linux Server einrichten. Das kannst du mit dem Befehl„hostnamectl“ und der Datei „/etc/hosts“ tun.
Im Folgenden findest du die Details zu den Servern, die als Beispiel für diese Anleitung dienen:
Hostname IP Address FQDN Used as --------------------------------------------------------------- ns1 192.168.5.100 ns1.hwdomain.io Master ns2 192.168.5.120 ns2.hwdomain.io Slave
Auf dem Master-Server führst du den Befehl hostnamectl aus, um den fqdn auf„ns1.hwdomain.io“ einzurichten.
sudo hostnamectl set-hostname ns1.hwdomain.io
Auf dem Slave-Server musst du ebenfalls den Befehl hostnamectl ausführen, um den fqdn auf„ns2.hwdomain.io“ einzurichten.
sudo hostnamectl set-hostname ns2.hwdomain.io
Als Nächstes öffnest du die Datei „/etc/hosts“ sowohl auf dem Master- als auch auf dem Slave-Server mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/hosts
Füge die folgende Zeile in die Datei ein.
192.168.5.100 ns1.hwdomain.io ns1 192.168.5.120 ns2.hwdomain.io ns2
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Führe abschließend den folgenden „hostname“-Befehl aus, um den fqdn auf beiden Servern zu überprüfen. Du solltest sehen, dass der Master-Server den fqdn„ns1.hwdomain.io“ und der Slave-Server den fqdn„ns2.hwdomain.io“ hat.
sudo hostname -f
Unten siehst du die Ausgabe des Master-Servers.
Und unten ist die Ausgabe des Slave-Servers.
Wenn du die fqdn konfiguriert hast, kannst du BIND auf den Rocky Linux Servern installieren.
Installation der BIND-Pakete
Standardmäßig stellt das Rocky Linux AppStream Repository die neueste stabile Version des BIND-Pakets bereit. Zum Zeitpunkt der Erstellung dieses Artikels ist die aktuelle stabile Version von BIND v9.16.
In diesem Schritt installierst du die BIND-Pakete sowohl auf dem Master- als auch auf dem Slave-Server. Dann richtest du BIND so ein, dass es nur auf IPv4 läuft, und konfigurierst die Firewalld so, dass sie den DNS-Port zulässt.
Führe den folgenden dnf-Befehl aus, um die BIND-Pakete sowohl auf dem Master- als auch auf dem Slave-Server zu installieren. Wenn du zur Bestätigung aufgefordert wirst, gib y ein, um zu bestätigen, und drücke ENTER, um fortzufahren.
sudo dnf install bind bind-utils
Nachdem die BIND-Pakete installiert sind, öffne die Konfiguration„/etc/sysconfig/named“ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/sysconfig/named
Füge die Standardeinstellung‚OPTIONS=…‚ mit der folgenden Zeile hinzu. Diese Befehlsoption für ‚bind‘ oder ’named‘ lässt den BIND nur auf IPv4 laufen.
OPTIONS="-4"
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes führst du den folgenden systemctl-Befehl aus, um den BIND-Dienst„named“ zu starten und zu aktivieren. Der „named“-Dienst sollte jetzt laufen und aktiviert sein. Er startet automatisch beim Hochfahren.
sudo systemctl start named sudo systemctl enable named
Überprüfe nun den Dienst „named“ mit dem folgenden Befehl, um sicherzustellen, dass der Dienst läuft und aktiviert ist.
sudo systemctl is-enabled named sudo systemctl status named
Du erhältst eine ähnliche Ausgabe wie die folgende – Der BIND-„named“-Dienst ist aktiviert und wird gerade ausgeführt.
Wenn der BIND-Dienst „named“ läuft, musst du den DNS-Port zur Firewall hinzufügen, die unter Rocky Linux standardmäßig aktiviert ist und läuft.
Führe den unten stehenden Befehl firewall-cmd aus, um den DNS-Dienst zur Firewalld hinzuzufügen. Lade dann die Firewalld neu, um die Änderungen zu übernehmen.
sudo firewall-cmd --add-service=dns --permanent sudo firewall-cmd --reload
Wenn du die Liste der aktivierten Dienste in der Firewalld überprüfst, solltest du sehen, dass der DNS-Dienst aktiviert ist. Führe den folgenden Befehl firewall-cmd aus, um die Liste der Dienste zu überprüfen.
sudo firewall-cmd --list-services
Ausgabe:
An diesem Punkt hast du die fqdn-Konfiguration abgeschlossen, die BIND-Pakete installiert und die Firewalld konfiguriert. Jetzt kannst du damit beginnen, den BIND Master auf dem Master-Server zu konfigurieren.
BIND Master DNS Server konfigurieren
In diesem Schritt richtest du den BIND-Masterserver mit dem Rocky-Linux„ns1.hwdomain.io“ ein und die Server-IP-Adresse lautet„192.168.5.100„. Stelle sicher, dass du die folgenden Befehle auf dem Master-Server ausführst.
Du konfigurierst den BIND-Masterserver mit den folgenden Schritten:
- Die Basiskonfiguration umfasst die Konfiguration von ACLs (Access Control Lists), das Einrichten der IP-Adresse, unter der der BIND-Dienst läuft, das Einrichten von Forwardern und vieles mehr.
- Einrichten von Zonen – Hier erstellst du die Konfigurationen für deine Domain. Dazu gehören die Hauptkonfiguration der Domain und die Konfiguration des Reverse DNS.
Grundlegende Konfiguration
Die Standardkonfiguration von BIND auf RHEL-basierten Distributionen ist in der Datei „/etc/named.conf“ zu finden.
Öffne nun die Datei„/etc/named.conf“ mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/named.conf
Ändere die Standardkonfiguration mit den folgenden Zeilen.
acl "trusted" { 192.168.5.100; # ns1 - or you can use localhost for ns1 192.168.5.120; # ns2 192.168.5.0/24; # trusted networks }; options { listen-on port 53 { 192.168.5.100; }; // listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; trusted; }; recursion yes; allow-recursion { trusted; }; allow-transfer { localhost; 192.168.5.120; }; forwarders { 8.8.8.8; 1.1.1.1; };
Speichere die Datei und beende den Editor, wenn du fertig bist.
Mit dieser Konfiguration richtest du BIND mit den folgenden Konfigurationen ein:
- Richte eine ACL„trusted“ ein, die jede Anfrage aus lokalen Netzwerken zulässt.
- Starte den BIND-Dienst unter„192.168.5.100“ mit dem Standardport„53„.
- Aktiviere die Rekursion und erlaube die Rekursion aus den‚vertrauenswürdigen‚ ACL-Netzwerken.
- Erlaube die Übertragung von Zonen an den Slave-Server mit der IP-Adresse„192.168.5.120„.
- Richte Forwarder mit dem öffentlichen DNS-Server 1.1.1.1 von Cloudflare und 8.8.8.8 von Google ein.
Als Nächstes führst du den folgenden Befehl aus, um die BIND-Konfiguration„/etc/named.conf“ zu überprüfen.
sudo named-checkconf /etc/named.conf
Zum Schluss führst du den folgenden systemctl-Befehl aus, um den BIND-Dienst „named“ neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart named
Damit hast du die Grundkonfiguration des BIND DNS Servers abgeschlossen.
Zonen einrichten
Jetzt richtest du mit dem BIND DNS Server Zonen ein. Du erstellst einen neuen DNS-Server mit den Adressen „ns1.hwdomain.io“ und „ns2.hwdomain.io“.
Um zu beginnen, öffne die BIND-Konfiguration „/etc/named.conf“ mit dem nano-Editor (siehe unten).
sudo nano /etc/named.conf
Füge die folgende Konfiguration am Ende der Zeile ein.
include "/etc/named/zones.conf.local";
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Als Nächstes erstellst du mit dem unten stehenden nano-Editor eine neue Konfiguration„/etc/named/zones.conf.local“.
sudo nano /etc/named/zones.conf.local
Füge die folgenden Zeilen in die Datei ein.
zone "hwdomain.io" { type master; file "db.hwdomain.io"; # zone file path allow-transfer { 192.168.5.120; }; # ns2 IP address - secondary DNS };
zone „5.168.192.in-addr.arpa“ {
type master;
file „db.192.168.5“; # subnet 192.168.5.0/24
allow-transfer { 192.168.5.120; }; # ns2 private IP address – secondary DNS
};
Speichere und schließe die Datei, wenn du fertig bist.
Mit dieser Konfiguration legst du die folgenden Konfigurationen fest:
- Erstelle zwei Zonen für die Domain„hwdomain.io“ und den Reverse DNS„5.168.192.in-addr.arpa„.
- Beide Zonen werden als„Master“ angelegt.
- Erlaube den Zonentransfer zum Slave-DNS-Server, der auf der Server-IP-Adresse„192.168.5.120“ laufen wird.
Als Nächstes erstellst du eine neue DNS-Zonenkonfiguration, „/var/named/db.hwdomain.io“, indem du den folgenden Befehl im nano-Editor verwendest.
sudo nano /var/named/db.hwdomain.io
Füge die folgenden Zeilen in die Datei ein.
; ; BIND data file for the local loopback interface ; $TTL 604800 @ IN SOA ns1.hwdomain.io. admin.hwdomain.io. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; NS records for name servers IN NS ns1.hwdomain.io. IN NS ns2.hwdomain.io. ; A records for name servers ns1.hwdomain.io. IN A 192.168.5.100 ns2.hwdomain.io. IN A 192.168.5.120 ; Mail handler or MX record for the domain hwdomain.io hwdomain.io. IN MX 10 mail.hwdomain.io. ; A records for domain names hwdomain.io. IN A 192.168.5.50 mail.hwdomain.io. IN A 192.168.5.15
Speichere und schließe die Datei, wenn du fertig bist.
In diesem Beispiel wirst du Zonen mit den folgenden Konfigurationen einrichten:
- Definiere die Nameservereinträge„ns1.hwdomain.io“ mit der IP-Adresse„192.168.5.100“ und„ns2.hwdomain.io“ mit der IP-Adresse„192.168.5.120„.
- Definiere zwei weitere Domains,‚hwdomain.io‚, die zur Server-IP-Adresse‚192.168.5.50‚ und die Domain‚mail.hwdomain.io‚ zur IP-Adresse‚192.168.5.15‚ aufgelöst werden.
- Außerdem erstellst du einen MX-Eintrag für die Domain‚hwdomain.io‚, den der Mailserver ‚ mail.hwdomain.io‘ bearbeiten wird.
Als Nächstes beginnst du mit der Konfiguration des Reverse-DNS für die Domain hwdomain.io.
Erstelle eine neue Reverse-DNS-Konfiguration „/var/named/db.192.168.5“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /var/named/db.192.168.5
Füge die folgenden Zeilen in die Datei ein.
; ; BIND reverse data file for the local loopback interface ; $TTL 604800 @ IN SOA ns1.hwdomain.io. admin.hwdomain.io. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; ; name servers - NS records IN NS ns1.hwdomain.io. IN NS ns2.hwdomain.io. ; PTR Records 100 IN PTR ns1.hwdomain.io. ; 192.168.5.100 120 IN PTR ns2.hwdomain.io. ; 192.168.5.120 50 IN PTR hwdomain.io. ; 192.168.5.50 15 IN PTR mail.hwdomain.io. ; 192.168.5.15
Speichere und schließe die Datei, wenn du fertig bist.
Mit dieser Konfiguration richtest du die Reverse-DNS- oder PTR-Einträge wie unten beschrieben ein.
- In der Reverse-DNS-Konfiguration definierst du auch die Nameserver ns1.hwdomain.io und ns2.hwdomain.io.
- Jede Reverse-DNS-Konfiguration verwendet die letzte Nummer der IP-Adresse, die zu jeder Domain aufgelöst wird. In diesem Beispiel ist der Nameserver ns1.hwdomain.io mit der IP-Adresse „192.168.5.100“, und der PTR-Eintrag sollte„100“ lauten.
- Der Rest der PTR-Einträge ist derselbe wie oben beschrieben.
Jetzt hast du zwei Zonen für die Domain„hwdomain.io“ eingerichtet und einen Nameserver„ns1.hwdomain.io“ und„ns2.hwdomain.io“ erstellt.
Führe nun den unten stehenden chmod-Befehl aus, um die Eigentümerschaft der beiden Zonenkonfigurationen zu ändern.
sudo chown -R named: /var/named/{db.hwdomain.io,db.192.168.5}
Überprüfe dann die Zonenkonfigurationsdateien mit dem Befehl„named-checkconf“ (siehe unten).
sudo named-checkconf
sudo named-checkzone hwdomain.io /var/named/db.hwdomain.io sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5
Wenn deine BIND-Konfigurationen korrekt sind, erhältst du eine Ausgabe wie im folgenden Screenshot.
Führe abschließend den folgenden systemctl-Befehl aus, um den BIND-Dienst „named“ neu zu starten und die Änderungen zu übernehmen. Überprüfe dann den Status des BIND-Dienstes, um sicherzustellen, dass der Dienst läuft.
sudo systemctl restart named sudo systemctl status named
Du erhältst eine ähnliche Ausgabe wie die folgende – der BIND-Dienst„named“ läuft und du hast die Konfiguration des BIND-Masters abgeschlossen.
Im nächsten Schritt wirst du den BIND-Slave-Server einrichten.
Slave BIND DNS Server einrichten
Nachdem du den DNS-Masterserver konfiguriert hast, beginnst du mit der Konfiguration des BIND-Slave-Servers auf dem Server „ns2.hwdomain.io“ mit der IP-Adresse „192.168.5.120“.
Die Grundkonfiguration für ’named.conf‘ ist ähnlich wie beim BIND Master und für die Zonendateien kannst du den Dateinamen definieren, ohne eine eigentliche Datei auf dem BIND Slave Server zu erstellen.
Bevor du beginnst, stelle sicher, dass du die folgenden Befehle auf dem BIND-Slave-Server ausführst.
Öffne nun die BIND-Konfiguration„/etc/named.conf“ auf dem Slave-Server mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/named.conf
Ändere die Standardkonfiguration mit den folgenden Zeilen.
acl "trusted" { 192.168.5.100; # ns1 - or you can use localhost for ns1 192.168.5.120; # ns2 192.168.5.0/24; # trusted networks }; options { listen-on port 53 { 192.168.5.120; }; //listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { any; }; recursion yes; allow-recursion { trusted; }; allow-transfer { none; }; forwarders { 8.8.8.8; 1.1.1.1; }; };
Die Einstellungen sind ähnlich wie auf dem BIND-Masterserver, aber es gibt einige Unterschiede in den Konfigurationen.
- Der BIND-Dienst wird unter der IP-Adresse„192.168.5.120“ auf dem Slave-Server ausgeführt.
- Die Rekursion ist aktiviert, aber die Option „allow-transfer“ ist auf„none“ eingestellt.
Füge nun die folgende Zeile am Ende der Datei „named.conf“ hinzu, um Zonen zu definieren.
include "/etc/named/zones.conf.local";
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als Nächstes erstellst du eine neue Konfiguration „/etc/named/zones.conf.local“, indem du den folgenden Befehl im nano-Editor ausführst.
sudo nano /etc/named/zones.conf.local
Füge die folgenden Zeilen in die Datei ein.
zone "hwdomain.io" { type slave; file "slaves/db.hwdomain.io"; masters { 192.168.5.100; }; # ns1 IP address - master DNS }; zone "5.168.192.in-addr.arpa" { type slave; file "slaves/db.192.168.5"; masters { 192.168.5.100; }; # ns1 IP address - master DNS };
Speichere und schließe die Datei, wenn du fertig bist.
Damit definierst du einige Konfigurationen auf dem BIND-Slave-Server:
- Definiere zwei Zonen für die Domain„hwdomain.io“ und deren Reverse DNS.
- Beide Zonen sind vom Typ„Slave„.
- Die Zonendatei für jede Zone wird aus dem Verzeichnis „/var/named/slaves“ genommen, das vom BIND-Masterserver übertragen wird.
Als Nächstes führst du das Befehlsprogramm „named-checkconf“ aus, um die BIND-Konfigurationen zu überprüfen. Starten Sie dann den BIND-Dienst „named“ auf dem Slave-Server mit dem Befehl systemctl neu (siehe unten).
sudo named-checkconf sudo systemctl restart named
Wenn die BIND-Konfiguration korrekt ist, werden keine Fehlermeldungen angezeigt.
Führe abschließend den folgenden systemctl-Befehl aus, um den BIND-„named„-Dienst auf dem Slave-Server zu überprüfen und sicherzustellen, dass der Dienst läuft.
sudo systemctl status named
Du erhältst jetzt eine Ausgabe ähnlich der folgenden – der BIND-Dienst „named“ läuft auf dem BIND-Slave-Server.
An diesem Punkt hast du die BIND DNS-Installation mit der Master-Slave-Architektur abgeschlossen. Jetzt kannst du mit den Tests auf dem Client-Rechner beginnen.
Testen vom Client aus
In diesem Beispiel wird ein Debian-System als Client-Rechner verwendet, also installiere einige Pakete über die APT, bevor du beginnst.
sudo apt install dnsutils bind9-utils
Gib y ein, wenn du zur Bestätigung aufgefordert wirst, und drücke ENTER, um fortzufahren.
Als Nächstes führst du den folgenden Befehl aus, um die Standard-Linkdatei„/etc/resolv.conf“ zu entfernen und eine neue Datei mit dem Editor nano zu erstellen.
sudo unlink /etc/resolv.conf sudo nano /etc/resolv.conf
Füge die folgende Konfiguration in die Datei ein. In der folgenden Konfiguration definieren wir drei verschiedene Resolver: den BIND DNS Master, den sekundären BIND DNS Server und den öffentlichen Cloudflare DNS Resolver. Wenn der Client-Rechner Informationen über den Domänennamen anfordert, werden die Informationen vom DNS-Resolver übernommen, von oben nach unten.
nameserver 192.168.5.100 nameserver 192.168.5.120 nameserver 1.1.1.1 search hwdomain.io
Speichere und schließe die Datei, wenn du fertig bist.
Jetzt kannst du deinen DNS-Server auf dem Client-Rechner überprüfen.
Führe den unten stehenden dig-Befehl aus, um den Domainnamen „hwdomain.io“ und „mail.hwdomain.io“ zu überprüfen. Du solltest sehen, dass„hwdomain.io“ auf die Server-IP-Adresse„192.168.5.50“ aufgelöst wird, während die Sub-Domain„mail.hwdomain.io“ von der Server-IP-Adresse„192.168.5.15“ verwaltet wird.
dig hwdomain.io +short dig hwdomain.io
dig mail.hwdomain.io +short dig mail.hwdomain.io
Überprüfen des Domainnamens hwdomain.io.
Überprüfung der Sub-Domain mail.hwdomain.io.
Als Nächstes führst du den unten stehenden dig-Befehl aus, um den Mail-Handler für den Domainnamen„hwdomain.io“ zu überprüfen. Du solltest die Ausgabe erhalten, dass„mail.hwdomain.io“ die Mails für die Hauptdomain„hwdomain.io“ bearbeitet.
dig hwdomain.io MX +short dig hwdomain.io MX
Du kannst die Konfiguration der Reverse Zone für deinen Domainnamen mit dem Befehl nslookup überprüfen.
Führe den unten stehenden nslookup-Befehl aus, um die Reverse-DNS für einige IP-Adressen zu überprüfen und zu verifizieren.
Jetzt solltest du sehen, dass die IP-Adresse„192.168.5.100“ auf den Nameserver„ns1.hwdomain.io“ umgepolt ist, die IP-Adresse„192.168.5.120“ auf den Nameserver„ns2.hwdomain.io„, die IP-Adresse„192.168.5.50“ auf den Hauptdomainnamen„hwdomain.io“ und schließlich die IP-Adresse„192.168.5.15“ auf die Subdomain„mail.hwdomain.io“ umgepolt.
nslookup 192.168.5.100 nslookup 192.168.5.120 nslookup 192.168.5.50 nslookup 192.168.5.15
Jetzt hast du die Installation des BIND DNS-Servers mit Master-Slave-Architektur auf Rocky Linux abgeschlossen. Außerdem hast du gelernt, wie du den DNS Server mit verschiedenen Befehlsprogrammen wie dig und nslookup testen kannst.
Fazit
Herzlichen Glückwunsch! In diesem Lernprogramm hast du die Installation und Konfiguration von BIND DNS Server auf Rocky Linux 9 Servern gelernt. Du hast den Master-Slave BIND DNS Server erfolgreich mit zwei verschiedenen Rocky Linux Servern konfiguriert. Außerdem hast du die grundlegenden Befehle Dig und Nslookup kennengelernt, mit denen du DNS-Einträge und die Konfiguration prüfen und verifizieren kannst.