Wie man den djbdns Name Server auf Debian Etch installiert und verwendet

Version 1.0
Author: Falko Timme


djbdns ist eine sehr sichere Sammlung an DNS Tools, die aus mehreren Teilen besteht: dnscache, einem DNS cache, der in /etc/resolv.conf anstelle Deiner ISP's name server verwendet werden kann und der versucht, falsche (bösartige) DNS Antworten auszusortieren; axfrdns, ein Dienst, der auf dem Master DNS Server ausgeführt wird und mit dem sich die Slaves zwecks Zonentransfers verbinden; und tinydns, der eigentliche DNS Server, ein sehr sicherer Ersatz für BIND.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich habe djbdns auf einem Debian Etch System mit der IP Adresse 192.168.0.100 ausprobiert. Ich werde erklären, wie man dnscache und tinydns (als einen Master DNS Server) verwendet, aber nicht, wie man axfrdns verwendet - vielleicht behandle ich dies in einem anderen Tutorial.

dnscache wird auf der lokalen IP Adresse 127.0.0.1 und tinydns auf der externen IP Adresse 192.168.0.100. hören.

2 Installation von djbdns

Wegen seiner "Lizenz" ist djbdns in den Debian Paketdatenbanken nicht als Binär-Paket verfügbar (bis zum 28. December 2007 war djbdns eine lizenz-freie Software), es gibt allerdings ein djbdns-installer Paket in den Paketdatenbanken, das verwendet werden kann, um djbdns zu installieren. djbdns ist abhängig von daemontools und ucspi-tcp; nochmal, es sind nur Installer Pakete für diese Programme verfügbar. Die Installer sind in den Debian Etch contrib und non-free Paketdatenbanken verfügbar, also müssen wir zuerst sicher stellen, dass diese in unserer /etc/apt/sources.list sind:

vi /etc/apt/sources.list


[...]
deb http://ftp2.de.debian.org/debian/ etch main contrib non-free [...]
Aktualisiere danach Deine Paketdatenbank:

apt-get update

Als Nächstes installieren wir den daemontools-installer:

apt-get install daemontools-installer

Nun können wir die daemontools wie folgt installieren:

build-daemontools

Dir werden ein paar Fragen gestellt. Du kannst immer den Standardwert beibehalten indem Du ENTER drückst:

Enter a directory where you would like to do this [/tmp/daemontools] <-- ENTER

Which format would you like to use? [fD] <-- ENTER

Press ENTER to continue... <-- ENTER


Do you want to remove all files in /tmp/daemontools,
except daemontools_0.76-9_i386.deb now? [Yn] <-- ENTER

Do you want to install daemontools_0.76-9_i386.deb now? [Yn] <-- ENTER

Do you want to purge daemontools-installer now? [yN] <-- ENTER

Um ucspi-tcp zu installieren, führen wir dies aus

apt-get install ucspi-tcp-src

und dann:

build-ucspi-tcp

Dir werden erneut Fragen gestellt und wieder kannst Du den Standardwert beibehalten:

Enter a directory where you would like to do this [/tmp/ucspi-tcp] <-- ENTER

Press ENTER to continue... <-- ENTER


Do you want to remove all files in /tmp/ucspi-tcp,
except ucspi-tcp_0.88-10_i386.deb now? [Yn] <-- ENTER

Do you want to install ucspi-tcp_0.88-10_i386.deb now? [Yn] <-- ENTER

Do you want to purge ucspi-tcp-src now? [yN] <-- ENTER

Letztendlich installieren wir djbdns wie folgt:

apt-get install djbdns-installer

build-djbdns

Wieder werden Dir Fragen gestellt - behalte die Standardwerte bei:

Enter a directory where you would like to do this [/tmp/djbdns] <-- ENTER

Press ENTER to continue... <-- ENTER


Do you want to remove all files in /tmp/djbdns,
except djbdns_1.05-11_i386.deb now? [Yn] <-- ENTER

Do you want to install djbdns_1.05-11_i386.deb now? [Yn] <-- ENTER

Do you want to purge djbdns-installer now? [yN] <-- ENTER

Als Nächstes konfigurieren wir dnscache, axfrdns und tinydns (pass auf, dass Du 192.168.0.100 mit der externen IP Adresse Deines Systems ersetzt):

mkdir /var/lib/svscan
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache
axfrdns-conf axfrdns dnslog /var/lib/svscan/axfrdns /var/lib/svscan/tinydns 192.168.0.100
tinydns-conf tinydns dnslog /var/lib/svscan/tinydns 192.168.0.100

ln -s /var/lib/svscan/dnscache /service
ln -s /var/lib/svscan/axfrdns /service
ln -s /var/lib/svscan/tinydns /service

Dann starten wir djbdns:

/etc/init.d/djbdns restart


3 Gebrauch von dnscache

Um dnscache verwenden zu können, ersetzen wir die vorhandenen Name Server in /etc/resolv.conf mit 127.0.0.1, der IP Adresse, auf der dnscache hört.

Mache eine Sicherheitskopie der Datei /etc/resolv.conf:

cp /etc/resolv.conf /etc/resolv.conf-original

Führe dann folgende Befehle aus um eine neue /etc/resolv.conf (pass auf, dass Du example.com mit Deiner eigenen Domain ersetzt) zu erstellen:

echo "domain example.com" > /etc/resolv.conf
echo "nameserver 127.0.0.1" >> /etc/resolv.conf

Um zu überprüfen, ob dnscache funktioniert, können wir versuchen einen Hostnamen, z. B. www.google.com aufzulösen:

dnsip www.google.com

Wenn alles gut geht, sollte es die IP Adressen von www.google.com anzeigen:

