Unitymedia Horizon HD Recorder löst die Domäne lokal nicht auf


Wer eine eigene Domäne besitzt, mit der er aus dem Internet auf das Heimnetzwerk zugreift, wird es lokal in Verbindug mit Unitymedia Horizon HD Recorder ohne Umwege nicht machen können.

Ärgerlich ist es schon dass der Router der Horizon Box nicht in der Lage ist die WAN-IP auf dem DDNS-Server zu aktualisieren. Die Abhilfe schafft ein DDNS-Client auf dem Raspberry Pi (wie hier beschrieben). So lässt sich aus dem Internet auf das Heimnetzwerk mit einer Domäne zugreifen. Nur lokal funktioniert es leider nicht. Die Horizon Box kann die Domäne in eigene WAN-IP nicht auflösen und weiterleiten.

Hier lohnt es sich wieder mal den Raspberry Pi zur Hilfe zu holen und seine Dienste als lokaler DNS-Server nutzen. Nach der Installation wie auf der Seite „Lokaler DNS Server mit BIND“ beschrieben, muss er nur noch der Horizon Box bekannt gemacht werden. In der UPC WebApp unter Basic => Lokales Netzwerk (LAN) => Lokaler DNS Server 1 die IP-Adresse des Raspberry Pi mit der BIND DNS Server Installation eingeben.

 







Lokaler DNS Server mit BIND



Inhalt

  1. 1. Einführung
  2. 2. Installation
  3. 3. Konfiguration
    1. 3.1 Forward- und Reverse-Lookup Zonen
    2. 3.2 BIND-Konfiguration
    3. 3.3 BIND DNS-Server beim Booten automatisch starten
  4. 4. DNS-Server im Router eintragen
  5. 5. DNS-Server testen
    1. 5.1 Linux
    2. 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:

DNS-Server-Test mit dig

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.169.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.