Hat man viele Domains oder möchte einfach auch bei der Auflösung seiner Domains weniger auf andere angewiesen sein, kann man relativ einfach seine eigenen DNS Server aufsetzen.


Übersicht:

  • Installation von BIND
  • Konfiguration der named.conf.options
  • DNS Zone definieren
  • Zonen Datei erstellen
  • DNS Server testen
  • Anhang

 

1. Installation von BIND

apt-get update

apt-get upgrade

apt-get purge bind9* && apt-get autoremove && rm -r /etc/bind*

(Dies entfernt evtl vorhandene BIND Installationen)

apt-get install bind9

2. Konfiguration der named.conf.options

Da man für gewöhnlich für die meisten Zonen die gleichen Optionen möchte, können diese global definiert werden.

cd /etc/bind

nano named.conf.options

Hier am Ende der Datei, aber noch innerhalb der geschweiften Klammer folgende Zeilen einfügen:

allow-query {
 any;
};
allow-recursion {
 none;
};
allow-transfer {
 [IP eines weiteren DNS Servers];
 [und die IP noch eines DNS Servers, falls vorhanden];
 [...];
};

„allow-query“ legt fest, von welchen Clients Abfragen bearbeitet werden sollen. Hier kann man z.B. einen lokalen IP Bereich eintragen, sodass nur Systeme innerhalb des selben Netzwerks den DNS Server nutzen können. Möchte man aber, dass er für jeden (daher „any“) Anfragen bearbeitet, auf any setzen. „allow-recursion“ definiert, für welche Clients rekursive Anfragen ausgeführt werden sollen. Rekursiv heißt, dass unser DNS Server z.B. für die Domain „example.rs“ zuständig ist, aber auch Anfragen für z.B. „example.com“ bearbeitet, bei denen er dann die dafür autoritären befragt und das Ergebnis (also die IP) an den Client weiterleitet. In der Regel möchte man das nicht, wenn man nur einen (bzw mehrere) DNS Server für eigene Domains betreiben möchte, weshalb es auf none (daher „niemand“) gesetzt wird. „allow-transfer“ legt fest, welche IP ein System haben muss, dass es DNS Zonen transferieren / synchronisieren darf.

3. DNS Zone definieren

Immernoch im /etc/bind Verzeichnis, die Datei „named.conf.local“ öffnen:

 nano named.conf.local

und an deren Ende gehen. Hier kommen nun folgende Zeilen rein, wobei „[example.com]“ natürlich durch die Domain, für die der DNS Server zuständig sein soll, ersetzt werden muss. Dies gilt auch für den weiteren Verlauf dieses Guides!

zone "[example.com]" {
 type master;
 file "/etc/bind/zones/[example.com].zone";
}

Das war’s auch schon mit der Definition der Zone. Jetzt muss nur noch die eigentliche Zone existieren!

4. Zonen Datei erstellen

cd /etc/bind

mkdir zones

cd zones

nano [example.com].zone

Hier folgenden Spoiler einfügen:

Spoiler

@ 100 IN SOA [X1]. [X2]. (
20150221 ; Serial: Jahr, Monat, Tag
1800
7200
3600
8640 )

[X1]. 100 IN A [X3]
[X4]. 100 IN A [X5]

[X6]. 100 IN NS [X1].
[X6]. 100 IN NS [X4].

[X6]. 100 IN A [X7].
www.[X6]. 100 IN A [X7]





[collapse]

Dies wird auf den 1. Blick sehr verwirrend aussehen, deshalb die Erklärung:

[X1] = Sub- / Domain des DNS Servers, z.B. ns1.example.com

[X2] = Eine eMail Adresse des Betreibers des DNS Servers. Bei dieser wird das @ Zeichen durch einen Punkt ersetzt, für [X2] könnte also admin.example.com für admin@example.com eingesetzt werden.

[X3] = IP Adresse des 1. DNS Servers

[X4] = Domain des 2. DNS Servers, z.B. ns2.example.com

[X5] = IP des 2. DNS Servers

[X6] = Die eigentliche Domain, die aufgelöst werden. Hier nur die Domain eintragen, ohne www oder sonstiges davor!

[X7] = IP Adresse zu der die eigentliche Domain auflösen soll

Hier eine Beispiel Zonendatei:

Spoiler

@ 100 IN SOA ns1.example.com. admin.example.com. (
20150221
1800
7200
3600
8640 )

ns1.example.com. 100 IN A 1.1.1.1
ns2.example.com. 100 IN A 2.2.2.2

example.com. 100 IN NS ns1.example.com.
example.com. 100 IN NS ns2.example.com.

example.com. 100 IN A 3.3.3.3
www.example.com. 100 IN A 3.3.3.3

[collapse]

Hier ein paar Beispiele für weitere Record Arten:

example.com. 100 IN TXT „Hallo“

Ein T(e)XT Record, der Strings beinhalten kann.

example.com. 100 IN MX 0 mail.example.com.

Ein MX Record, welcher zu einer anderen Domain verweist (mail.example.com), für welche ein A / AAAA Record definiert werden muss.

example.com. 100 IN AAAA aaaa:bbbb:cccc:dddd:eeee:ffff:1111:2222

Ein AAAA (IPv6) Record.

5. DNS Server testen

Dass Bind die Änderungen übernimmt, muss es neu gestartet werden:

service bind9 restart

Hierbei sollte kein Fehler auftreten – falls doch bitte unten in den Anhang schauen!

Hat man noch einen weiteren Server oder ein System auf Linux, kann man nun überprüfen, ob der DNS Server korrekt arbeitet:

apt-get update