server1:~# dnsip www.google.com
66.249.93.104 66.249.93.147 66.249.93.99
server1:~#

4 Konfiguration von tinydns

Alle tinydns Einträge sind in der Datei /service/tinydns/root/data abgelegt. Diese Datei kann entweder per Hand bearbeitet werden oder Du verwendest ein paar Hilfsskripte, die im /service/tinydns/root Verzeichnis sind, z.B. add-ns, add-host, add-alias, etc.

Ich werde nun ein paar Einträge für die Domain example.com erstellen, indem ich diese Hilfsskripte verwende. Um diese Hilfsskripte verwenden zu können, gehen wir in das /service/tinydns/root Verzeichnis:

cd /service/tinydns/root

Nun möchte ich, dass dieser Server (192.168.0.100) ein Name Server für die example.com Domain ist, also führe ich dies aus:

./add-ns example.com 192.168.0.100

Die Bezeichnung des Name Servers kann nicht direkt festgelgt werden. Die Bezeichnungen werden von add-ns automatisch zugewiesen, nach dem [a-z].ns.name Muster, d.h. der 192.168.0.100 Name Server trägt die Bezeichnung a.ns.example.com (Du musst keinen A Eintrag für a.ns.example.com erstellen, der wurde vorher automatisch mit dem add-ns Befehl erstellt).

Lass uns nun den Server mit der IP Adresse 192.168.0.101 zu unserem zweiten Name Server für die example.com Domain - diese ist b.ns.example.com umfunktionieren:

./add-ns example.com 192.168.0.101

Lass uns als Nächstes A Einträge für die Server erstellen, die example.com hosten werden - wir nennen sie server1.example.com und server2.example.com:

./add-host server1.example.com 192.168.0.100
./add-host server2.example.com 192.168.0.101

Jede IP Adresse kann in einem add-host Befehl nur einmal benutzt werden. Um weitere Hostnamen zu erstellen, die die diese IP Adresse verwenden, müssen wir nun den add-alias Befehl anwenden:

./add-alias www.example.com 192.168.0.100
./add-alias example.com 192.168.0.100

192.168.0.100 soll der Mail Exchanger für example.com werden:

./add-mx example.com 192.168.0.100

Die Bezeichnung des SMTP Servers kann nicht direkt festgelegt werden. Die Bezeichnungen werden von add-mx automatisch zugewiesen, nach dem Muster [a-z].mx.name, in diesem Fall a.mx.example.com. Die Priorität für den SMTP Server kann nicht festgelegt werden.

Nachdem Du alle gewünschten Einträge erstellt hast, musst Du dies ausführen

make

damit Deine Änderungen übernommen werden können.

Es gibt keine Hilfsskripte um CNAME und TXT Einträge erstellen zu können (z.B. für SPF Einträge). Wenn Du also solche Einträge erstellen möchtest, musst Du /service/tinydns/root/data manuell bearbeiten, z.B. wie folgt:

vi /service/tinydns/root/data


[...]
'example.com:v=spf1 a mx ~all:3600 Cftp.example.com:www.example.com
Du kannst den SPF wizard auf http://old.openspf.org/wizard.html verwenden um einen SPF Eintrag für Deine Domain zu erstellen - der wizard zeigt den Eintrag in BIND und tinydns Syntax an, sodass Du den Eintrag kopieren und einfügen kannst.

Vergiss nicht

make

danach auszuführen.

Wenn Du Dir die /service/tinydns/root/data Datei ansiehst...

cat /service/tinydns/root/data


server1:/service/tinydns/root# cat /service/tinydns/root/data
.example.com:192.168.0.100:a:259200
.example.com:192.168.0.101:b:259200
=server1.example.com:192.168.0.100:86400
=server2.example.com:192.168.0.101:86400
+www.example.com:192.168.0.100:86400
+example.com:192.168.0.100:86400
@example.com:192.168.0.100:a::86400
'example.com:v=spf1 a mx ~all:3600
Cftp.example.com:www.example.com
server1:/service/tinydns/root#

... wirst Du feststellen, dass die Einträge mit Zeichen wie diesen ., =, +, @, ', C, etc. beginnen. Auf http://www.fefe.de/djbdns/#recordtypes und http://www.pjvenda.org/linux/doc/tinydns/ findest Du Erklärungen zu den unterschiedlichen Einträgen.

Anstelle der add-* Hilfsskripte kannst Du alle Einträge auch manuell in /service/tinydns/root/data festlegen. So bist Du flexibler. Zum Beispiel kannst Du Deinen Name Servern und Mail Exchangern individuelle Bezeichnungen zuweisen, z.B. ns1.example.com anstatt a.ns.example.com:

cd /service/tinydns/root
vi data

#define the authoritative nameserver
.example.com::ns1.example.com #mail exchanger @example.com::mail.example.com #IP for machine1,2,3,4,5 =machine1.example.com:1.2.3.1 =machine2.example.com:1.2.3.2 =machine3.example.com:1.2.3.3 =machine4.example.com:1.2.3.4 =machine5.example.com:1.2.3.5 #machine5 is also known as ns1 +ns1.example.com:1.2.3.5 #machine1 is our mailserver +mail.example.com:1.2.3.1 #and our webserver +www.example.com:1.2.3.1

make

Um Deine Einträge zu testen, kannst Du den dig Befehl verwenden, z.B.

dig @192.168.0.100 example.com

dig @192.168.0.100 ns example.com

dig @192.168.0.100 mx example.com

dig @192.168.0.100 txt example.com

dig @192.168.0.100 www.example.com

etc.

Wenn Du mehr über djbdns wissen möchtest, solltest Du Dir auf jeden Fall folgende Webseiten ansehen:

0 Kommentar(e)

Zum Posten von Kommentaren bitte