Bind9 DNS Server Installation Konfiguration
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.
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
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
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
- 📖 DNS-Records erklärt
- 📖 DNS Nameserver Erklärung
- 📖 OpenLDAP Server Installation und Konfiguration
- 📖 Linux Netzwerk Konfiguration
- 📖 SSL/TLS Zertifikate und DNSSEC
- 🔧 Sichere Server bei Enjyn mieten
- 🔧 Enjyn Server Monitor – Kostenlose Uptime-Überwachung
Letzte Aktualisierung: April 2026 | BIND9 Version 9.18+