Ein DNS-Server im Heimnetzwerk ermöglicht (beliebig viele) eigene Domains im LAN. Außerdem beschleunigt sich der Abruf von Webseiten, wenn der Zugriff aufs Internet über den lokalen DNS-Server geleitet wird. Der Geschwindigkeitsgewinn ist marginal, aber immerhin.
BIND ist eine DNS-Server-Software. Ich war darauf aus, auf meinem Raspberry Pi, der direkt am Router hängt und always on ist, eine BIND-Installation ans Laufen zu bringen. Nach zähem Ringen ist mir das nun gelungen. Letztlich stellte sich heraus, dass nicht eine fehlerhafte Konfiguration von BIND den schnellen Erfolg verhinderte. Nein, der Router war der Bösewicht. Meine Fritzbox 7490 spielte ein wenig Verstecken mit mir.
Was tun DNS-Server?
DNS-Server sind im Grunde nichts anderes als Telefonbücher fürs Netz. Sie ordnen die IP-Adressen von Internet-Servern Klarnamen zu, den sog. Domains. Wenn ich also im Netz eine Seite besuchen möchte, zum Beispiel KiRaKa.de, dann muss ich mir nur den Namen merken, nicht eine kryptische Kombination von Zahlen, wie zum Beispiel 85.214.117.171.
Ein lokaler DNS-Server ermöglicht es mir aber eben auch, in meinem eigenen kleinen Intranet zu Hause leicht zu merkende Domain-Namen einzurichten, unter denen ich dann verschiedene Computer bzw. Netzwerk-Geräte im LAN erreiche. Oder aber ich richte auf ein und demselben Rechner mehrere virtuelle Hosts ein und speichere darauf verschiedene Webseiten, die ich unter unterschiedlichen Adressen erreiche, zum Beispiel radiobeere.lan, tobi.lan usw.
BIND – Der Klassiker
Auf unzähligen öffentlichen DNS-Servern im Internet ist BIND installiert:
Warum also nicht auch auf meinem privaten Raspberry Pi? Soll ja nicht so schwer sein, das hinzukriegen, hatte ich gelesen. Ja, aber …
Auf meinem Raspberry Pi läuft Raspbian. BIND lässt sich ganz einfach aus den Standard-Quellen installieren:
1 |
sudo apt-get install bind9 |
Ich erspare mir die Erklärung der Hintergründe zu BIND und verweise auf die drei Webseiten, die mich auf die richtige Spur gebracht haben:
https://wiki.ubuntuusers.de/DNS-Server_Bind
https://www.rootathome.de/bind9-dns-server-einrichten-unter-debian
https://samhobbs.co.uk/2015/05/local-bind9-caching-dns-server
In meinem Szenario fungiert der Raspberry Pi, der direkt am Router hängt, nicht nur als lokaler DNS-Server, sondern hostet verschiedene Webseiten, die nur im Heimnetz zu erreichen sind. Quasi ein kleines Intranet. DNS-Anfragen zu öffentlichen Webseiten werden an die DNS-Server von Google weitergeleitet.
Nach der Installation von BIND müssen fünf Dateien angepasst werden. So sieht das in meiner Konfiguration aus:
/etc/bind/db.lan
(neu anzulegende Datei)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
; ; BIND data file for domain lan ; $TTL 604800 @ IN SOA ns.lan. root.localhost. ( 2015121701 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.lan. @ IN A 192.168.178.42 ns IN A 192.168.178.42 localhost IN A 127.0.0.1 fritzbox IN A 192.168.178.1 dm7025 IN A 192.168.178.36 server2 IN A 192.168.178.37 filme IN A 192.168.178.39 server IN A 192.168.178.39 dm7020hd IN A 192.168.178.41 dreamberry IN A 192.168.178.42 radiobeere IN A 192.168.178.42 db IN A 192.168.178.42 |
/etc/bind/db.178.168.192
(neu anzulegende Datei)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
; ; BIND reverse data file for 178.168.192.in-addr.arpa ; $TTL 604800 @ IN SOA ns.lan. root.localhost. ( 2015121701 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.lan. 36 IN PTR dm7025.lan. 37 IN PTR server2.lan. 39 IN PTR server.lan. 39 IN PTR filme.lan. 41 IN PTR dm7020hd.lan. 42 IN PTR ns.lan. 42 IN PTR radiobeere.lan. 42 IN PTR dreamberry.lan. 42 IN PTR db.lan. |
/etc/bind/named.conf.local
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "lan" { type master; file "/etc/bind/db.lan"; }; zone "178.168.192.in-addr.arpa" { type master; notify no; file "/etc/bind/db.178.168.192"; }; |
/etc/bind/named.conf.options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 8.8.8.8; 8.8.4.4; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; |
/etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback iface eth0 inet static address 192.168.178.42 netmask 255.255.255.0 network 192.168.178.0 gateway 192.168.178.1 broadcast 192.168.178.255 dns-nameservers localhost 192.168.178.1 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan1 iface wlan1 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf |
Abschließend habe ich noch eine kleine Veränderung in der Grundkonfiguration des Servers vorgenommen, die angeblich die Geschwindigkeit nochmal deutlich steigern soll: Ich habe BIND mitgeteilt, dass ich ausschließlich IPv4-Adressen benutze und zwar durch einen Eintrag in folgender Datei:
/etc/default/bind9
1 |
OPTIONS="-u bind -4" |
DNS-Server in der Fritzbox eintragen
Nun ging es „nur“ noch darum, den neu eingerichteten lokalen DNS-Server der Fritzbox 7490 als primärem DNS-Server mitzuteilen. Ich habe mehrere Anläufe gebraucht, bis ich die richtige Stelle im Web-Konfigurationsinterface der Fritzbox gefunden hatte, mehrere Installationen und De-Installationen von BIND und zwischendurch auch ein paar Versuche mit einem alternativen DNS-Server, mit dnsmasq. Letztlich wurde ich hier fündig:
Heimnetz
-> Heimnetz-Übersicht
-> Netzwerkeinstellungen
-> IPv4-Adressen
-> Lokaler DNS-Server
Da muss man erstmal drauf kommen. Wahrscheinlich haben die Leute von AVM die Einstellung im Fritzbox-Backend bewusst so gut versteckt. Denn in diesem Bereich der Konfiguration sollte man besser nicht rumfummeln, wenn man nicht weiß, was man tun.
Außerdem habe ich noch die Einstellungen unter „Internet -> Zugangsdaten -> DNS-Server“ verändert und auch hier unter „Andere DNSv4-Server verwenden“ zweimal die IP meines Raspberry Pi angegeben.
Danach die Fritzbox neu starten, am besten den lokalen DNS-Server auch – und es läuft.









