Zum Inhalt springen

BIND/Installation: Unterschied zwischen den Versionen

Aus Foxwiki
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…“
 
K Textersetzung - „ )“ durch „)“
 
(33 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' kurze Beschreibung
'''BIND/Installation''' - Installation eines autoritativen DNS-Servers mit BIND 9
 
== Beschreibung ==
== Beschreibung ==
== Installation ==
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.
== Anwendungen ==
=== Fehlerbehebung ===
== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Konfiguration ==
=== Dateien ===
== Sicherheit ==


== Siehe auch ==
== Planung ==
=== Dokumentation ===
Vor der eigentlichen Installation werden Domänenname, Servername und IP-Adresse festgelegt und die Rolle des Servers definiert.
==== RFC ====
 
==== Man-Pages ====
* Domain: '''raum102.itw'''
==== Info-Pages ====
* Primärer DNS-Server: '''ns1.raum102.itw'''
=== Links ===
* IP-Adresse: '''10.0.0.3'''
==== Einzelnachweise ====
* Alias: '''nameserver1'''
<references />
* DNS-Dienst: '''BIND 9'''
==== Projekt ====
 
==== Weblinks ====
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.


== Testfragen ==
== Voraussetzungen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


[[Kategorie:Entwurf]]
=== Statische IP-Adresse konfigurieren ===
Der DNS-Server benötigt eine statische IPv4-Adresse.


= Planung =
1.&nbsp;Zum '''root'''-Benutzer wechseln.
* Zu Beginn machen wir uns kurz Gedanken, wie die Domäne, der Servername und die IP-Adresse lauten sollen.
* Weiter sollten wir uns überlegen, welchen Dienst wir hierfür einsetzen möchten.


Primary DNS-Server
<syntaxhighlight lang="bash" highlight="1" copy line>
Domain: raum102.itw
su -
Servername: ns1.raum102.itw
</syntaxhighlight>
IP-Address: 10.0.0.3
Alias: nameserver1


Als DNS-Dienst wird [[BIND9]] verwendet.
2.&nbsp;Netzwerkschnittstelle ermitteln.


=Vorbedingungen=
<syntaxhighlight lang="bash" highlight="1" copy line>
Bevor wir den eigentlichen DNS Dienst installieren, müssen wir noch einige Vorkehrungen treffen.
ip a
</syntaxhighlight>


==Statische IP setzen==
3.&nbsp;Datei ''/etc/network/interfaces'' bearbeiten.
# Zum root User wechseln
$ su -
# Schnittstellenbezeichnung herausfinden
# ip a
# interfaces Datei bearbeiten
# vi /etc/network/interfaces


<syntaxhighlight lang="bash" highlight="1" copy line>
vi /etc/network/interfaces
</syntaxhighlight>


Das resolvconf Paket muss installiert sein, wenn man die Namesserver in die /etc/network/interfaces eintragen will! Wir tragen  die Nameserver allerdings in die /etc/resolv.conf ein und brauchen das Paket somit nicht. Wir müssen allerdings sicherstellen, dass wir eine IP-Adresse nutzen, die im Adressbereich liegt den unser Router auch kennt. Als Nameserver nutzen wir zu Beginn am besten 8.8.8.8.
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)


