BIND/Installation: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „'''topic''' kurze Beschreibung == Beschreibung == == Installation == == Anwendungen == === Fehlerbehebung === == Syntax == === Optionen === === Parameter === === Umgebungsvariablen === === Exit-Status === == Konfiguration == === Dateien === == Sicherheit == == Siehe auch == === Dokumentation === ==== RFC ==== ==== Man-Pages ==== ==== Info-Pages ==== === Links === ==== Einzelnachweise ==== <references /> ==== Projekt ==== ==== Weblinks ==== == Testfragen…“ |
|||
| (30 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
''' | '''BIND/Installation''' - Installation eines autoritativen DNS-Servers mit BIND 9 | ||
== Beschreibung == | == Beschreibung == | ||
Diese Anleitung beschreibt die Installation und Grundkonfiguration eines primären DNS-Servers mit '''BIND 9''' unter Debian/Ubuntu. Als Beispielumgebung dient der Schulungsraum 102 mit der internen Domain ''raum102.itw''. Der Nameserver übernimmt die Namensauflösung für Router, Server und Clients im lokalen Netz und kann optional durch einen sekundären Nameserver ergänzt werden. | |||
== | |||
== | == Planung == | ||
Vor der eigentlichen Installation werden Domänenname, Servername und IP-Adresse festgelegt und die Rolle des Servers definiert. | |||
=== | |||
* Domain: '''raum102.itw''' | |||
== | * Primärer DNS-Server: '''ns1.raum102.itw''' | ||
* IP-Adresse: '''10.0.0.3''' | |||
== | * Alias: '''nameserver1''' | ||
* DNS-Dienst: '''BIND 9''' | |||
Der DNS-Server wird als autoritativer Nameserver für die Zone ''raum102.itw'' betrieben und stellt zusätzlich rekursive Auflösung für die internen Clients bereit. | |||
== Voraussetzungen == | |||
=== Statische IP-Adresse konfigurieren === | |||
Der DNS-Server benötigt eine statische IPv4-Adresse. | |||
1. Zum '''root'''-Benutzer wechseln. | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
su - | |||
</syntaxhighlight> | |||
2. Netzwerkschnittstelle ermitteln. | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ip a | |||
</syntaxhighlight> | |||
3. Datei ''/etc/network/interfaces'' bearbeiten. | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/network/interfaces | |||
</syntaxhighlight> | |||
Beispielkonfiguration für die Schnittstelle ''enp2s0'': | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
# In dieser Datei werden die Schnittstellen bekannt gemacht und | |||
# konfiguriert. (weitere Informationen enthält die Manpage) | |||
# Sollte man die Schnittstellen in jeweils eigenen Dateien angelegt | |||
# haben, werden diese hiermit eingebunden | |||
source /etc/network/interfaces.d/* | |||
# LOOPBACK INTERFACE (localhost) --> nicht verändern | |||
auto lo | |||
iface lo inet loopback | |||
# DNS INTERFACE | |||
# Bereitstellung beim Hochfahren | |||
auto enp2s0 | |||
# Konfiguration der statischen Adressinformationen | |||
iface enp2s0 inet static | |||
address 10.0.0.3/8 | |||
gateway 10.0.0.1 | |||
# Bekanntmachung der Routen bei jedem Start (somit persistent) | |||
post-up ip route add 10.10.0.0/16 via 10.0.0.1 | |||
post-up ip route add 10.20.0.0/16 via 10.0.0.1 | |||
post-up ip route add 10.30.0.0/16 via 10.0.0.1 | |||
</syntaxhighlight> | |||
Anfangs wird ein externer Nameserver (z. B. 8.8.8.8) verwendet, damit Paketinstallationen funktionieren: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/resolv.conf | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini" highlight="1" copy line> | |||
# Der zu nutzende Nameserver | |||
nameserver 8.8.8.8 | |||
</syntaxhighlight> | |||
* Das Paket ''resolvconf'' wird nicht benötigt, solange die Nameserver direkt in ''/etc/resolv.conf'' eingetragen werden. | |||
* Die gewählte IP-Adresse muss im vom Router gerouteten Adressbereich liegen. | |||
Anschließend wird der Netzwerkdienst neu gestartet und die Konfiguration geprüft: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
systemctl restart networking.service | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ip a | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ip r | |||
</syntaxhighlight> | |||
=== Betriebssystem aktualisieren === | |||
Vor der Installation von BIND wird das System aktualisiert: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
apt update && apt upgrade | |||
</syntaxhighlight> | |||
: | == Installation von bind9 == | ||
Die Installation erfolgt über die Paketverwaltung: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
apt install -y bind9 bind9utils bind9-doc dnsutils | |||
</syntaxhighlight> | |||
Die Konfigurationsdateien von BIND befinden sich anschließend unter ''/etc/bind''. Dort werden auch die Zonendateien abgelegt. | |||
== Zonendateien anlegen == | |||
Damit der DNS-Server ordnungsgemäß arbeiten kann, werden eine Forward- und eine Reverse-Zone für ''raum102.itw'' angelegt. | |||
: | === Resource Records kurz erklärt === | ||
In den Zonendateien werden unterschiedliche Resource Records (RR) verwendet: | |||
* '''SOA''' (Start of Authority) – enthält u. a. Seriennummer und Gültigkeitsdauern der Zone. | |||
* '''Serial''' – Seriennummer der Zone, wird bei jeder Änderung inkrementiert (oft im Format JJJJMMTTVV, z. B. ''2019092301''). | |||
* '''Refresh''' – Intervall in Sekunden, in dem sekundäre Nameserver die SOA vom Master abfragen. | |||
* '''Retry''' – Intervall in Sekunden für erneute Abfragen, falls der Master nicht erreichbar ist (kleiner als ''Refresh''). | |||
* '''Expire''' – Zeit in Sekunden, nach deren Ablauf sekundäre Nameserver keine Antworten mehr für die Zone geben, wenn der Master nicht erreichbar ist (größer als ''Refresh + Retry''). | |||
* '''TTL''' – Zeit in Sekunden, wie lange die Einträge im Cache gültig bleiben dürfen. | |||
* '''NS''' – Delegierung auf zuständige Nameserver. | |||
* '''A''' – ordnet einem Namen eine IPv4-Adresse zu. | |||
* '''AAAA''' – ordnet einem Namen eine IPv6-Adresse zu (im Beispiel nicht verwendet). | |||
* '''CNAME''' – Alias, verweist von einem Namen auf einen anderen Namen. | |||
* '''MX''' – Mail-Exchanger-Eintrag (im Beispiel nicht verwendet). | |||
* '''PTR''' – ordnet einer IP-Adresse einen Namen zu (Reverse Lookup). | |||
* '''TXT''' – freier Text zu einem Namen (z. B. für Anti-Spam-Mechanismen; im Beispiel nicht verwendet). | |||
=== Forward lookup Zone anlegen === | |||
Die Forward-Zone für ''raum102.itw'' wird in der Datei ''/etc/bind/fwd.raum102.itw'' angelegt: | |||
== | <syntaxhighlight lang="bash" highlight="1" copy line> | ||
vi /etc/bind/fwd.raum102.itw | |||
</syntaxhighlight> | |||
= | <syntaxhighlight lang="ini" highlight="" line> | ||
; | |||
; BIND forward zone file for raum102.itw | |||
; | |||
$TTL 604800 | |||
@ IN SOA ns1.raum102.itw. root.raum102.itw. ( | |||
2025020801 ; Serial | |||
604800 ; Refresh | |||
86400 ; Retry | |||
2419200 ; Expire | |||
604800 ) ; Negative Cache TTL | |||
; Name Server | |||
IN NS ns1.raum102.itw. | |||
; A Records | |||
ns1 IN A 10.0.0.3 | |||
nfs IN A 10.0.0.140 | |||
bup IN A 10.0.0.141 | |||
r1 IN A 10.0.0.1 | |||
r2 IN A 10.0.0.2 | |||
; CNAME Records | |||
nameserver1 IN CNAME ns1.raum102.itw. | |||
fileserver IN CNAME nfs.raum102.itw. | |||
backupserver IN CNAME bup.raum102.itw. | |||
router01 IN CNAME r1.raum102.itw. | |||
router02 IN CNAME r2.raum102.itw. | |||
</syntaxhighlight> | |||
=== | === Reverse lookup Zone anlegen === | ||
Die Reverse-Zone für das Netz 10.0.0.0/8 wird in der Datei ''/etc/bind/rev.raum102.itw'' angelegt: | |||
== | <syntaxhighlight lang="bash" highlight="1" copy line> | ||
vi /etc/bind/rev.raum102.itw | |||
</syntaxhighlight> | |||
== | <syntaxhighlight lang="ini" highlight="" line> | ||
; | |||
; BIND reverse zone file for raum102.itw | |||
; | |||
$TTL 604800 | |||
@ IN SOA ns1.raum102.itw. root.raum102.itw. ( | |||
2019092301 ; Serial | 2019092301 ; Serial | ||
604800 ; Refresh | 604800 ; Refresh | ||
| Zeile 157: | Zeile 188: | ||
604800 ) ; Negative Cache TTL | 604800 ) ; Negative Cache TTL | ||
;Name Server Information | |||
IN NS ns1.raum102.itw. | |||
;Reverse lookup for Name Server | |||
3 IN PTR ns1.raum102.itw. | |||
;PTR Record IP address to HostName | |||
140 IN PTR nfs.raum102.itw. | |||
141 IN PTR bup.raum102.itw. | |||
1 IN PTR r1.raum102.itw. | |||
2 IN PTR r2.raum102.itw. | |||
</syntaxhighlight> | |||
=== Zonendateien einbinden === | |||
Die neuen Zonendateien werden in ''/etc/bind/named.conf.local'' referenziert: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/bind/named.conf.local | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
zone "raum102.itw" IN { // domain name (forward zone) | |||
type master; // primary DNS | |||
file "/etc/bind/fwd.raum102.itw"; // forward zone file | |||
allow-update { none; }; // none, because it's primary DNS | |||
}; | |||
zone "0.0.10.in-addr.arpa" IN { // reverse zone | |||
type master; // primary DNS | |||
file "/etc/bind/rev.raum102.itw"; // reverse zone file | |||
allow-update { none; }; // none, because it's primary DNS | |||
}; | |||
</syntaxhighlight> | |||
== Konfiguration eines sekundären DNS-Servers == | |||
Zur Erhöhung der Ausfallsicherheit kann ein sekundärer Nameserver (Slave) eingerichtet werden. Öffentliche Zonen sollten mindestens zwei autoritative Nameserver besitzen. | |||
=== Änderungen auf dem primären Server === | |||
Auf dem primären Server wird in ''/etc/bind/named.conf.options'' festgelegt, welche Hosts Zonentransfers erhalten dürfen und ob diese aktiv benachrichtigt werden: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/bind/named.conf.options | |||
</syntaxhighlight> | |||
Innerhalb des ''options''-Blocks: | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
allow-transfer { 192.168.0.200; }; | |||
notify yes; | |||
</syntaxhighlight> | |||
* ''allow-transfer'' definiert die Liste der IP-Adressen, an die Zonentransfers erlaubt sind (mehrere IP-Adressen sind möglich). | |||
* ''notify yes'' bewirkt, dass der Master seine Slaves aktiv informiert, sobald aktualisierte Zonendateien vorliegen. | |||
Wichtig: Die Unterscheidung zwischen alten und neuen Zonendaten erfolgt ausschließlich über die ''Serial'' im SOA-Record. Wird die Seriennummer bei Änderungen nicht erhöht, findet kein Zonentransfer statt und die Slaves behalten veraltete Daten. | |||
Nach Änderungen an der Konfiguration wird der Dienst neu gestartet: | |||
== | <syntaxhighlight lang="bash" highlight="1" copy line> | ||
systemctl restart bind9 | |||
</syntaxhighlight> | |||
==== | === Einrichtung des sekundären Servers === | ||
Auf dem sekundären Server wird zunächst festgelegt, von welchem Host Benachrichtigungen akzeptiert werden: | |||
== | <syntaxhighlight lang="bash" highlight="1" copy line> | ||
vi /etc/bind/named.conf.options | |||
</syntaxhighlight> | |||
== | <syntaxhighlight lang="ini" highlight="" copy line> | ||
allow-notify { 192.168.0.10; }; | |||
</syntaxhighlight> | |||
Anschließend werden in ''/etc/bind/named.conf.local'' die Zonen eingetragen, für die der Server als Slave agieren soll, sowie die Master-Adressen definiert: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/bind/named.conf.local | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
zone "domainname" { | |||
type slave; | |||
masters { 192.168.0.10; }; | |||
file "back/domainname.bak"; | |||
}; | |||
; | zone "0.168.192.in-addr.arpa" { | ||
type slave; | |||
masters { 192.168.0.10; }; | |||
file "back/0.168.192.bak"; | |||
}; | |||
</syntaxhighlight> | |||
Die mit ''file'' angegebenen Dateien müssen nicht existieren; BIND legt sie beim ersten Zonentransfer automatisch an. Im Beispiel werden sie im Verzeichnis ''/var/cache/bind/back'' gespeichert, das vorab erzeugt und mit passenden Rechten versehen wird: | |||
== | <syntaxhighlight lang="bash" highlight="" copy line> | ||
mkdir /var/cache/bind/back | |||
chown bind /var/cache/bind/back | |||
</syntaxhighlight> | |||
Der sekundäre Nameserver besitzt keine eigenen Zonendateien; alle Zonendaten stammen vom Master. Nach der Konfiguration wird der Dienst neu gestartet: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
systemctl restart bind9 | |||
</syntaxhighlight> | |||
== Syntax der named.conf.* und der Zonendateien überprüfen == | |||
Mit ''named-checkconf'' wird die Syntax der globalen Konfiguration (''named.conf'' und eingebundene Dateien) geprüft: | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
named-checkconf | |||
</syntaxhighlight> | |||
Die Zonendateien werden mit ''named-checkzone'' validiert: | |||
== | <syntaxhighlight lang="bash" highlight="" copy line> | ||
named-checkzone raum102.itw /etc/bind/fwd.raum102.itw | |||
named-checkzone 0.0.10.in-addr.arpa /etc/bind/rev.raum102.itw | |||
</syntaxhighlight> | |||
Beispielausgabe: | |||
= | <syntaxhighlight lang="ini" highlight="" copy line> | ||
zone raum102.itw/IN: loaded serial 2019092301 | |||
OK | |||
zone 0.0.10.in-addr.arpa/IN: loaded serial 2019092301 | |||
OK | |||
</syntaxhighlight> | |||
== bind9 Installation abschließen == | |||
Nach erfolgreicher Syntaxprüfung wird der Dienst aktiviert und der lokale Nameserver als Resolver eingetragen. | |||
:1. Dienst neu starten | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
systemctl restart bind9 | |||
</syntaxhighlight> | |||
== | :2. Dienst beim Systemstart aktivieren | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
systemctl enable bind9 | |||
</syntaxhighlight> | |||
== | :3. Status prüfen | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
systemctl status bind9 | |||
</syntaxhighlight> | |||
Beispielausgabe: | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
● bind9.service - BIND Domain Name Server | |||
Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled) | |||
Active: active (running) since Fri 2019-09-20 13:28:34 CEST; 1s ago | |||
Docs: man:named(8) | |||
Process: 1886 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS) | |||
Main PID: 1887 (named) | |||
Tasks: 5 (limit: 4478) | |||
Memory: 12.2M | |||
CGroup: /system.slice/bind9.service | |||
└─1887 /usr/sbin/named -u bind | |||
</syntaxhighlight> | |||
== | :4. Resolver auf den neuen DNS-Server umstellen | ||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
vi /etc/resolv.conf | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
# Der zu nutzende Nameserver | |||
nameserver 10.0.0.3 | |||
</syntaxhighlight> | |||
:5. Netzwerkdienst neu starten | |||
<syntaxhighlight lang="bash" highlight="1" copy line>service networking restart</syntaxhighlight> | |||
:6. Konfiguration prüfen | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ip a | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" highlight="1" copy line> | |||
ip r | |||
</syntaxhighlight> | |||
== | == Namensauflösung testen == | ||
Zur Funktionsprüfung kann die Namensauflösung mit '''dig''' getestet und bei Bedarf mit Wireshark mitgeschnitten werden. | |||
[[Datei:WiresharkDNS1.png|600px|Ablaufverfolgung der Namensauflösung]] | |||
Beispielabfrage: | |||
<syntaxhighlight lang="bash" highlight="1" copy line>dig google.de</syntaxhighlight> | |||
Beispielausgabe (Auszug): | |||
: | |||
<syntaxhighlight lang="ini" highlight="" copy line> | |||
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> google.de | |||
;; global options: +cmd | |||
;; Got answer: | |||
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3983 | |||
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9 | |||
: | ;; OPT PSEUDOSECTION: | ||
; EDNS: version: 0, flags:; udp: 4096 | |||
; COOKIE: bea27b6c0abfa5c4d5c979555d8b180addb5f0df1c69bfd0 (good) | |||
;; QUESTION SECTION: | |||
;google.de. IN A | |||
;; ANSWER SECTION: | |||
google.de. 300 IN A 172.217.17.35 | |||
: | ;; AUTHORITY SECTION: | ||
google.de. 83363 IN NS ns1.google.com. | |||
google.de. 83363 IN NS ns2.google.com. | |||
google.de. 83363 IN NS ns3.google.com. | |||
google.de. 83363 IN NS ns4.google.com. | |||
: | ;; ADDITIONAL SECTION: | ||
ns1.google.com. 168448 IN A 216.239.32.10 | |||
ns2.google.com. 168448 IN A 216.239.34.10 | |||
ns3.google.com. 168448 IN A 216.239.36.10 | |||
ns4.google.com. 168448 IN A 216.239.38.10 | |||
ns1.google.com. 168448 IN AAAA 2001:4860:4802:32::a | |||
ns2.google.com. 168448 IN AAAA 2001:4860:4802:34::a | |||
ns3.google.com. 168448 IN AAAA 2001:4860:4802:36::a | |||
ns4.google.com. 168448 IN AAAA 2001:4860:4802:38::a | |||
;; Query time: 20 msec | |||
;; SERVER: 10.0.0.3#53(10.0.0.3) | |||
;; WHEN: Mi Sep 25 09:32:26 CEST 2019 | |||
;; MSG SIZE rcvd: 340 | |||
</syntaxhighlight> | |||
Wichtig ist insbesondere die Zeile mit dem verwendeten Server: | |||
* '''SERVER: 10.0.0.3#53(10.0.0.3)''' – die Anfrage wurde über den lokal eingerichteten BIND-Server beantwortet. | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
<div style="column-count:2"> | |||
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree> | |||
</div> | |||
---- | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
=== Dokumentation === | |||
<!-- | |||
; Man-Page | |||
# | |||
; Info-Pages | |||
--> | |||
=Links= | === Links === | ||
== | ==== Projekt ==== | ||
==== Weblinks ==== | |||
<!-- | |||
{{DEFAULTSORT:new}} | |||
{{DISPLAYTITLE:new}} | |||
--> | |||
[[Kategorie:BIND]] | |||
</noinclude> | |||
Aktuelle Version vom 10. Dezember 2025, 10:52 Uhr
BIND/Installation - Installation eines autoritativen DNS-Servers mit BIND 9
Beschreibung
Diese Anleitung beschreibt die Installation und Grundkonfiguration eines primären DNS-Servers mit BIND 9 unter Debian/Ubuntu. Als Beispielumgebung dient der Schulungsraum 102 mit der internen Domain raum102.itw. Der Nameserver übernimmt die Namensauflösung für Router, Server und Clients im lokalen Netz und kann optional durch einen sekundären Nameserver ergänzt werden.
Planung
Vor der eigentlichen Installation werden Domänenname, Servername und IP-Adresse festgelegt und die Rolle des Servers definiert.
- Domain: raum102.itw
- Primärer DNS-Server: ns1.raum102.itw
- IP-Adresse: 10.0.0.3
- Alias: nameserver1
- DNS-Dienst: BIND 9
Der DNS-Server wird als autoritativer Nameserver für die Zone raum102.itw betrieben und stellt zusätzlich rekursive Auflösung für die internen Clients bereit.
Voraussetzungen
Statische IP-Adresse konfigurieren
Der DNS-Server benötigt eine statische IPv4-Adresse.
1. Zum root-Benutzer wechseln.
su -
2. Netzwerkschnittstelle ermitteln.
ip a
3. Datei /etc/network/interfaces bearbeiten.
vi /etc/network/interfaces
Beispielkonfiguration für die Schnittstelle enp2s0:
# In dieser Datei werden die Schnittstellen bekannt gemacht und
# konfiguriert. (weitere Informationen enthält die Manpage)
# Sollte man die Schnittstellen in jeweils eigenen Dateien angelegt
# haben, werden diese hiermit eingebunden
source /etc/network/interfaces.d/*
# LOOPBACK INTERFACE (localhost) --> nicht verändern
auto lo
iface lo inet loopback
# DNS INTERFACE
# Bereitstellung beim Hochfahren
auto enp2s0
# Konfiguration der statischen Adressinformationen
iface enp2s0 inet static
address 10.0.0.3/8
gateway 10.0.0.1
# Bekanntmachung der Routen bei jedem Start (somit persistent)
post-up ip route add 10.10.0.0/16 via 10.0.0.1
post-up ip route add 10.20.0.0/16 via 10.0.0.1
post-up ip route add 10.30.0.0/16 via 10.0.0.1
Anfangs wird ein externer Nameserver (z. B. 8.8.8.8) verwendet, damit Paketinstallationen funktionieren:
vi /etc/resolv.conf
# Der zu nutzende Nameserver
nameserver 8.8.8.8
- Das Paket resolvconf wird nicht benötigt, solange die Nameserver direkt in /etc/resolv.conf eingetragen werden.
- Die gewählte IP-Adresse muss im vom Router gerouteten Adressbereich liegen.
Anschließend wird der Netzwerkdienst neu gestartet und die Konfiguration geprüft:
systemctl restart networking.service
ip a
ip r
Betriebssystem aktualisieren
Vor der Installation von BIND wird das System aktualisiert:
apt update && apt upgrade
Installation von bind9
Die Installation erfolgt über die Paketverwaltung:
apt install -y bind9 bind9utils bind9-doc dnsutils
Die Konfigurationsdateien von BIND befinden sich anschließend unter /etc/bind. Dort werden auch die Zonendateien abgelegt.
Zonendateien anlegen
Damit der DNS-Server ordnungsgemäß arbeiten kann, werden eine Forward- und eine Reverse-Zone für raum102.itw angelegt.
Resource Records kurz erklärt
In den Zonendateien werden unterschiedliche Resource Records (RR) verwendet:
- SOA (Start of Authority) – enthält u. a. Seriennummer und Gültigkeitsdauern der Zone.
- Serial – Seriennummer der Zone, wird bei jeder Änderung inkrementiert (oft im Format JJJJMMTTVV, z. B. 2019092301).
- Refresh – Intervall in Sekunden, in dem sekundäre Nameserver die SOA vom Master abfragen.
- Retry – Intervall in Sekunden für erneute Abfragen, falls der Master nicht erreichbar ist (kleiner als Refresh).
- Expire – Zeit in Sekunden, nach deren Ablauf sekundäre Nameserver keine Antworten mehr für die Zone geben, wenn der Master nicht erreichbar ist (größer als Refresh + Retry).
- TTL – Zeit in Sekunden, wie lange die Einträge im Cache gültig bleiben dürfen.
- NS – Delegierung auf zuständige Nameserver.
- A – ordnet einem Namen eine IPv4-Adresse zu.
- AAAA – ordnet einem Namen eine IPv6-Adresse zu (im Beispiel nicht verwendet).
- CNAME – Alias, verweist von einem Namen auf einen anderen Namen.
- MX – Mail-Exchanger-Eintrag (im Beispiel nicht verwendet).
- PTR – ordnet einer IP-Adresse einen Namen zu (Reverse Lookup).
- TXT – freier Text zu einem Namen (z. B. für Anti-Spam-Mechanismen; im Beispiel nicht verwendet).
Forward lookup Zone anlegen
Die Forward-Zone für raum102.itw wird in der Datei /etc/bind/fwd.raum102.itw angelegt:
vi /etc/bind/fwd.raum102.itw
;
; BIND forward zone file for raum102.itw
;
$TTL 604800
@ IN SOA ns1.raum102.itw. root.raum102.itw. (
2025020801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Name Server
IN NS ns1.raum102.itw.
; A Records
ns1 IN A 10.0.0.3
nfs IN A 10.0.0.140
bup IN A 10.0.0.141
r1 IN A 10.0.0.1
r2 IN A 10.0.0.2
; CNAME Records
nameserver1 IN CNAME ns1.raum102.itw.
fileserver IN CNAME nfs.raum102.itw.
backupserver IN CNAME bup.raum102.itw.
router01 IN CNAME r1.raum102.itw.
router02 IN CNAME r2.raum102.itw.
Reverse lookup Zone anlegen
Die Reverse-Zone für das Netz 10.0.0.0/8 wird in der Datei /etc/bind/rev.raum102.itw angelegt:
vi /etc/bind/rev.raum102.itw
;
; BIND reverse zone file for raum102.itw
;
$TTL 604800
@ IN SOA ns1.raum102.itw. root.raum102.itw. (
2019092301 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;Name Server Information
IN NS ns1.raum102.itw.
;Reverse lookup for Name Server
3 IN PTR ns1.raum102.itw.
;PTR Record IP address to HostName
140 IN PTR nfs.raum102.itw.
141 IN PTR bup.raum102.itw.
1 IN PTR r1.raum102.itw.
2 IN PTR r2.raum102.itw.
Zonendateien einbinden
Die neuen Zonendateien werden in /etc/bind/named.conf.local referenziert:
vi /etc/bind/named.conf.local
zone "raum102.itw" IN { // domain name (forward zone)
type master; // primary DNS
file "/etc/bind/fwd.raum102.itw"; // forward zone file
allow-update { none; }; // none, because it's primary DNS
};
zone "0.0.10.in-addr.arpa" IN { // reverse zone
type master; // primary DNS
file "/etc/bind/rev.raum102.itw"; // reverse zone file
allow-update { none; }; // none, because it's primary DNS
};
Konfiguration eines sekundären DNS-Servers
Zur Erhöhung der Ausfallsicherheit kann ein sekundärer Nameserver (Slave) eingerichtet werden. Öffentliche Zonen sollten mindestens zwei autoritative Nameserver besitzen.
Änderungen auf dem primären Server
Auf dem primären Server wird in /etc/bind/named.conf.options festgelegt, welche Hosts Zonentransfers erhalten dürfen und ob diese aktiv benachrichtigt werden:
vi /etc/bind/named.conf.options
Innerhalb des options-Blocks:
allow-transfer { 192.168.0.200; };
notify yes;
- allow-transfer definiert die Liste der IP-Adressen, an die Zonentransfers erlaubt sind (mehrere IP-Adressen sind möglich).
- notify yes bewirkt, dass der Master seine Slaves aktiv informiert, sobald aktualisierte Zonendateien vorliegen.
Wichtig: Die Unterscheidung zwischen alten und neuen Zonendaten erfolgt ausschließlich über die Serial im SOA-Record. Wird die Seriennummer bei Änderungen nicht erhöht, findet kein Zonentransfer statt und die Slaves behalten veraltete Daten.
Nach Änderungen an der Konfiguration wird der Dienst neu gestartet:
systemctl restart bind9
Einrichtung des sekundären Servers
Auf dem sekundären Server wird zunächst festgelegt, von welchem Host Benachrichtigungen akzeptiert werden:
vi /etc/bind/named.conf.options
allow-notify { 192.168.0.10; };
Anschließend werden in /etc/bind/named.conf.local die Zonen eingetragen, für die der Server als Slave agieren soll, sowie die Master-Adressen definiert:
vi /etc/bind/named.conf.local
zone "domainname" {
type slave;
masters { 192.168.0.10; };
file "back/domainname.bak";
};
zone "0.168.192.in-addr.arpa" {
type slave;
masters { 192.168.0.10; };
file "back/0.168.192.bak";
};
Die mit file angegebenen Dateien müssen nicht existieren; BIND legt sie beim ersten Zonentransfer automatisch an. Im Beispiel werden sie im Verzeichnis /var/cache/bind/back gespeichert, das vorab erzeugt und mit passenden Rechten versehen wird:
mkdir /var/cache/bind/back
chown bind /var/cache/bind/back
Der sekundäre Nameserver besitzt keine eigenen Zonendateien; alle Zonendaten stammen vom Master. Nach der Konfiguration wird der Dienst neu gestartet:
systemctl restart bind9
Syntax der named.conf.* und der Zonendateien überprüfen
Mit named-checkconf wird die Syntax der globalen Konfiguration (named.conf und eingebundene Dateien) geprüft:
named-checkconf
Die Zonendateien werden mit named-checkzone validiert:
named-checkzone raum102.itw /etc/bind/fwd.raum102.itw
named-checkzone 0.0.10.in-addr.arpa /etc/bind/rev.raum102.itw
Beispielausgabe:
zone raum102.itw/IN: loaded serial 2019092301
OK
zone 0.0.10.in-addr.arpa/IN: loaded serial 2019092301
OK
bind9 Installation abschließen
Nach erfolgreicher Syntaxprüfung wird der Dienst aktiviert und der lokale Nameserver als Resolver eingetragen.
- 1. Dienst neu starten
systemctl restart bind9
- 2. Dienst beim Systemstart aktivieren
systemctl enable bind9
- 3. Status prüfen
systemctl status bind9
Beispielausgabe:
● bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-09-20 13:28:34 CEST; 1s ago
Docs: man:named(8)
Process: 1886 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1887 (named)
Tasks: 5 (limit: 4478)
Memory: 12.2M
CGroup: /system.slice/bind9.service
└─1887 /usr/sbin/named -u bind
- 4. Resolver auf den neuen DNS-Server umstellen
vi /etc/resolv.conf
# Der zu nutzende Nameserver
nameserver 10.0.0.3
- 5. Netzwerkdienst neu starten
service networking restart
- 6. Konfiguration prüfen
ip a
ip r
Namensauflösung testen
Zur Funktionsprüfung kann die Namensauflösung mit dig getestet und bei Bedarf mit Wireshark mitgeschnitten werden.
Beispielabfrage:
dig google.de
Beispielausgabe (Auszug):
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> google.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3983
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: bea27b6c0abfa5c4d5c979555d8b180addb5f0df1c69bfd0 (good)
;; QUESTION SECTION:
;google.de. IN A
;; ANSWER SECTION:
google.de. 300 IN A 172.217.17.35
;; AUTHORITY SECTION:
google.de. 83363 IN NS ns1.google.com.
google.de. 83363 IN NS ns2.google.com.
google.de. 83363 IN NS ns3.google.com.
google.de. 83363 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 168448 IN A 216.239.32.10
ns2.google.com. 168448 IN A 216.239.34.10
ns3.google.com. 168448 IN A 216.239.36.10
ns4.google.com. 168448 IN A 216.239.38.10
ns1.google.com. 168448 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 168448 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 168448 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 168448 IN AAAA 2001:4860:4802:38::a
;; Query time: 20 msec
;; SERVER: 10.0.0.3#53(10.0.0.3)
;; WHEN: Mi Sep 25 09:32:26 CEST 2019
;; MSG SIZE rcvd: 340
Wichtig ist insbesondere die Zeile mit dem verwendeten Server:
- SERVER: 10.0.0.3#53(10.0.0.3) – die Anfrage wurde über den lokal eingerichteten BIND-Server beantwortet.
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks