Inhalt
- 1. Einführung
- 2. Installation
- 3. Konfiguration
- 3.1 Forward- und Reverse-Lookup Zonen
- 3.2 BIND-Konfiguration
- 3.3 BIND DNS-Server beim Booten automatisch starten
- 4. DNS-Server im Router eintragen
- 5. DNS-Server testen
- 5.1 Linux
- 5.2 Windows
1. Einführung
Ein lokaler Domain Name System (DNS) Server ist nützlich wenn man die Netzwerkgeräte wie Server, PC’s usw. im lokalen Heimnetzwerk (Intranet) mit der Domäne anstelle mit der IP-Adresse ansprechen möchte oder wie im Falle von Unitymedia Horizon HD Recorder die eigene öffentliche Domäne lokal nicht aufgelöst bekommt.
Einer der bekanntesten DNS-Server ist der von der Universität Berkeley (USA) entwickelte und inzwischen vom Internet Systems Consortium (ISC) übernommenen BIND Server. Als Open Source erhältlich, eignet er sich auch für private Zwecke wie eben einen lokalen Heimnetzwerk-DNS-Server.
2. Installation
Zuerst wird das Raspberry Pi Betriebsystem auf den neusten Stand gebracht:
$ sudo apt-get update && sudo apt-get upgrade
Der Raspberry Pi muss eine statische IP-Adresse besitzen. Das Interface (/etc/network/interfaces) sollte wie folgt konfiguriert sein:
# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.105
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers localhost 192.168.2.1
dns-domain beispiel-domain.home # optional
Jetzt wird BIND 9 mit dem folgenden Befehl installiert:
$ sudo apt-get install bind9 bind9utils dnsutils
Die Pakete bind9utils und dnsutils sind optional, sie enthalten aber nützliche Tools für die Wartung, das Testen und die Fehleranalyse eines DNS-Servers.
Nach der Installation startet der DNS-Server automatisch. Um dies zu überprüfen kann man mit dem dig-Befehl aus dem dnsutils-Paket folgendes ausführen:
$ dig @127.0.0.1 www.google.de
Die Ausgabe sollte ungefähr so aussehen:

3. Konfiguration
Die Konfigurationsdateien liegen im /etc/bind/ Verzeichnis. Die /etc/bind/named.conf importiert nur weitere Dateien wie /etc/bind/named.conf.options, /etc/bind/named.conf.local und /etc/bind/named.conf.default-zones. Für die eigene Konfiguration und Zonen sollte die /etc/bind/named.conf.local verwendet werden.
3.1 Forward- und Reverse-Lookup Zonen
Für jede Domäne sollte es zwei Zonen-Dateien geben. Eine für den Forward- und eine für den Reverse-Lookup.
Zuerst muss in der Datei /etc/bind/named.conf.local die Konfiguration der beiden Zonen eingetragen werden:
$ sudo nano /etc/bind/named.conf.local
Am Ende der Datei hinzufügen:
// Forward-Lookup
zone "beispiel-domain.home" {
type master;
file "/etc/bind/zones/db.beispiel-domain.home";
allow-transfer { acl_trusted_transfer; };
};
// Reverse-Lookup
zone "2.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.2.168.192";
};
Die Datei speichern und ein Unterverzeichnis für die Zone-Dateien erstellen:
$ sudo mkdir /etc/bind/zones
In diesem Ordner die Forward-Lookup-Datei erstellen:
$ sudo nano /etc/bind/zones/db.beispiel-domain.home
In dieser Datei folgende Einträge erstellen:
;;
;; BIND forward data file for zone beispiel-domain.home
;;
$TTL 86400 ; time-to-live - 24 hours
@ IN SOA ns1.beispiel-domain.home. mail.beispiel-domain.home. (
2016122601 ; Serial - Muster YYYYMMDD01
604800 ; Refresh (every 7 days)
86400 ; Retry (every 24h)
2419200 ; Expire (after 28 days)
604800 ) ; TTL Negativ Cache (7 days)
IN NS ns1.beispiel-domain.home. ; nameserver
IN A 192.168.2.105 ; nameserver's loop-back address
ns1 IN A 192.168.2.105 ; nameserver self
beispiel-domain.home. IN A 192.168.2.105
www IN CNAME beispiel-domain.home.
Für den Reverse-Lookup wird eine weitere Datei angelegt:
$ sudo nano /etc/bind/zones/db.2.168.192
und mit folgendem Inhalt gefüllt:
;;
;; BIND reverse data file for zone db.2.168.192
;;
$TTL 86400 ; time-to-live - 24 h
@ IN SOA ns1.beispiel-domain.home. mail.beispiel-domain.home. (
2016122701 ; Serial
604800 ; Refresh (every 7 days)
86400 ; Retry (every 24h)
2419200 ; Expire (after 28 days)
604800 ) ; TTL Negativ Cache (7 days)
IN NS ns1.beispiel-domain.home. ; nameserver
105 IN PTR www.beispiel-domain.home. ; webserver 192.168.2.105
103 IN PTR nas.beispiel.domain.home. ; NAS Server 192.168.2.103
3.2 BIND-Konfiguration
Nachdem die Zonen-Dateien erstellt wurden, muss noch die Zugriffssteuerung in die BIND-Konfiguration eingetragen werden.
Die BIND-Konfigurationsdatei öffnen:
$ sudo nano /etc/bind/named.conf.options
Der Access Control List (ACL) Eintrag acl_trusted_transfer steuert für welche IP’s ein DNS-Zonen-Transfer erlaubt ist.
acl "acl_trusted_transfer" {
none;
};
Der Eintrag acl_trusted_clients steuert, von welchen IP’s aus Anfragen an den DNS-Server erlaubt sind.
acl "acl_trusted_clients" {
// localhost (RFC 3330) - Loopback-Device addresses
127.0.0.0/8; // 127.0.0.0 - 127.255.255.255
// Private Network (RFC 1918) - LAN, WLAN etc.
192.168.2.0/24; // 192.168.2.0 - 192.168.2.255
// Private Network (RFC 1918) - VPN etc.
// 10.0.0.0/8; // 10.0.0.0 - 10.255.255.255
};
Um Anfragen des DNS-Servers von Zonen außerhalb des lokalen Netzwerkes beantworten zu können, ist es möglich weitere, öffentliche DNS-Server als Forwarders einzutragen.
forwarders {
// Router DNS
// 192.168.2.1;
// Google Public DNS
8.8.8.8;
8.8.4.4;
// OpenDNS
208.67.222.222;
208.67.220.220;
};
Die angelegte Konfiguration kann mit dem Programm named-checkconf geprüft werden:
$ sudo named-checkconf -z
Werden ausschließlich IPv4-Adressen benutzt, soll es dem DNS-Server mitgeteilt werden um die Performance zu steigern. Dazu den Optionsparameter “-4” in dem folgenden Eintrag in der Datei /etc/default/bind9 anhängen:
OPTIONS="-u bind -4"
Abschließend den DNS-Server neu starten:
$ sudo service bind9 restart
oder
$ sudo service bind9 stop
$ sudo service bind9 start
3.3 BIND DNS-Server beim Booten automatisch starten
Damit der BIND DNS-Server-Prozess beim Booten des Systems automatisch gestartet wird, muss der Autostart mit folgendem Befehl aktiviert werden:
$ sudo update-rc.d bind9 defaults
4. DNS-Server im Router eintragen
Die DNS-Server IP-Adresse (in diesem Beispiel 192.168.2.105) sollte in der Router-Konfiguration als primärer lokaler DNS-Server eingetragen werden.
5. DNS-Server testen
5.1 Linux
Forward-Lookup testen
dig @192.168.2.105 +noall +answer beispiel-domain.home
dig @192.168.2.105 +noall +answer www.beispiel-domain.home
dig @192.168.2.105 +noall +answer ns1.beispiel-domain.home
dig @192.168.2.105 +noall +answer nas.beispiel-domain.home
Für jede Anfrage sollte der DNS-Eintrag mit der korrekten IP-Adresse ausgegeben werden.
Reverse-Lookup testen
dig @192.168.2.105 +noall +answer -x 192.168.2.105
dig @192.168.2.105 +noall +answer -x 192.168.2.103
Für jede Anfrage sollte der DNS-Eintrag mit dem korrekten Domain-Namen ausgegeben werden.
5.2 Windows
Forward-Lookup testen
nslookup beispiel-domain.home
nslookup www.beispiel-domain.home
nslookup ns1.beispiel-domain.home
nslookup nas.beispiel-domain.home
Für jede Anfrage sollte die korrekten IP-Adresse ausgegeben werden.
Reverse-Lookup testen
nslookup 192.168.2.105
nslookup 192.168.2.103
Für jede Anfrage sollte der korrekte Domain-Name ausgegeben werden.
War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?
Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!
Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden.