BIND9 DNS Server Installation und Konfiguration auf Ubuntu | Enjyn Gruppe
Hallo Welt
→
→
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

330 Dokumentationen verfügbar

Wissensdatenbank

Bind9 DNS Server Installation Konfiguration

Zuletzt aktualisiert: 14.07.2026 um 12:30 Uhr

BIND9 DNS Server Installation und Konfiguration auf Ubuntu

Was ist BIND9?

BIND9 (Berkeley Internet Name Domain) ist der älteste und beliebteste DNS-Server für Linux und Unix-Systeme. BIND wird von der Internet Systems Consortium (ISC) entwickelt und ist in etwa 90% aller DNS-Server weltweit installiert. BIND9 ist ausgesprochen zuverlässig, skaliert auf Millionen von Domains und unterstützt alle modernen DNS-Features wie DNSSEC, IPv6, Zone Transfers und vieles mehr.

💡 Tipp: BIND9 ist kostenlos, Open Source und Production-ready. Es wird von großen Unternehmen wie Google, AWS und Microsoft für ihre DNS-Infrastruktur verwendet (teilweise als Basis).

Anwendungsfälle für BIND9

Anwendungsfall Beschreibung
Interner DNS DNS für interne Netzwerke ohne Internet-Zugang
Authoritative Zone Authoritative DNS für eigene Domains
Caching Resolver Recursive DNS-Server für schnellere Anfragen
Split DNS Unterschiedliche DNS-Antworten für interne/externe Anfragen
Master-Slave DNS Zone-Synchronisierung zwischen mehreren DNS-Servern

Installation auf Ubuntu

# BIND9 und Tools installieren
sudo apt update
sudo apt install bind9 bind9-utils bind9-doc -y

# BIND9 Service starten und aktivieren
sudo systemctl start bind9
sudo systemctl enable bind9

# Status überprüfen
sudo systemctl status bind9

# Version überprüfen
named -v

# Wichtige Dateien
ls -la /etc/bind/

# Konfiguration überprüfen
sudo named-checkconf /etc/bind/named.conf

BIND9 als Caching Resolver konfigurieren

# /etc/bind/named.conf.options bearbeiten
sudo nano /etc/bind/named.conf.options

# Beispielkonfiguration:
options {
    directory "/var/cache/bind";

    listen-on { 127.0.0.1; 192.168.1.10; };
    listen-on-v6 { ::1; };

    recursion yes;
    allow-recursion { 127.0.0.1; 192.168.1.0/24; };

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    dnssec-validation auto;
};

# Konfiguration überprüfen und Service neustarten
sudo named-checkconf
sudo systemctl restart bind9

# Test
dig @127.0.0.1 google.com

Authoritative Zone für eigene Domain erstellen

# Zone in /etc/bind/named.conf.local hinzufügen
sudo nano /etc/bind/named.conf.local

# Inhalt:
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allow-transfer { 192.168.1.20; };
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.1.168.192";
};

# Zone-Datei erstellen
sudo cp /etc/bind/db.local /etc/bind/db.example.com

# Zone-Datei bearbeiten
sudo nano /etc/bind/db.example.com

# Inhalt der Zone-Datei:
$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2024040501      ; Serial
                        604800          ; Refresh
                        86400           ; Retry
                        2419200         ; Expire
                        604800 )        ; Minimum

@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.
@       IN      A       192.168.1.10
@       IN      AAAA    2001:db8::1
@       IN      MX      10 mail.example.com.
@       IN      TXT     "v=spf1 mx ~all"

ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.20
www     IN      A       192.168.1.10
mail    IN      A       192.168.1.11
ftp     IN      CNAME   www.example.com.

# Dateibermissionen prüfen
sudo chown bind:bind /etc/bind/db.example.com
sudo chmod 644 /etc/bind/db.example.com

# Zone-Datei überprüfen
sudo named-checkzone example.com /etc/bind/db.example.com

# BIND neustarten
sudo systemctl restart bind9

# Test
dig @127.0.0.1 example.com
dig @127.0.0.1 www.example.com
dig @127.0.0.1 -x 192.168.1.10

DNS-Testing und Troubleshooting

# Einfache DNS-Abfrage
dig example.com

# Spezifischen DNS-Server abfragen
dig @ns1.example.com example.com

# Nur A-Records
dig example.com A

# MX-Records
dig example.com MX

# Alle Records
dig example.com ANY

# Kurzes Format
dig example.com +short

# Zone Transfer testen (AXFR)
dig @ns1.example.com example.com AXFR

# nslookup Alternative
nslookup example.com
nslookup -type=MX example.com
nslookup 192.168.1.10

# Reverse DNS
dig -x 192.168.1.10

# DNS Nameserver überprüfen
nslookup -type=NS example.com

# BIND Logs überprüfen
sudo tail -f /var/log/syslog | grep named
✅ Gut zu wissen: DNSSEC schützt vor DNS-Spoofing und Man-in-the-Middle-Angriffen. Es wird automatisch validiert, wenn dnssec-validation auto gesetzt ist.

Split DNS Konfiguration

Split DNS ermöglicht unterschiedliche DNS-Antworten je nachdem ob die Anfrage von intern oder extern kommt.

# /etc/bind/named.conf.local
view "internal" {
    match-clients { 127.0.0.1; 192.168.1.0/24; };

    zone "example.com" {
        type master;
        file "/etc/bind/db.example.com.internal";
    };
};

view "external" {
    match-clients { any; };

    zone "example.com" {
        type master;
        file "/etc/bind/db.example.com.external";
    };
};

# Internal Zone-Datei mit privaten IPs
# db.example.com.internal
$TTL 604800
@  IN  SOA  ns1.example.com. admin.example.com. (
            2024040501; Serial
            604800; Refresh
            86400; Retry
            2419200; Expire
            604800 )
@  IN  NS   ns1.example.com.
www IN  A   192.168.1.10
db IN  A   192.168.1.15
app IN  A   192.168.1.20

# External Zone-Datei mit öffentlichen IPs
# db.example.com.external
$TTL 604800
@  IN  SOA  ns1.example.com. admin.example.com. (
            2024040501; Serial
            604800; Refresh
            86400; Retry
            2419200; Expire
            604800 )
@  IN  NS   ns1.example.com.
www IN  A   203.0.113.10
db IN  A   203.0.113.15
app IN  A   203.0.113.20
⚠️ Wichtig: Bei Split DNS muss jede View eine komplette Zone-Definition haben. Views werden der Reihe nach überprüft. Die erste Übereinstimmung wird verwendet.

Logging und Debugging

# Query Logging aktivieren
# /etc/bind/named.conf.local:
logging {
    channel query_log {
        file "/var/log/bind/query.log" versions 4 size 500m;
        severity info;
        print-time yes;
        print-category yes;
    };
    category queries { query_log; };
};

# Log-Verzeichnis erstellen
sudo mkdir -p /var/log/bind
sudo chown bind:bind /var/log/bind

# BIND Debug-Mode testen
sudo named -g -u bind -c /etc/bind/named.conf

# Speziell Zone testen
sudo named-checkzone -d example.com /etc/bind/db.example.com

# Dig mit Trace (schrittweise Resolution)
dig example.com +trace

# Extended DNS Information
dig example.com +dnssec +multiline

# Zone-Transfer Überprüfung
dig @ns1.example.com example.com AXFR


Weitere Ressourcen


Letzte Aktualisierung: April 2026 | BIND9 Version 9.18+

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120