apt-get install dnsutils

dig @[Domain oder IP des DNS Servers] [die konfigurierte Domain] any

Hier sollte dig als Status „NOERROR“ melden und in der Auflistung alle Records für die konfigurierte Domain vorhanden sein. Falls ja – klasse, der DNS Server funktioniert! Ist dies der Fall, kann beim Domain Registrar der eigene DNS Server eingetragen werden (als Nameserver) bzw die eigenen eingetragen werden. Siehe Anhang, wie man einfach DNS Server synchronisieren kann.


 

Anhang

  • In der Zonendatei muss man darauf achten, dass alle Domains mit einem Punkt enden (daher nach der Domainendung). Ansonsten weiß bind nicht, wo eine Domain aufhört.
  • Wenn das Neustarten von Bind nicht klappt (daher (ein rotes) „failed“ statt „ok“ kommt), kann per „named-checkconf“ die Konfiguration geprüft werden (kommt kein Output heißt das: alles ok!). Per „named-checkzone [die Domain, diesmal ohne Punkt am Ende] [Pfad zur .zone Datei für die Domain]“ kann man bind überprüfen lassen, ob eine bestimmte Zone für eine bestimmte Domain gültig ist. Kommt nur, dass die Serial geladen wurde und ein „OK“ ist alles ok.
  • Die Serial ist eine Zahl die man komplett selbst festlegen kann (kann bei 1 anfangen, bei 5 Quadrillionen oder auch bei 82361362, ganz egal) die dafür genutzt wird, dass Slave Nameserver (sprich welche, die genutzt werden, wenn der primäre (Master) down ist, oder nicht korrekt antwortet) wissen, wenn sich eine Zone geändert hat und sie sich wieder synchronisieren sollten. Daher: immer, wenn man eine Zone ändert, sollte man die Serial erhöhen. In diesem Guide setzt sich die Serial aus [Jahr][Monat][Tag] zusammen, man kann aber ebenso auch einfach bei 1 anfangen und bei jeder Änderung hochzählen.
  • Man muss nicht mehrere DNS Server haben, man kann auch z.B. ns1.example.com und ns2.example.com zur selben IP zeigen lassen und Domain Registrare sind in den meisten Fällen mit der Eingabe zwei unterschiedlicher Domains zufrieden. Dennoch empfiehlt es sich definitiv. Denn hat man nur einen DNS Server und man hat diesen Dekonfiguriert, es aber noch nicht gemerkt oder findet so schnell keine Lösung oder der gesamte Server ist down, werden entweder einzelne Domains nicht mehr aufgelöst – oder aber alle. Das heißt, dass nach Ablauf des DNS Cache (wenn ein Client bereits einmal auf einer Domain war wird die Antwort des DNS Servers (sprich die IP) temporär gespeichert für eine bessere Performance) eine Domain für einen Client nicht mehr erreichbar ist, bis hin, dass sie für niemanden mehr erreichbar ist. Hat man dagegen mehrere DNS Server, funktioniert zwar einer davon nicht mehr, aber die anderen tun es noch (vorausgesetzt, diese wurden nicht auch dekonfiguriert oder sind auch down).
  • Für den Betrieb eigener DNS Server, reichen sehr kleine Server. [HIER] finden sich sehr günstige, teils jährliche VPS, die als DNS Server wunderbar sind (vorausgesetzt, sie haben eine dedizierte IP).
  • Um einen weiteren DNS Server mit der Konfiguration des Primären zu versorgen, folgendes auf dem weiteren Server ausführen: „scp -r root@[Domain oder IP des Primären]:/etc/bind/* /etc/bind/“ Dies überträgt alle Dateien im Bind Ordner auf den anderen Server, auf dem dann nur noch die Zonen angepasst werden sollten (in der 1. Zeile sollte dann z.B. aus ns1.example.com. ns2.example.com. gemacht werden) und bind neu gestartet (service bind9 restart). Schon hat man noch einen weiteren DNS Server!
  • Ein weiterer Guide, wie man den Bind DNS Server dazu bekommt, je nach Herkunft des Clients eine andere IP auf die selbe Domain zu antworten (GeoDNS), kommt demnächst!
[HowTo] BIND9 DNS Server auf Debian / Ubuntu aufsetzen
Markiert in:                                                                                                                             

2 Gedanken zu „[HowTo] BIND9 DNS Server auf Debian / Ubuntu aufsetzen

  • 13. August 2015 um 17:02
    Permalink

    Hi,

    bei mir kommt mit „named-checkconf“ immer diese fehlermeldung:

    /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘

    ich versuche zwei nameserver einzurichten, die obere IP adresse ist vom ersten nameserver.

    im log steht das:

    Aug 13 18:47:57 8305 named[10727]: loading configuration from ‚/etc/bind/named.conf‘
    Aug 13 18:47:57 8305 named[10727]: /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘
    Aug 13 18:47:57 8305 named[10727]: /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘
    Aug 13 18:47:57 8305 named[10727]: /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘
    Aug 13 18:47:57 8305 named[10727]: /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘
    Aug 13 18:47:57 8305 named[10727]: /etc/bind/named.conf.options:33: undefined ACL ‚[XX.XX.XX.110]‘
    Aug 13 18:47:57 8305 named[10727]: loading configuration: failure

    habe bereits alles durch vom „HowTo“ nur halt es funktioniert nicht, wäre nett wenn du mir weiter Helfen könntest.

    Danke.

    Antworten
  • Pingback: [HowTo] MaraDNS Server unter Debian / Ubuntu aufsetzen und konfigurieren | BitForce.IO

Schreibe einen Kommentar

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

*