Das Domain Name System (DNS) ist ein unverzichtbarer Bestandteil des Internets. Es ermöglicht die Umwandlung von leicht verständlichen Domainnamen (wie example.com) in IP-Adressen, die für Computer und Netzwerkgeräte erforderlich sind. Die Konfiguration eines eigenen DNS-Servers unter Linux ist eine wichtige Fähigkeit für Systemadministratoren, besonders wenn es darum geht, die Netzwerkinfrastruktur zu verwalten oder ein lokales Netzwerk aufzubauen.
In diesem Blog-Beitrag zeige ich dir, wie du unter Linux einen grundlegenden DNS-Server einrichtest und konfigurierst. Wir verwenden dabei BIND9 (Berkeley Internet Name Domain), eine der beliebtesten und leistungsfähigsten DNS-Server-Softwarelösungen.
Was ist ein DNS-Server?
Ein DNS-Server ist ein Dienst, der Anfragen zu Domainnamen entgegennimmt und die dazugehörige IP-Adresse zurückgibt. Wenn ein Benutzer beispielsweise www.example.com in seinen Webbrowser eingibt, kontaktiert der Browser einen DNS-Server, um die IP-Adresse von example.com zu ermitteln. Der Browser verwendet dann diese IP-Adresse, um die Website zu laden.
Installation von BIND9 unter Linux
Zunächst müssen wir den DNS-Server installieren. Auf den meisten Linux-Distributionen ist BIND9 in den Standard-Paketquellen verfügbar.
Für Debian/Ubuntu-basierte Distributionen:
sudo apt update
sudo apt install bind9 bind9utils bind9-doc
Für Red Hat/CentOS-basierte Distributionen:
sudo yum install bind bind-utils
Nach der Installation wird der DNS-Server automatisch gestartet. Du kannst den Status von BIND9 überprüfen mit:
sudo systemctl status bind9
Grundlegende Konfiguration von BIND9
BIND9 verwendet mehrere Konfigurationsdateien, die die Zonen, Domains und Servereinstellungen steuern. Hier ein Überblick über die wichtigsten Konfigurationsdateien:
/etc/bind/named.conf: Die Hauptkonfigurationsdatei./etc/bind/named.conf.options: Einstellungen wie Forwarder oder Netzwerkschnittstellen./etc/bind/named.conf.local: Hier fügst du deine eigenen Zonen hinzu.
1. Konfiguration einer Forwarding-DNS-Zone
Eine der einfachsten Arten von DNS-Servern ist ein Forwarding DNS-Server. Dieser Server leitet DNS-Anfragen, die er nicht selbst beantworten kann, an einen anderen DNS-Server weiter. Dies ist hilfreich, um den lokalen DNS-Server als Vermittler für alle Anfragen zu verwenden.
Öffne die Datei /etc/bind/named.conf.options:
sudo nano /etc/bind/named.conf.options
Suche den Abschnitt forwarders und füge die DNS-Server deines Internetanbieters oder beliebige öffentliche DNS-Server hinzu, wie z.B. Google DNS oder Cloudflare DNS:
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8; // Google DNS
8.8.4.4; // Google DNS
1.1.1.1; // Cloudflare DNS
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Speichere die Datei und starte den DNS-Server neu:
sudo systemctl restart bind9
Nun leitet dein DNS-Server alle Anfragen, die er nicht selbst beantworten kann, an die definierten Forwarder weiter.
2. Einrichten einer lokalen DNS-Zone
Wenn du interne Domainnamen für ein privates Netzwerk konfigurieren möchtest, kannst du eine lokale DNS-Zone einrichten. Dies ist nützlich für die Verwaltung von Domains, die nicht öffentlich zugänglich sind, wie z.B. interne Server oder Dienste.
Öffne die Datei /etc/bind/named.conf.local:
sudo nano /etc/bind/named.conf.local
Füge deine eigene Zone hinzu. In diesem Beispiel richten wir eine Zone für die Domain example.com ein:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
Als nächstes erstellen wir die Zonen-Datei /etc/bind/db.example.com, in der die DNS-Einträge für example.com gespeichert werden. Du kannst eine Vorlage von der Datei db.local kopieren:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Öffne die neue Zonen-Datei zur Bearbeitung:
sudo nano /etc/bind/db.example.com
Bearbeite den Inhalt der Datei wie folgt:
;
; BIND-Daten 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
; Weitere A- oder CNAME-Einträge
www IN A 192.168.1.20
Erläuterung:
- SOA (Start of Authority): Dieser Eintrag enthält grundlegende Informationen über die Domain, einschließlich des primären Nameservers und der E-Mail-Adresse des Administrators.
- NS-Eintrag: Definiert den Nameserver für die Domain.
- A-Eintrag: Verknüpft Domainnamen mit IP-Adressen (z.B.
www.example.comzu192.168.1.20).
Speichere die Datei und überprüfe sie auf Syntaxfehler:
sudo named-checkzone example.com /etc/bind/db.example.com
Wenn keine Fehler gemeldet werden, starte BIND neu:
sudo systemctl restart bind9
3. Testen der DNS-Konfiguration
Um sicherzustellen, dass dein DNS-Server korrekt funktioniert, kannst du das Kommando dig verwenden, um DNS-Abfragen zu stellen. Installiere dnsutils, falls es noch nicht installiert ist:
sudo apt install dnsutils
Führe dann eine Abfrage für die Domain example.com durch:
dig @localhost example.com
Du solltest eine Antwort erhalten, die die IP-Adresse von example.com zeigt. Wenn alles korrekt konfiguriert ist, wird der DNS-Server die Abfrage erfolgreich beantworten.
4. Konfiguration eines Reverse-DNS-Lookups
Ein Reverse-DNS-Lookup ermöglicht es, IP-Adressen in Domainnamen umzuwandeln. Dies ist insbesondere für Netzwerkdiagnosen und Mailserver-Konfigurationen wichtig. Um einen Reverse-DNS-Lookup zu konfigurieren, musst du eine zusätzliche Zone für das entsprechende Subnetz definieren.
Füge in der Datei /etc/bind/named.conf.local die folgende Konfiguration hinzu:
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.1";
};
Erstelle dann die Zonen-Datei /etc/bind/db.192.168.1:
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 folgenden 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.
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
Jetzt kannst du einen Reverse-Lookup mit dig testen:
dig -x 192.168.1.10
Fazit
Die Konfiguration eines DNS-Servers unter Linux mag komplex erscheinen, ist aber mit BIND9 relativ einfach umzusetzen, sobald man die Grundlagen verstanden hat. Von der Weiterleitung von DNS-Anfragen bis hin zur Einrichtung von lokalen Zonen und Reverse-Lookups bietet BIND9 eine leistungsstarke und flexible Lösung für jede Netzwerkumgebung.
Mit dieser Schritt-für-Schritt-Anleitung hast du nun die grundlegenden Schritte kennengelernt, um einen DNS-Server einzurichten und zu betreiben.