# Djbdns

djbdns ist ein von Daniel J. Bernstein entwickelter DNS-Server. Ein Grund für die Entwicklung von djbdns waren die immer wieder auftretenden Sicherheitsprobleme innerhalb von BIND. Daniel Bernstein, ein Entwickler, dessen Hauptaugenmerk auf die Sicherheit seiner Applikationen gerichtet ist, hat 1000 US-Dollar an diejenige Person ausgeschrieben, die ein Sicherheitsproblem von djbdns findet und nachweisen kann. Dieser Preis wurde bisher erst einmal für ein sehr spezielles Problem ausgezahlt, was Befürworter als Indiz für die Sicherheit werten. Kritiker hingegen verweisen auf die ebenfalls von Bernstein geschriebene Software qmail, bei der das Vorhandensein eventueller Bugs unter anderem von Bernstein harsch diskutiert wird.

## Details

Das Konzept von djbdns steht stark im Kontrast zu dem von BIND. Während BIND sämtliche Funktionalität vom DNS-Server bis zum Zonentransferdienst in einen Daemon packt, so ist dieser Funktionsumfang bei djbdns in mehrere Komponenten unterteilt (nicht alle Komponenten werden hier behandelt):

### dnscache

Die Komponente dnscache ist ein DNS-Resolver und DNS-Cache. Er beantwortet Anfragen über FQDN (fully qualified domain names), indem er den entsprechenden Domainnamen von der root-Zone (.) aus Stück für Stück auflöst. Die Ergebnisse werden danach vorgehalten, bis die eingestellte Cache-Size überschritten worden ist oder die TTL (time to live) des jeweiligen Domainnames abgelaufen ist.

### tinydns

Die Komponente tinydns ist ein DNS-Server, der nur Anfragen über Domainnamen beantwortet, die in seiner eigenen Datenbank vorhanden sind, andere Anfragen werden ohne weitere Reaktion verworfen. Die Konfiguration von tinydns unterscheidet sich sehr stark von der von BIND. Während bei BIND eine Zone-Datei für jedes IP-Subnetz einzeln eingerichtet wird, ist bei tinydns diese Aufteilung nicht vorhanden. Eine einzige zentrale Konfigurationsdatei wird verwendet.

### rbldns

Spammails wurden/werden immer mehr zum Problem, weswegen Blacklistserver zur Verfügung gestellt wurden, die Open Relays und sonstige Spammer über deren IP-Adresse entlarven. Daniel Bernstein hat mit rbldns einen Daemon geschrieben und veröffentlicht, der solche Anfragen entgegennehmen kann und sie an die entsprechenden Blacklistserver weiterleitet und das Ergebnis zwischenspeichert.

### axfrdns

Dieser Daemon ist für Antworten per TCP zuständig, die zum Beispiel nötig sind, wenn Antwortpakete für UDP zu lang (länger als 512 Byte) sind. Er bedient sich aus der gleichen Datenbank wie tinydns und kann als Ergänzung dessen angesehen werden. Weiterhin wird der Betrieb eines Daemons, der auf TCP lauscht, vom RFC 1035 gefordert: “The Internet supports name server access using TCP on server port 53 (decimal) as well as datagram access using UDP on UDP port 53 (decimal).” Bernsteins Position dazu ist, dass man etwas falsch gemacht habe, wenn Anfragen per TCP beantwortet werden müssen. Zusätzlich unterstützt axfrdns Zonentransfers per AXFR, dies ist jedoch standardmäßig deaktiviert und sollte für jede Zone und Slave-IP einzeln freigeschaltet werden.

## Lizenz

Seit dem 28. Dezember 2007 ist djbdns als Public Domain freigegeben.
Davor wurde der Quellcode zwar öffentlich zur Verfügung gestellt, aber Bernstein erlaubte weder die Weitergabe veränderten Quellcodes, noch die Weitergabe der aus dem Quellcode kompilierten ausführbaren Dateien. Anpassungen konnten daher nur als Patch weitergegeben werden.