DNS-Server


Eine IP-Adresse bekomme ich schon. Nun fehlt noch die DNS Namensauflösung. Hierzu wird ein DNS-Server benötigt. Ich habe mich für Bind9 entschieden. Die Installation erfolgt für Armbian folgendermaßen:

apt-get install bind9

Zur Konfiguration sind 2 Dateien für den Anfang besonders interessant. In der Datei „/etc/bind/named.conf.options“ werden globale Optionen für Bind eingetragen. Die Datei „/etc/bind/named.conf.local“ beinhaltet die Zonendateien für die der lokale DNS-Server zuständig ist. Damit DNS-Namen aus dem Internet aufgelöst werden können, benötigt der DNS-Server einen Forwarder. An diesen Server leitet der lokale DNS-Server Anfragen weiter die er selbst nicht beantworten kann.

Damit das funktioniert sind folgende Einträge in der Datei named.conf.local notwendig:

forwarders {
    217.237.149.142; # T-Online DNS
    217.237.150.205; # T-Online DNS
    213.73.91.35; # CCC-DNS Cache
    8.8.8.8; # Google DNS
};

Nun noch den Daemon neu starten und schon funktioniert es.

service bind9 restart

Da ich von der Telekom meinen DSL-Anschluss beziehe, sind bei mir die ersten DNS-Server auch von meinem Provider. Sollten sich hier mal Probleme ergeben wird ein DNS-Cache-Server vom Chaos Computer Club und zu guter letzt als Notnagel auch der Google DNS-Server benutzt. Bind9 geht in der Reihenfolge der eingetragenen Server vor. Der Vorgänger hat seine Entscheidung noch anhand der Roundtrip Zeit gefällt.

Zum Testen reicht ein Ping auf eine bekannt Webseite. Am besten von einem Rechner im Netzwerk.

ping www.heise.de

Ping Heise.de

Sicherheit

Wer plant seinen DNS-Server ein wenig abzusichern sollte sich mit den folgenden Optionen vertraut machen.

allow-query { 127.0.0.1; 192.168.0.0/24; };
allow-transfer { 127.0.0.1 };

Die Option „allow-query“ legt fest aus welchem IP-Adressbereich DNS-Anfragen überhaupt beantwortet werden. „allow-tranfer“ lässt Zonentransfers nur aus dem hinterlegten IP-Adressbereich zu.

Eigene DNS-Zone

Nun wäre es noch schön. wenn für lokale Server, Dienste oder Geräte über einen Namen erreichbar wären. Ein Beispiel hier für wäre:

drucker.zuhause.lan

Hierfür müssen wir zwei Zonen einrichten. Eine Forward-Lookup Zone für die Auflösung von Hostnamen zu IP-Adressen und eine Reverse-Lookup Zone für Auflösung von IP-Adressen zu Namen. Hierfür müssen in der Datei „/etc/bind/named.conf.local“ zwei Einträge gemacht werden.

Forward-Lookup-Zone:
zone "zuhause.lan" {
    type master;
    file "/var/cache/bind/zuhause.lan";
};
Reverse-Lookup Zone:
zone "0.168.192.in-addr.arpa" {
    type master;
    file "/var/cache/bind/0.168.192.lan";
};

Zonen Dateien

Sind die Einträge erfolgt, müssen noch die beiden Zonendateien erstellt und gefüllt werden. Die Zonendateien liegen im Verzeichnis „/var/cache/bind/“.

Forward Zone
$ORIGIN zuhause.lan.
$TTL 600      ; 10 min
@            IN SOA  ns ns (
             1          ; serial
             604800     ; refresh (1 week)
             86400      ; retry (1 day)
             2419200    ; expire (4 weeks)
             86400      ; minimum (1 day)
             )
@         IN NS ns.zuhause.lan.
$TTL 86400      ; 1 day
ns        IN A  192.168.0.6

Nach einem Restart des Bind-Daemons kann man nun versuchen ob man von einem Client den Server „ns.zuhause.lan“ pingen kann.

ping ns.zuhause.lan

Reverse Zone:

Nun fehlt noch die Datei für die Revers-Lookup-Zone. Da hier die IP-Adressen in Namen aufgelöst werden, sieht diese Datei etwas anders aus.

$ORIGIN 0.168.192.in-addr.arpa.
$TTL 600      ; 10 min
@            IN SOA  ns ns (
             1          ; serial
             604800     ; refresh (1 week)
             86400      ; retry (1 day)
             2419200    ; expire (4 weeks)
             86400      ; minimum (1 day)
             )
@         IN NS ns.zuhause.lan.

$TTL 86400      ; 1 day
6         PTR   ns.zuhause.lan.

Nun ist wieder ein Restart des Bind Dienstes angesagt und man kann testen ob auch die Rückwärtsauflösung klappt.

nslookup 192.168.0.6

nslookup-ns.zuhause.lan

DNS Einträge erzeugen

Nun kann man Einträge nach dem Muster

"Name"        IN A  "IP-Adresse"
drucker       IN A  192.168.0.10
"letzte stelle der IP-Adresse"         PTR   "Name".zuhause.lan.
10                                     PTR   drucker.zuhause.lan.

erzeugen. Bei jeder Änderung in den Dateien muss übrigens der Zähler (serial) um eins nach oben korrigiert werden. Passiert das nicht, könnten eventuelle Slave DNS-Server die Zone nicht korrekt importiern.

Nach einem Reaload des Bind-Daemons sollten dann auch die neu hinzugefügten Namen aufgelößt werden. Der „.“ hinter den Namen in der Revers-Lookup-Zone ist übrigens Absicht und muss gesetzt werden. Wenn man das vergisst, sieht das Resultat so aus:

fehler-revers-lookup

Fertig

Wenn man nun einen funktionsfähigen DNS-Server hat, kann er nun in die Konfigurationsdatei für das Netzwerk eingetragen werden. Unter „/etc/network/interfaces“ kann nun der Eintrag „dns-nameserver“ auf 127.0.0.1 geändert werden. Wer nicht Neustarten möchte, sollte die Konfigurationsdatei „/etc/resolv.conf“ ebenfalls prüfen und gegebenfalls ändern.

Übrigens

Viele Administratoren nutzen die Top-Level-Domain „.local“. Dies sollte man aber überdenken, da diese von der IANA dem Bonjour- oder mDNS- Protokoll zugewiesen wurde. Dies ist trotzdem möglich, erfordert aber eine spezielle Konfiguration.

Links:

Apple Support – Bonjour funktioniert nicht
Wikipedia – DNS
ISC Bind


Schreibe einen Kommentar