BIND (Berkeley Internet Name Domain) ist ein Open Source Software-Paket, mit dem auf Rechnern mit Standard-Betriebssystemen (z.B. UNIX, NetBSD, FreeBSD, OpenBSD, Linux, Mac OS X, Windows NT, z/OS) ein Domain Name System Server implementiert werden kann. BIND kann kostenlos bezogen werden, der Source-Code ist veröffentlicht. Aufgrund seiner weiten Verbreitung und der zeitnahen Umsetzung der aktuellen DNS-RFCs gilt BIND seit Jahren als DNS-Referenz-Software.
Bevor es DNS gab, wurde die Auflösung von Namen in IP-Adressen über Listen (/etc/hosts.txt, vgl. /etc/hosts auf heutigen Unix-Systemen) vorgenommen, die auf jedem Rechner im Internet vorhanden sein mussten. Änderungen wurden zunächst manuell auf einem Masterserver durchgeführt und dann per Datei-Download an die einzelnen Rechner verteilt. Mit steigender Anzahl von IP-Teilnehmern wurde dieses Verfahren zunehmend unhandlicher.
1983 wurde von Paul Mockapetris das Domain Name System (DNS) spezifiziert. Im gleichen Jahr wurde die erste DNS-Software - JEEVES - auf einem DEC-Rechner implementiert. Wenig später gingen die ersten drei Internet Root-Server in Betrieb.
Anfang der 80er Jahre wurden an der Universität Berkeley an der Weiterentwicklung von UNIX gearbeitet. Einige Studenten begannen, für UNIX eine DNS-Software zu schreiben, die sie BIND (Berkeley Internet Name Domain) tauften. BIND wurde ständig weiterentwickelt und die Version 4 wurde zum weltweiten Standard. Nachdem die Berkeley Universität die Weiterentwicklung der Software eingestellt hatte, wurde die Verantwortung für kurze Zeit von der Firma DEC und anschließend von Vixie Enterprises übernommen. Paul Vixie war zu dieser Zeit treibende Kraft hinter dem Projekt.
Ab der Version 4.9.3 ging BIND in die Verantwortung des Hersteller-unabhängigen ISC (Internet Software Consortium – ab 2004: Internet Systems Consortium) über. Die Version 8 wurde 1997 fertiggestellt. 1999 beauftragte ISC die Firma Nominum Inc., die Version 9 zu entwickeln. BIND 9 ist heute (Anfang 2004) Standard. Die Version 8 ist noch weitverbreitet, Version 4 gilt als veraltet.
Bei BIND handelt es sich letztlich um ein normales Computerprogramm: Es wird gestartet, es tut etwas und es wird beendet (oder beendet sich selbst). Das Verhalten des Programms wird von manuell zu erstellenden Konfigurations-Dateien bestimmt, die bei Programmstart eingelesen werden. Es existiert eine globale Datei – meist mit dem Namen named.conf – und pro Zone eine Zonendatei, deren Name gewöhnlich aus dem Zonennamen und der Extension .db gebildet wird (es sind auch beliebige andere Namen zulässig).
Die Master-Zonendateien enthalten mindestens einen SOA Resource Record, ein oder mehrere NS Resource Records und eine beliebige Anzahl weiterer RRs wie zum Beispiel A Resource Records oder PTR Resource Records. Die Master-Zonendateien definieren damit den Inhalt einer Zone. Die Slave-Zonendateien müssen nicht in jedem Fall manuell erzeugt werden. Bei Anwendung des Notify-Verfahrens (siehe Zonentransfer) werden sie automatisch erzeugt.
named.conf
Die Informationen sind in verschiedenen Bereichen untergebracht. Die wichtigsten sind:
Im Globalen Bereich werden Zugriffssberechtigungen, Krypto-Keys und Optionen definiert (siehe BIND-Options). In der Serverliste sind Informationen über Partner-Server enthalten (z.B. ob ein Server inkrementellen Zonentransfer unterstützt). In der Zonen-Liste ist für jede Zone ein Eintrag enthalten, der den Namen der Zone, den Namen des Zonenfiles, den Zonen-Typ (Master oder Slave), Zugriffsberechtigungen sowie Options enthält.
Beispiel:
options { allow-transfer { localhost ; 172.27.157.16 ; }; host-statistics YES ; notify YES ; };
server 172.27.157.16 { bogus no ; support-ixfr yes ; };
zone "example.com" { type master ; file "example.com.db" ; notify YES ; };
Nach dem Einlesen der Konfigurationsdateien nimmt BIND alle Pakete entgegen, die am UDP-Port 53 und TCP-Port 53 der konfigurierten Interfaces oder IPA(n) eintreffen. Bei diesen Paketen kann es sich um DNS-Abfragen, Dynamische Updates oder Zonentransfers handeln. Liegt eine DNS-Abfrage vor, so versucht BIND sie an Hand der Einträge in den Zonendateien aufzulösen. Bei unbekannten Zonen wird zunächst der Cache überprüft und dann eine rekursive Auflösung versucht, wenn diese aktiviert ist. Bei DNS-Updates wird die betreffende Zonendatei aktualisiert, sofern der Auslösende dazu berechtigt und verifiziert ist.
Bei UNIX- oder Linux-Systemen ist BIND oft im Lieferumfang enthalten. Neue Versionen können aus dem Internet entweder als Binärpaket (für Windows) oder als Sourcecode heruntergeladen werden. Mittlere UNIX-Kenntnisse sind ausreichend zur Installation und Betrieb eines BIND-Servers. Bei Windows-NT/2000 wird eine komprimierte Binärdatei heruntergeladen. Die Installation ist einfach.
Bei Änderungen in Zonenfiles darf nicht vergessen werden, die Seriennummer zu inkrementieren und diese Änderung BIND bekannt zu machen, sei es durch einen kompletten Neustart des Servers, ein SIGHUP (UNIX) oder über die Management-Tools ndc (BIND 8) bzw. rndc (BIND 9). Es stehen eine Reihe von Logging- und Statistik-Funktionen zur Verfügung, mit denen die Arbeit der Software überprüft werden kann.