Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
Fr, 19. November 2004, 00:00

DNS entschlackt

Nichtrekursiver Nameserver mit NSD

Ein Domain-Nameserver muß nicht immer unter Bind laufen, zumal sich zeigt, daß Bind für viele Situationen unangemessen viel Speicher benötigt. Für diese Fälle kann ein Server mit NSD brauchbar sein. Die Konfiguration ist einfach, wenn man eine Konfiguration von Bind 9 übernehmen kann, sogar fast trivial.

Die Zonendateien

Wir haben festgelegt, daß die Zone test.com in der Datei /etc/nsd/test.com zu finden ist und die Zone 11.22.33.44.in-addr.arpa in der Datei /etc/nsd/reverse. Nun müssen wir diese noch erstellen.

/etc/nsd/test.com

$TTL 86400
@	IN	SOA		www	postmaster.www (
	2004101201 10800 1800 3600000 259200 )
			IN	NS	ns
			IN	MX	10 www
ns			IN	A	44.33.22.11
www			IN	A	44.33.22.11
@			IN	A	44.33.22.11

Es könnte Ihnen aufgefallen sein, daß nirgends in der ganzen Datei der Zonenname vorkommt. Da das Symbol @ für den Zonennamen steht und zudem dieser Name an alle Namen angehängt wird, die nicht mit einem Punkt enden, kann man sich das sparen. So kann man die gleiche Datei unter Umständen für viele Zonen verwenden.

In dieser Datei haben wir der Adresse 44.33.22.11 drei Namen zugewiesen: ns (ns.test.com), www (www.test.com) und test.com selbst. ns.test.com ist der einzige Nameserver für diese Zone, der Rechner also, auf dem NSD läuft. In einer realen Konfiguration sollte man alle sekundären Nameserver für diese Zone ebenfalls als NS-Record eintragen.

Diese Zonendatei ist kompatibel mit der, die Bind 9.x erwartet. Leider nur fast. In der Datei von Bind waren zwei Zeilen anders definiert:

@			IN	NS	ns
@			IN	MX	10 www

Beachten Sie das »@« am Anfang der Zeile! Als ich diese Datei so dem NSD vorlegte, wurde sie zwar fehlerfrei compiliert, aber jede Abfrage scheiterte mit der Fehlermeldung NXDOMAIN. Wie ich darauf kam, daß das »@« zuviel war? Das Konsultieren des Mailinglisten-Archivs brachte mich darauf, weil dort jemand eine offenbar funktionierende Zonendatei gepostet hatte.

/etc/nsd/reverse

$TTL 86400
@	IN	SOA	www.test.com.	postmaster.www.test.com. (
	2004101403 10800 1800 3600000 259200 )
				IN	NS	ns.test.com.
				IN	MX	10 www.test.com.
11.22.33.44.in-addr.arpa.	IN	PTR	www.test.com.

Zur Datei /etc/nsd/reverse gibt es nicht viel zu sagen. Der Kopf der Datei ist der gleiche wie bei der normalen Zone. Dahinter dürfte eine Zeile pro verwendeter IP-Adresse genügen.

Zonen compilieren

Da NSD die Zonendefinitionen aus einer Datenbank-Datei liest, müssen wir die eben erstellten Definitionen erst einmal dort hineinbekommen. Wir können den Zonen-Compiler zonec von Hand aufrufen:

zonec -v -f /var/lib/nsd/nsd.db /etc/nsd/nsd.zones

Hierbei bedeutet das optionale Flag -v, das auch mehrmals angegeben werden kann, daß zonec mehr Ausgaben macht. -f /var/lib/nsd/nsd.db bezeichnet die Datenbank-Datei. Das letzte Argument ist die Datei mit der Zonenliste. Wenn hierbei Fehlermeldungen kommen, sind die Zonendateien zu prüfen. Viel Hilfestellung bietet der Compiler dafür nicht: Wie die Entwickler schreiben, ist es ziemlich schwierig, die Zonendateien vernünftig zu parsen, da das Format so variabel ist. Doch selbst ein erfolgreicher Durchlauf ist keine Garantie dafür, daß es funktioniert. Man muß den NSD mit diesen Zonen starten und testen, ob die gelieferten Daten stimmen.