<u>[https://wiki.ubuntuusers.de/interfaces/ /etc/network/interfaces]</u>
# Sollte man die Schnittstellen in jeweils eigenen Dateien angelegt
# In dieser Datei werden die Schnittstellen bekannt gemacht und
# haben, werden diese hiermit eingebunden
# konfiguriert. (weitere Informationen enthält die Manpage)
source /etc/network/interfaces.d/*
# 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


# LOOPBACK INTERFACE (localhost) --> nicht verändern
auto lo
iface lo inet loopback


:4. resolv.conf Datei bearbeiten
# DNS INTERFACE
# vi /etc/resolv.conf
# 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>


<u>[https://wiki.archlinux.de/title/Resolv.conf /etc/resolv.conf]</u>
Anfangs wird ein externer Nameserver (z. B. 8.8.8.8) verwendet, damit Paketinstallationen funktionieren:
# Der zu nutzende Nameserver
nameserver 8.8.8.8


<syntaxhighlight lang="bash" highlight="1" copy line>
vi /etc/resolv.conf
</syntaxhighlight>


:5. Jetzt den Dienst neu starten
<syntaxhighlight lang="ini" highlight="1" copy line>
# systemctl restart networking.service
# 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.


:6. Mit ~# ip a und ~# ip r überprüfen ob unsere Einträge greifen.
Anschließend wird der Netzwerkdienst neu gestartet und die Konfiguration geprüft:


==Packetliste und Packete updaten==
<syntaxhighlight lang="bash" highlight="1" copy line>
# apt update && apt upgrade <br>
systemctl restart networking.service
</syntaxhighlight>


= Beispiel =
<syntaxhighlight lang="bash" highlight="1" copy line>
Wir haben für den Schulungsraum 102 einen eigenen DNS-Server aufgesetzt um eine Namensauflösung aller Router, Server und Clients zu ermöglichen. <br>
ip a
Die Domain lautet hier raum102.itw. Wie wir dies realisiert haben erläutern wir im weiteren Verlauf.
</syntaxhighlight>


== Konventionen ==
<syntaxhighlight lang="bash" highlight="1" copy line>
Zu Beginn machen wir uns kurz Gedanken wie die Domäne, der Servername und die IP-Adresse lauten sollen. <br>
ip r
Weiter sollten wir uns überlegen, welchen Dienst wir hierfür einsetzen möchten.
</syntaxhighlight>


Primary DNS-Server
=== Betriebssystem aktualisieren ===
Domain: raum102.itw
Vor der Installation von BIND wird das System aktualisiert:
Servername: ns1.raum102.itw
IP-Address: 10.0.0.3
Alias: nameserver1


Als DNS-Dienst wollen wir [[# bind9 installieren|bind9]] verwenden.
<syntaxhighlight lang="bash" highlight="1" copy line>
apt update && apt upgrade
</syntaxhighlight>


==Vorraussetzungen==
== Installation von bind9 ==
Die Installation erfolgt über die Paketverwaltung:


====Betriebssystem aktualisieren====
<syntaxhighlight lang="bash" highlight="1" copy line>
# apt update && apt upgrade
apt install -y bind9 bind9utils bind9-doc dnsutils
</syntaxhighlight>


====Statische IP setzen====
Die Konfigurationsdateien von BIND befinden sich anschließend unter ''/etc/bind''. Dort werden auch die Zonendateien abgelegt.
# vi /etc/network/interfaces<br>
# vi /etc/resolv.conf


==bind9 installieren==
== Zonendateien anlegen ==
# apt install -y bind9 bind9utils bind9-doc dnsutils
Damit der DNS-Server ordnungsgemäß arbeiten kann, werden eine Forward- und eine Reverse-Zone für ''raum102.itw'' angelegt.


===Zonendateien anlegen===
=== Resource Records kurz erklärt ===
=====Resource Records kurz erklärt=====
In den Zonendateien werden unterschiedliche Resource Records (RR) verwendet:
'''SOA - enthält z.B Seriennummer, Gultigkeitsdauer ...'''
@      IN      SOA    ns1.raum102.itw. root.raum102.itw. (
                    2019092301        ; Serial
                        604800        ; Refresh
                          86400        ; Retry
                        2419200        ; Expire
                        604800 )       ; Negative Cache TTL


'''SOA''' bedeutet Start of Authority (dt. Beginn der Zuständigkeit) und ist wichtiger Bestandteil einer Zonendatei im DNS.
* '''SOA''' (Start of Authority) – enthält u. a. Seriennummer und Gültigkeitsdauern der Zone.
'''Seriel''' wird bei jeder Änderung inkrementiert (vorzugsweise JJJJMMTTVV; dient als Hinweis, wann die Zone zuletzt aktualisiert wurde.
* '''Serial''' – Seriennummer der Zone, wird bei jeder Änderung inkrementiert (oft im Format JJJJMMTTVV, beispielsweise ''2019092301'').
'''Refresh''' Sekundenabstand, in dem sekundäre Nameserver die Seriennummer vom primären Master abfragen sollen, um Änderungen der Zone festzustellen.
* '''Refresh''' – Intervall in Sekunden, in dem sekundäre Nameserver die SOA vom Master abfragen.
'''Retry''' Sekundenabstand, in dem, bei ausbleibender Antwort des Masters, sekundäre Nameserver nochmals seine Seriennummer abfragen sollen. Dieser Wert muss kleiner als jener zum Refresh sein.
* '''Retry''' – Intervall in Sekunden für erneute Abfragen, falls der Master nicht erreichbar ist (kleiner als ''Refresh'').
'''Expire''' Sekundenabstand, nach dem bei ausbleibender Antwort des Masters sekundäre Nameserver keine Antworten über die Zone mehr geben sollen. Dieser Wert muss größer als die Summe jener zum Refresh und Retry sein.
* '''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''' gibt in Sekunden an, wie lange dieser RR in einem Cache gültig sein darf.
* '''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).


'''NS - Delegierung der Nameserver untereinander'''
=== Forward lookup Zone anlegen ===
                IN      NS      ns1.raum102.itw.
Die Forward-Zone für ''raum102.itw'' wird in der Datei ''/etc/bind/fwd.raum102.itw'' angelegt:


'''A - weist einem Namen eine IPv4-Adresse zu'''
<syntaxhighlight lang="bash" highlight="1" copy line>
;IP address of Name Server
vi /etc/bind/fwd.raum102.itw
ns1            IN      A      10.0.0.3
</syntaxhighlight>
;A - Record HostName To Ip Address
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


'''AAAA - weist einem Namen eine IPv6-Adresse zu'''
<syntaxhighlight lang="ini" highlight="" line>
;wird hier nicht verwendet
;
; BIND forward zone file for raum102.itw
;


'''CNAME - verweist von einem Namen auf einen anderen Namen (Alias)'''
$TTL 604800
;CNAME record
@ IN SOA ns1.raum102.itw. root.raum102.itw. (
  nameserver1    IN     CNAME  ns1.raum102.itw.
    2025020801 ; Serial
fileserver      IN      CNAME  nfs.raum102.itw.
    604800  ; Refresh
backupserver    IN      CNAME   bup.raum102.itw.
    86400   ; Retry
  router01        IN      CNAME  r1.raum102.itw.
    2419200 ; Expire
  router02        IN      CNAME  r2.raum102.itw.
    604800) ; Negative Cache TTL


'''MX - weist einem Namen einen Mailserver zu (SMTP)'''
; Name Server
;wird hier nicht verwendet
  IN NS ns1.raum102.itw.


'''PTR - weist einer IP-Adresse einen Namen zu (Reverse Lookup)
; A Records
;Reverse lookup for Name Server
ns1  IN A 10.0.0.3
  3      IN      PTR    ns1.raum102.itw.
nfs  IN A 10.0.0.140
   
bup  IN A 10.0.0.141
;PTR Record IP address to HostName
r1  IN A 10.0.0.1
140    IN      PTR    nfs.raum102.itw.
r2  IN A 10.0.0.2
  141    IN      PTR    bup.raum102.itw.
  1      IN      PTR    r1.raum102.itw.
  2      IN      PTR    r2.raum102.itw.


  '''TXT - kann einem Namen einen frei definierbaren Text zuweisen (Abwehr von Spam)
; CNAME Records
;wird hier nicht verwendet
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>


====Forward lookup Zone anlegen====
=== Reverse lookup Zone anlegen ===
'''# vi /etc/bind/fwd.raum102.itw'''
Die Reverse-Zone für das Netz 10.0.0.0/8 wird in der Datei ''/etc/bind/rev.raum102.itw'' angelegt:
;
; BIND forward 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
;@      IN      NS      localhost.
;@      IN      A      127.0.0.1
;@      IN      AAAA    ::1
;Name Server Information
                IN      NS      ns1.raum102.itw.
;IP address of Name Server
ns1            IN      A      10.0.0.3
;A - Record HostName To Ip Address
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 record
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====
<syntaxhighlight lang="bash" highlight="1" copy line>
'''# vi /etc/bind/rev.raum102.itw'''
vi /etc/bind/rev.raum102.itw
</syntaxhighlight>
;
; 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===
<syntaxhighlight lang="ini" highlight="" line>
'''# vi /etc/bind/named.conf.local'''
;
; BIND reverse zone file for raum102.itw
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 its 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 its primary DNS
};


===Konfiguration eines sekundären DNS-Servers===
$TTL  604800
* Um Ausfallsicherheit zu gewährleisten, kann es sinnvoll sein, mehrere DNS-Server zu betreiben.
@    IN  SOA  ns1.raum102.itw. root.raum102.itw. (
* Tatsächlich ist es sogar vorgeschrieben, dass eine öffentlich zugängliche Domain von mindestens zwei Servern bedient werden muss.
          2019092301    ; Serial
* Oft sind es sogar fünf oder mehr. In einem privaten Netz kommt man dagegen in der Regel mit einem aus.
            604800    ; Refresh
* Damit man die verschiedenen Server aber nicht alle einzeln konfigurieren muss, und sich bei routinemäßigen Veränderungen der Zonen Fehler bzw. Abweichungen zwischen den Zonendaten einschleichen, gibt es Zonentransfers.
            86400    ; Retry
* Dafür werden die Daten dann immer nur auf einem primären Nameserver angepasst und dieser transferiert die aktuellen Zonendaten dann an einen oder mehrere sekundäre Server weiter, so dass die Daten immer konsistent bleiben.
            2419200    ; Expire
* Für einen Client macht es keinen Unterschied, ob er mit einem primären oder einem sekundären Server kommunizieret.
            604800)    ; Negative Cache TTL
'''Änderungen auf dem primären Server'''


* Als erstes muss man dem primären Server beibringen, an welche Rechner er die Zonendaten überhaupt übertragen darf.
;Name Server Information
* Das passiert in der Datei /etc/bind/named.conf.options, wo man irgendwo im durch geschweifte Klammern eingefassten options-Block Folgendes einträgt:
    IN  NS  ns1.raum102.itw.


allow-transfer { 192.168.0.200; };
;Reverse lookup for Name Server
notify yes;
3    IN  PTR  ns1.raum102.itw.


allow-transfer gibt dabei an, welchen Hosts ein Zonentransfer erlaubt werden soll. Die Angabe mehrerer IP-Adressen hintereinander ist möglich, es sollte jedoch unbedingt darauf geachtet werden, dass kein Semikolon fehlt. Die Direktive notify yes gibt an, dass der primäre Server seine Stellvertreter von selbst darauf aufmerksam macht, sobald aktualisierte Zonendateien verfügbar sind.
;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>


; Nach den Änderungen muss der Dienst neu gestartet werden
=== Zonendateien einbinden ===
Die neuen Zonendateien werden in ''/etc/bind/named.conf.local'' referenziert:


* Die Unterscheidung zwischen alten und neuen Daten erfolgt ausschließlich über die Seriennummer im SOA-Header der Zone.
<syntaxhighlight lang="bash" highlight="1" copy line>
* Wenn man beim Editieren vergisst, diese zu erhöhen, findet kein Zonentransfer statt und die Slaves arbeiten mit den veralteten Daten weiter.
vi /etc/bind/named.conf.local
</syntaxhighlight>


==Einrichtung des sekundären Servers==
<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
};


* Als erstes muss in der Datei named.conf.options eingetragen werden, von welchem Host die Benachrichtigungen kommen werden:
zone "0.0.10.in-addr.arpa" IN {        // reverse zone
allow-notify { 192.168.0.10; };
  type master;                // primary DNS
  file "/etc/bind/rev.raum102.itw";    // reverse zone file
  allow-update { none; };         // none, because it's primary DNS
};
</syntaxhighlight>


* Dann müssen in named.conf.local die Zonen eingetragen werden, für die der Server als Slave agieren soll, und wer sein Meister ist:
== Konfiguration eines sekundären DNS-Servers ==
zone "domainname" {
Zur Erhöhung der Ausfallsicherheit kann ein sekundärer Nameserver (Slave) eingerichtet werden. Öffentliche Zonen sollten mindestens zwei autoritative Nameserver besitzen.
        type slave;
        masters { 192.168.0.10; };
        file "back/domainname.bak";
};


zone "0.168.192.in-addr.arpa" {
=== Änderungen auf dem primären Server ===
        type slave;
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:
        masters { 192.168.0.10; };
        file "back/0.168.192.bak";
};


* Die File-Direktiven zeigen in diesem Fall nicht auf existierende Zonendateien, sondern auf den Ort, wo der Server die erhaltenen Zonendaten ablegen soll.
<syntaxhighlight lang="bash" highlight="1" copy line>
* In diesem Fall im Verzeichnis back im Bind-Homeverzeichnis /var/cache/bind. Da dieses noch nicht existiert, muss es erst passend angelegt werden:
vi /etc/bind/named.conf.options
$ sudo mkdir /var/cache/bind/back
</syntaxhighlight>
$ sudo chown bind /var/cache/bind/back


* Eigene Zonendateien besitzt ein sekundärer Nameserver nicht.
Innerhalb des ''options''-Blocks:
* Natürlich muss der Dienst auch hier nach der Änderung neu gestartet werden. Getestet werden kann er dann genau wie ein primärer Server.


===Syntax der named.conf.* und der Zonendateien überprüfen===
<syntaxhighlight lang="ini" highlight="" copy line>
'''# named-checkzone raum102.itw /etc/bind/fwd.raum102.itw'''
allow-transfer { 192.168.0.200; };
zone raum102.itw/IN: loaded serial 20
notify yes;
OK
</syntaxhighlight>
'''# named-checkzone 0.0.10-in-addr.arpa /etc/bind/rev.raum102.itw'''
zone 0.0.10-in-addr.arpa/IN: loaded serial 20
OK


===bind9 Installation abschließen===
* ''allow-transfer'' definiert die Liste der IP-Adressen, an die Zonentransfers erlaubt sind (mehrere IP-Adressen sind möglich).
# systemctl restart bind9
* ''notify yes'' bewirkt, dass der Master seine Slaves aktiv informiert, sobald aktualisierte Zonendateien vorliegen.
# systemctl enable bind9
# systemctl status bind9
# vi /etc/resolv.conf --> nameserver 10.0.0.3
# service networking restart


==Namensauflösung testen==
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.
[[Datei:WiresharkDNS1.png|Ablaufverfolgung der Namensauflösung]]
'''# dig google.de'''
; <<>> 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
;; <span style="background:yellow">SERVER: 10.0.0.3#53(10.0.0.3)</span>
;; WHEN: Mi Sep 25 09:32:26 CEST 2019
;; MSG SIZE  rcvd: 340


Nach Änderungen an der Konfiguration wird der Dienst neu gestartet:
= [https://wiki.ubuntuusers.de/DNS-Server_Bind/ bind9] installieren =
# apt install -y bind9 bind9utils bind9-doc dnsutils


<syntaxhighlight lang="bash" highlight="1" copy line>
systemctl restart bind9
</syntaxhighlight>


In /etc/bind/ liegen nun die Konfigurationsdateien für bind9 hier werden wir auch unsere sogenannten Zonendateien ablegen.
=== Einrichtung des sekundären Servers ===
Auf dem sekundären Server wird zunächst festgelegt, von welchem Host Benachrichtigungen akzeptiert werden:


== Zonendateien anlegen ==
<syntaxhighlight lang="bash" highlight="1" copy line>
Damit der DNS Server ordnungsgemäss arbeiten kann benötigt dieser entsprechende Zonendateien.
vi /etc/bind/named.conf.options
</syntaxhighlight>


===Forward lookup Zone anlegen===
<syntaxhighlight lang="ini" highlight="" copy line>
# vi /etc/bind/fwd.raum102.itw
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:


; /etc/bind/fwd.raum102.itw
<syntaxhighlight lang="bash" highlight="1" copy line>
;
vi /etc/bind/named.conf.local
; BIND forward zone file for raum102.itw
</syntaxhighlight>
;
$TTL    604800
@      IN      SOA    ns1.raum102.itw. root.raum102.itw. (
                              20        ; Serial
                          604800        ; Refresh
                          86400        ; Retry
                        2419200        ; Expire
                          604800 )      ; Negative Cache TTL
;@      IN      NS      localhost.
;@      IN      A      127.0.0.1
;@      IN      AAAA    ::1
;Name Server Information
                IN      NS      ns1.raum102.itw.
;IP address of Name Server
ns1            IN      A      10.0.0.3
;A - Record HostName To Ip Address
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 record
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 ===
<syntaxhighlight lang="ini" highlight="" copy line>
# vi /etc/bind/rev.raum102.itw
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>


; /etc/bind/rev.raum102.itw
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:
;
; BIND reverse zone file for raum102.itw
;
$TTL    604800
@      IN      SOA    raum102.itw. root.raum102.itw. (
                              20        ; 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==
<syntaxhighlight lang="bash" highlight="" copy line>
# vi /etc/bind/named.conf.local
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:


; /etc/bind/named.conf.local
<syntaxhighlight lang="bash" highlight="1" copy line>
zone "raum102.itw" IN {                        //domain name (forward zone)
systemctl restart bind9
      type master;                              //primary DNS
</syntaxhighlight>
      file "/etc/bind/fwd.raum102.itw";          //forward zone file
      allow-update { none; };                    //none, because its 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 its primary DNS
};


== Syntax der named.conf.* und der Zonendateien überprüfen ==
== Syntax der named.conf.* und der Zonendateien überprüfen ==
Mit dem Befehl named-checkconf wird die Syntax aller named.conf.* Dateien geprüft.
Mit ''named-checkconf'' wird die Syntax der globalen Konfiguration (''named.conf'' und eingebundene Dateien) geprüft:


Um die Zonendateien zu überprüfen verwenden wir named-checkzone
<syntaxhighlight lang="bash" highlight="1" copy line>
named-checkconf
</syntaxhighlight>


# named-checkzone raum102.itw /etc/bind/fwd.raum102.itw
Die Zonendateien werden mit ''named-checkzone'' validiert:
zone raum102.itw/IN: loaded serial 20
OK


# named-checkzone 0.0.10-in-addr.arpa /etc/bind/rev.raum102.itw
<syntaxhighlight lang="bash" highlight="" copy line>
zone 0.0.10-in-addr.arpa/IN: loaded serial 20
named-checkzone raum102.itw /etc/bind/fwd.raum102.itw
OK
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 ==
== bind9 Installation abschließen ==
:1. Service neu starten
Nach erfolgreicher Syntaxprüfung wird der Dienst aktiviert und der lokale Nameserver als Resolver eingetragen.
  # systemctl restart bind9
 
: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


:2. Bei jedem Systemstart laden
;; OPT PSEUDOSECTION:
# systemctl enable bind9
; 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


:3. Status anzeigen lassen
;; AUTHORITY SECTION:
  # systemctl status bind9
google.de.      83363  IN  NS  ns1.google.com.
  ● bind9.service - BIND Domain Name Server
google.de.      83363 IN  NS  ns2.google.com.
    Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
google.de.      83363 IN  NS  ns3.google.com.
    Active: <span style="color:green;">active (running)</span> since Fri 2019-09-20 13:28:34 CEST; 1s ago
google.de.      83363  IN  NS   ns4.google.com.
       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. resolv.conf Datei bearbeiten
;; ADDITIONAL SECTION:
  # vi /etc/resolv.conf
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>


<u>/etc/resolv.conf</u>
Wichtig ist insbesondere die Zeile mit dem verwendeten Server:
# Der zu nutzende Nameserver
nameserver 10.0.0.3


* '''SERVER: 10.0.0.3#53(10.0.0.3)''' – die Anfrage wurde über den lokal eingerichteten BIND-Server beantwortet.


:5. Jetzt den Dienst neu starten
<noinclude>
# service networking restart


== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


:6. Mit ~# ip a und ~# ip r überprüfen, ob unsere Einträge greifen.
=== Dokumentation ===
<!--
; Man-Page
#  


; Info-Pages
-->


=Links=
=== Links ===
==Interne Links==
==== Projekt ====
==== Weblinks ====


# [[Netzwerke:DNS]]
<!--
{{DEFAULTSORT:new}}
{{DISPLAYTITLE:new}}
-->


==Externe Links==
[[Kategorie:BIND]]
# https://de.wikipedia.org/wiki/Domain_Name_System


[[Kategorie:DNS]]
</noinclude>

Aktuelle Version vom 17. Juni 2026, 10:40 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, beispielsweise 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.

Ablaufverfolgung der Namensauflösung

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

Projekt