Grundlegende DNS-Serverkonfiguration

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.com zu 192.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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert