====== BIND9-DNS-Server installieren und verwalten ====== ===== Installation unter Ubuntu Linux ===== BIND9 kann unter Ubuntu Linux mit ''apt -y install bind9'' aus den Paketquellen installiert werden. Es wird automatisch ein Systemdienst dafür angelegt und gestartet. Die Konfiguration befindet sich im Verzeichnis ''/etc/bind'' und wird weiter unten beschrieben. ===== Konfiguration ===== Die Abschnitte zur Konfiguration werden in 2 Kategorien unterschieden: * Konfiguration des Serverdienstes, z. B. verwendete IP-Adressen (v4, v6), Regeln zum Erlauben und Verbieten von Abfragen, Forwarder-DNS-Server, etc. * Konfiguration der Zonen, für die dieser Server verantwortlich ist ==== Überblick ==== Im Konfigurationsverzeichnis ''/etc/bind'' befinden sich bereits nach der Installation eine Reihe von Dateien. * Konfigurationsdateien ''.conf'' * ''named.conf'': Hauptdatei für die Konfiguration; verweist über include-Anweisungen nur auf andere Konfigurationsteile * ''named.conf.options'': beinhaltet Einstellungen für die Konfiguration des Serverdienstes * ''named.conf.local'': beinhaltet Einstellungen zu den lokalen DNS-Zonen * Alle weiteren Konfigurationsdateien sind erst einmal nicht von Interesse. * Zonendateien ''db.'' * ''db.empty'': kann als Vorlage für eigene Zonendateien kopiert und angepasst werden. * Alle weiteren Zonendateien sollten so belassen werden, wie sie sind. Sie gehören zur Grundausstattung des DNS-Servers. * Eigene Zonendateien können nach Bedarf angelegt werden. Sie sollten der besseren Übersichtlichkeit halber mit ''db.'' beginnen oder gänzlich in ein eigenes Unterverzeichnis verlegt werden. * Alle weiteren Zonendateien sind erst einmal nicht von Interesse. ==== Konfiguration des Serverdienstes ==== [[https://www.zytrax.com/books/dns/ch7/statements.html|Übersicht über alle Optionen]] bei Zytrax.com Die Konfiguration des Serverdienstes selbst wird in der Datei ''named.conf.options'' vorgenommen. Da die Menge möglicher Konfigurationsoptionen sehr umfangreich ist, folgt hier eine Auswahl an Optionen, deren Konfiguration auch bei einer einfachen Installation sinnvoll sein können. ---- === Forwarder === Alle Anfragen, die der DNS-Server nicht selbst aus seinen eigenen Zonendateien beantworten kann, reicht er an die angegebenen Forwarder weiter. Hier können z. B. öffentlich verfügbare DNS-Server wie 9.9.9.9, 1.1.1.1 oder 8.8.8.8 eingetragen werden, aber auch der nächste verfügbare DNS-Server im lokalen Netz, 10.0.0.53. [[https://www.zytrax.com/books/dns/ch7/queries.html#forwarders|Referenz zu forwarders]] bei Zytrax.com ---- === Interfaces ==== Ein DNS-Server kann mehrere Netzwerkkarten und pro Netzwerkkarte mehrere IP-Adressen (auch v4, v6) besitzen. Hiermit kann festgelegt werden, auf welchen der vorhandenen Interfaces der DNS-Dienst Anfragen annehmen soll. [[https://www.zytrax.com/books/dns/ch7/hkpng.html#listen-on|Referenz zu listen-on und listen-on-v6]] bei Zytrax.com Ein DNS-Server verwendet üblicherweise den Port 53, um seine Dienste anzubieten. Dennoch ist es möglich von diesem Standard abzuweichen. [[https://www.zytrax.com/books/dns/ch7/hkpng.html#port|Referenz zu port]] bei Zytrax.com ---- === Rekursives Abfrageverhalten === Je nachdem, ob es sich bei dem DNS-Server um einen Server handeln soll, der nur Antworten zu seinen eigenen Zonen liefert oder auch für Clients rekursive Abfragen durchführt, kann dies in der Konfiguration festgelegt werden. [[https://www.zytrax.com/books/dns/ch7/queries.html#recursion|Referenz zu recursion]] bei Zytrax.com ---- === Clients und Anfragen === Nicht jeder DNS-Server beantwortet Anfragen für alle Clients. Es kann eine Auswahl vorgenommen werden, wenn man den Kreis der zulässigen Clients einschränken möchte. Dabei kann man unterscheiden, wem man generell Anfragen erlauben möchte (''allow-query'') und wem man auch Anfragen für rekursive Auflösung erlauben möchte (''allow-recursion''). [[https://www.zytrax.com/books/dns/ch7/queries.html#allow-query|Referenz zu allow-query]] bei Zytrax.com [[https://www.zytrax.com/books/dns/ch7/queries.html#allow-recursion|Referenz zu allow-recursion]] bei Zytrax.com ==== Konfiguration der DNS-Zonen ==== Die Konfiguration der eigenen DNS-Zonen erfolgt in 2 Schritten. * Die Zuständigkeit für die jeweilige Zone muss in der Konfigurationsdatei ''named.conf.local'' festgelegt werden. * Die eigentliche Zonendatei ''db.*'' muss angelegt und mit den entsprechenden Resource Records gefüllt werden. ---- === Zuständigkeit für die Zone konfigurieren === Eine Übersicht über alle innerhalb der Zonen-Klausel erlaubten Konfigurationsoptionen findest du [[https://www.zytrax.com/books/dns/ch7/zone.html|hier]]. Hier siehst du das Schema der Zonen-Klausel (links) zusammen mit einem Beispiel (rechts): zone "zone_name" [class] { zone "example.com" IN { // Zonen-Statements // Zonen-Statements }; }; Die Angabe der Klasse ''IN'' ist optional und kann weggelassen werden. Zu den Mindestangaben in einer Zonen-Klausel gehören für einen Zonen-Master die Typangabe und der Pfad zur Zonendatei. ([[https://www.zytrax.com/books/dns/ch7/zone.html#type|type]] und [[https://www.zytrax.com/books/dns/ch7/zone.html#file|file]]) zone "example.com" { type master; file "/etc/bind/db.example.com"; }; ---- === Die Zonendatei === Die Zonendatei beinhaltet die eigentlichen Informationen zur Zone. In ihr müssen alle Resource Records für die Zone hinterlegt werden. Die [[https://www.zytrax.com/books/dns/ch8/|Startseite für die Dokumentation]] dazu bei Zytrax beinhaltet auch eine Beispieldatei. Besonders wichtig für eine funktionierende Zonenkonfiguration ist der Korrekte Umgang mit der **Seriennummer**. Diese muss bei jeder Änderung hochgezählt werden, da der Serverdienst die Konfigurationsdatei sonst nicht neu einliest. Für die Seriennummer hat sich eine an das Datum angelehnte Schreibweise etabliert, welche dem Muster ''JJJJMMTTNN'' folgt. Dabei stehen J, M und T für Jahr, Monat und Tag und die beiden N für eine zweistellige täglich fortlaufende Nummer. Nach jeder Änderung an einer Zonendatei muss zuerst der **Serverdienst neu gestartet** werden, bevor diese wirksam wird. Dies ist unter Ubuntu Linux mit dem Befehl ''systemctl restart bind9'' möglich.