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



Anzeige

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


Anzeige



 

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.



6 Kommentare zu “Lokaler DNS Server mit BIND

  1. Hallo!

    Erst einmal vielen Dank für das gute Tutorial. Nach Systemupdate Debian Jessie auf Squeeze ging alles – ausser bind.
    Und die Konfiguration war Jahre her ….

    Bei den ACLs hat er bei mir gemault. Mußte sie aus den Optionen herausnehmen
    und (ohne options-Block) in die Haupt-Cfg setzen:

    /etc/bind/named.conf


    //
    include “/etc/bind/named.conf.options”;
    include “/etc/bind/named.conf.local”;
    include “/etc/bind/named.conf.default-zones”;

    //====================================
    // security – ACLs
    //====================================
    //

    acl “acl_trusted_transfer” {
    none;
    };

    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.13.0/24; // 192.168.13.0 – 192.168.13.255

    // Private Network (RFC 1918) – VPN etc.
    // 10.0.0.0/8; // 10.0.0.0 – 10.255.255.255
    };

    Jetzt läuft wieder alles wie am Schnürchen ;.D

    _______
    Wer es 1:1 ausprobieren möchte; hier ein kleiner Tippfehler am Rande :
    $ sudo nano /etc/bind/zones/db.2.169.192 <– muss hier enden mit db.2.168.192

  2. Sehr toll
    leider funktioniert nur die Forward Zone bei mir.
    Reverse Zone löst IP Adressen im namen nicht und zeigt keine Fehlermeldung.
    kann jemand bitte helfen.
    Danke

  3. Hallo Matthias,

    überprüfe die named.conf.options Datei in Zeile 42. Ist forwarders richtig mit { geöffnet und mit }; abgeschlossen?
    Ist die Datei mit Unix-Zeilenende(LF) und UTF-8 Kodierung gespeichert?
    Windows Editoren ändern dies oft beim Speichern, so dass die Datei falsch formatiert (Windows Zeilenende) auf den RPi hochgeladen wird.

    Gruss
    Alexander

  4. Hallo,

    eine sehr gute Anleitung! Leider bekomme ich beim Prüfen der Konfiguration (/etc/bind/named.conf.options) mit sudo named-checkconf -z die Fehlermeldung “/etc/bind/named.conf.options:42: unknown option ‘forwarders'” und finde keine Lösung. 🙁

    Hilfe! 🙂

    Viele Grüße,
    Matthias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert