Das Domain Name System (DNS) ist das Herzstück des Internets und ermöglicht die Auflösung von menschenlesbaren Domainnamen in IP-Adressen, die von Computern genutzt werden, um Daten zu senden und zu empfangen. Als Systemadministrator ist es unerlässlich zu verstehen, wie man DNS-Zonen erstellt und verwaltet, insbesondere wenn man einen eigenen DNS-Server betreibt oder ein internes Netzwerk konfiguriert.
In diesem Beitrag wirst du lernen, was DNS-Zonen sind, wie du sie unter Linux mit BIND9, einer weit verbreiteten DNS-Server-Software, erstellst und verwaltest, sowie einige Best Practices zur Pflege von DNS-Zonen.
Was ist eine DNS-Zone?
Eine DNS-Zone ist ein Bereich des Domain Name Systems, der für die Verwaltung einer bestimmten Domain oder eines Teils einer Domain zuständig ist. Jede DNS-Zone enthält eine Sammlung von DNS-Einträgen, die Domainnamen mit IP-Adressen verknüpfen (z.B. example.com -> 192.168.1.1
). Es gibt verschiedene Arten von Zonen, abhängig davon, wie sie verwendet werden:
- Forward-Zonen: Diese Zonen dienen der Umwandlung von Domainnamen in IP-Adressen.
- Reverse-Zonen: Diese Zonen sind das Gegenteil von Forward-Zonen und wandeln IP-Adressen in Domainnamen um.
- Master-Zonen: Die primäre Zone, in der DNS-Einträge für eine Domain verwaltet werden.
- Slave-Zonen: Sekundäre Zonen, die Kopien von Master-Zonen sind und zur Lastverteilung und Redundanz verwendet werden.
Vorbereitung: Installation von BIND9
Um DNS-Zonen zu erstellen und zu verwalten, musst du einen DNS-Server installieren. In diesem Beispiel verwenden wir BIND9, die am häufigsten eingesetzte DNS-Server-Software auf Linux-Systemen.
Für Debian/Ubuntu-basierte Systeme installierst du BIND9 mit folgendem Befehl:
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
Für Red Hat/CentOS-basierte Systeme:
sudo yum install bind bind-utils
Nach der Installation läuft der DNS-Server in der Regel automatisch. Überprüfe dies mit:
sudo systemctl status bind9
Erstellen einer Forward-Zone
Eine Forward-Zone ist die häufigste Art von DNS-Zone. Sie ermöglicht die Umwandlung eines Domainnamens (z.B. example.com
) in eine IP-Adresse (z.B. 192.168.1.10
).
- Zone in
named.conf.local
hinzufügen
Die Datei /etc/bind/named.conf.local
ist der Ort, an dem du deine eigenen Zonen definierst. Um eine neue Forward-Zone zu erstellen, fügst du Folgendes in die Datei ein:
sudo nano /etc/bind/named.conf.local
Füge die folgende Zone für die Domain example.com
hinzu:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
Dies definiert example.com
als Master-Zone und gibt an, dass die DNS-Einträge in der Datei /etc/bind/db.example.com
gespeichert werden.
- Erstellen der Zonen-Datei
Erstelle die Datei /etc/bind/db.example.com
, in der die DNS-Einträge für die Domain example.com
definiert werden. Du kannst eine Vorlage von der Datei db.local
kopieren:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Bearbeite die neue Zonen-Datei:
sudo nano /etc/bind/db.example.com
Füge die DNS-Einträge wie folgt hinzu:
;
; BIND-Zone für example.com
;
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2025011901 ; Seriennummer
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; TTL
; Nameserver
@ IN NS ns1.example.com.
; A-Eintrag für den Nameserver
ns1 IN A 192.168.1.10
; A-Eintrag für die Hauptdomain
@ IN A 192.168.1.10
; CNAME für www
www IN CNAME example.com.
Erläuterung:
- SOA (Start of Authority): Der SOA-Eintrag enthält wichtige Informationen über die Zone, wie den primären Nameserver (
ns1.example.com
), die E-Mail-Adresse des Administrators (admin.example.com
), und eine Seriennummer. - NS-Eintrag: Der
NS
-Eintrag definiert den Nameserver für die Domain. - A-Eintrag: Dieser Eintrag verknüpft den Domainnamen
example.com
undns1.example.com
mit der IP-Adresse192.168.1.10
. - CNAME-Eintrag: Ein Alias für
www.example.com
, der aufexample.com
verweist.
Speichere die Datei und überprüfe sie mit:
sudo named-checkzone example.com /etc/bind/db.example.com
Wenn die Prüfung erfolgreich ist, starte BIND neu:
sudo systemctl restart bind9
Erstellen einer Reverse-Zone
Eine Reverse-Zone ermöglicht den umgekehrten DNS-Lookup, bei dem eine IP-Adresse in einen Domainnamen aufgelöst wird. Dies ist besonders nützlich in Netzwerken und für E-Mail-Server.
- Reverse-Zone in
named.conf.local
hinzufügen
Bearbeite die Datei /etc/bind/named.conf.local
, um eine Reverse-Zone hinzuzufügen:
sudo nano /etc/bind/named.conf.local
Füge eine Zone für das Subnetz 192.168.1.x
hinzu:
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
};
- Erstellen der Reverse-Zonen-Datei
Erstelle die Datei /etc/bind/db.192.168.1
, die die DNS-Einträge für die Reverse-Zone enthält:
sudo cp /etc/bind/db.127 /etc/bind/db.192.168.1
Bearbeite die Datei:
sudo nano /etc/bind/db.192.168.1
Füge die Reverse-DNS-Einträge hinzu:
;
; Reverse-DNS-Zone für 192.168.1.x Subnetz
;
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2025011901 ; Seriennummer
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; TTL
@ IN NS ns1.example.com.
10 IN PTR ns1.example.com.
20 IN PTR www.example.com.
Erläuterung:
- PTR-Eintrag: Ein
PTR
-Eintrag (Pointer) weist einer IP-Adresse einen Domainnamen zu. Hier verknüpft10.168.192.in-addr.arpa
die IP-Adresse192.168.1.10
mitns1.example.com
.
Speichere die Datei und überprüfe sie:
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192.168.1
Starte BIND neu:
sudo systemctl restart bind9
Verwalten von DNS-Zonen
Aktualisieren von DNS-Einträgen
Wenn du Änderungen an einer Zone vornehmen möchtest, z.B. neue DNS-Einträge hinzufügen oder bestehende Einträge aktualisieren, kannst du dies direkt in der entsprechenden Zonen-Datei tun. Wichtig ist, dass du nach jeder Änderung die Seriennummer im SOA-Eintrag erhöhst. Dies ist entscheidend, da DNS-Server die Seriennummer verwenden, um festzustellen, ob eine Zone aktualisiert wurde.
Beispiel: Erhöhe die Seriennummer von 2025011901
auf 2025011902
.
Zonenüberprüfung und Neustart von BIND
Nach jeder Änderung an einer Zone solltest du die Konfigurationsdateien überprüfen und BIND neu starten:
sudo named-checkzone example.com /etc/bind/db.example.com
sudo systemctl restart bind9
Slave-Zonen
Für Redundanz und Lastverteilung kannst du Slave-Zonen einrichten. Diese Server synchronisieren automatisch ihre Zonen mit dem Master-Server. In der Konfigurationsdatei des Slave-Servers definierst du die Zone wie folgt:
zone "example.com" {
type slave;
masters { 192.168.1.10; }; # IP-Adresse des Master-Servers
file "/var/cache/bind/db.example.com";
};
Best Practices für DNS-Zonenverwaltung
- Seriennummern konsequent aktualisieren: Bei jeder Änderung einer Zonen-Datei muss die Seriennummer erhöht werden, damit alle DNS-Server die Änderungen erkennen und synchronisieren können.
- Regelmäßige Überprüfungen: Verwende regelmäßig Tools wie
named-checkzone
, um die Konsistenz deiner Zonen-Dateien sicherzustellen. - Backup von DNS-Zonen: Sichere regelmäßig deine Konfigurations- und Zonen-Dateien. Fehler oder Datenverluste können zu erheblichen Ausfällen führen.
- Überwachung der DNS-Server: Nutze Überwachungstools, um die Verfügbarkeit und Performance deines DNS-Servers zu prüfen.
Fazit
Das Erstellen und Verwalten von DNS-Zonen unter Linux mit BIND9 ist eine essentielle Aufgabe für Systemadministratoren, um ein stabiles und sicheres Netzwerk zu gewährleisten. Mit den Grundlagen aus diesem Beitrag solltest du in der Lage sein, sowohl Forward- als auch Reverse-Zonen einzurichten und zu verwalten. BIND9 bietet eine leistungsstarke und flexible Möglichkeit, DNS-Server zu konfigurieren und zu betreiben, sowohl in kleinen Netzwerken als auch in großen, unternehmensweiten Implementierungen.