Allerdings hätten wir uns den Aufruf von zonec auch sparen können, denn beim Start von NSD via /etc/init.d/nsd start erledigt das die Debian-Installation automatisch.

Laufender Betrieb

NSD kann als unprivilegierter Benutzer laufen, indem man die Option -u verwendet. Bei Debian ist das Standard, es wird bei der Installation gleich ein User nsd angelegt. Zusätzlich könnte man NSD noch in eine chroot-Umgebung sperren, was aber einen gewissen Aufwand bedeutet. Ob der sich lohnt, kann man anhand meines Artikels Den Nameserver BIND sicherer machen in etwa abschätzen.

NSD schreibt normalerweise nichts ins Syslog, da es die Meinung der Autoren ist, daß dies die Aufgabe anderer Programme sei. So ist auch die Statistik, die man mit der Option -s ins Syslog schreiben lassen kann, sehr schwierig zu lesen. Es wird empfohlen, das Programm dnsstat zur Analyse einzusetzen.

dnsstat lauscht am Netzwerkinterface, um den DNS-Traffic mitzubekommen. Ich will hier nicht weiter auf dnsstat eingehen, da ich es nicht zum Laufen bekommen habe. Hinweise oder gleich ein ganzer Artikel über dnsstat sind willkommen!

Mit dem Programm nsdc kann man im laufenden Betrieb Kommandos an nsd senden. Ich brauche die Kommandos hier nicht näher zu erläutern, da sie in der Manpage erklärt sind und keine Verständnisschwierigkeiten bergen. Man kann beispielsweise den Daemon stoppen, starten, die Datenbank neu erzeugen oder neu in den Daemon laden.

Zugangskontrolle

Läuft NSD als primärer Server, dann wird der Zonentransfer an die sekundären Nameserver durch den TCP-Wrapper-Mechanismus kontrolliert, sofern dieser ins Programm eincompiliert wurde. Um sicherzugehen, daß die sekundären Nameserver sich die Daten holen können, sollte man dies testen. Vom lokalen oder einem anderen Rechner ruft man nsd-xfer auf:

nsd-xfer -z test.com -f somefile servername

Sollte dies nicht funktionieren, muß man möglicherweise die Einstellungen in /etc/hosts.allow und /etc/hosts.deny kontrollieren. Der Servicename, der hier einzutragen ist, lautet axfr oder axfr-zone. Bei letzterem ist zone durch den Zonennamen zu ersetzen, in unserem Falle also ergibt sich also der Servicename axfr-test.com. (Achtung: Punkt am Ende beachten).

Fazit

Was haben wir gewonnen durch den Einsatz von NSD? Der Speicherbedarf ist von 11 bzw. 3 MB auf 2 bzw. 0,7 MB gesunken, also um rund 75 Prozent:

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
5 101 4310 1 16 0 1868 740 wait4 Ss ? 0:00 /usr/sbin/nsd
1 101 4311 4310 15 0 2044 784 - S ? 0:00 /usr/sbin/nsd

NSD ist ein brauchbarer Ersatz für Bind, wenn man nur die beschriebenen Features benötigt. Geringer Speicherbedarf, Sicherheit (zum einen durch den Einsatz eines weniger verbreiteten Programmes, aber auch durch sorgfältige Programmierung) und Schnelligkeit sind seine Pluspunkte. Dürftige Dokumentation und mangelnde Fehlermeldungen des Zone-Compilers sind die Schattenseiten.

  • Dieses Werk wurde unter der Commons Attribution-Share Alike Lizenz veröffentlicht. Kopieren, Verbreiten und/oder Modifizieren ist erlaubt unter den Bedingungen der Commons Attribution-Share Alike, veröffentlicht von der Creative Commons.

    - Weitere Informationen
Pro-Linux
Newsletter
Neue Nachrichten