Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:bind_c7 [29.12.2017 10:26. ] – django | centos:bind_c7 [31.12.2017 14:52. ] (aktuell) – [0.0.10.zone.db (intra)] django | ||
|---|---|---|---|
| Zeile 255: | Zeile 255: | ||
| ===== Grund-/ | ===== Grund-/ | ||
| - | ==== Name Server Control Utility | + | ==== Name Server Control Utility ==== |
| Zur administrativen Interaktion und Steuerung mit unserem DNS-Server nutzen wir das Name Server Control Utility **rndc** aus dem RPM **bind**. Die Optionen dieses User Interface finden am einfachsten in der zugehörigen manpage. | Zur administrativen Interaktion und Steuerung mit unserem DNS-Server nutzen wir das Name Server Control Utility **rndc** aus dem RPM **bind**. Die Optionen dieses User Interface finden am einfachsten in der zugehörigen manpage. | ||
| < | < | ||
| Zeile 697: | Zeile 697: | ||
| };</ | };</ | ||
| - | Diese Datei werden wir nun zunächst sichern und dann automatisch | + | ~~codedoc: |
| - | # | + | <WRAP center round important 90%> |
| + | **WICHTIG**: | ||
| + | Damit es später beim Aufruf von **rndc status** nicht zu folgender [[https:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | Diese Datei werden wir also nun zunächst sichern und dann automatisch | ||
| + | # | ||
| Nun erzeugen wir uns unsere eigenen Schlüssel. | Nun erzeugen wir uns unsere eigenen Schlüssel. | ||
| - | # rndc-confgen -a -b 512 -c /etc/rndc.key -k rndc-key -r /dev/random -u named | + | # rndc-confgen -a -b 512 -c /etc/rndc_local.key -k rndc-key -r /dev/random -u named |
| - | wrote key file "/etc/rndc.key" | + | wrote key file "/etc/rndc_local.key" |
| Den Inhalt dieser Schlüsseldatei können wir uns nun auch anzeigen lassen. | Den Inhalt dieser Schlüsseldatei können wir uns nun auch anzeigen lassen. | ||
| - | # less /etc/rndc.key | + | # less /etc/rndc_local.key |
| - | <file bash /etc/rndc.key>key " | + | <file bash /etc/rndc_local.key>key " |
| algorithm hmac-md5; | algorithm hmac-md5; | ||
| secret " | secret " | ||
| Zeile 713: | Zeile 720: | ||
| Anschließend passen wir dann noch die User- und Gruppen-Eigenschaften an: | Anschließend passen wir dann noch die User- und Gruppen-Eigenschaften an: | ||
| - | # chown root:named /etc/rndc.key | + | # chown root:named /etc/rndc_local.key |
| + | # chmod 640 / | ||
| Somit weist die Schlüsseldatei nunmehr die gleichen Rechte auf, die die original Datei aus dem RPM auf: | Somit weist die Schlüsseldatei nunmehr die gleichen Rechte auf, die die original Datei aus dem RPM auf: | ||
| - | # ll /etc/rndc.k* | + | # ll /etc/rndc*key* |
| - | < | + | < |
| - | -rw-r-----. 1 root named 74 Dec 28 18:26 /etc/rndc.key.orig</ | + | -rw-r-----. 1 root named 141 Dec 29 11:10 /etc/rndc_local.key</ |
| Zu guter Letzt legen wir nun noch die benötigte Konfigurationsdatei // | Zu guter Letzt legen wir nun noch die benötigte Konfigurationsdatei // | ||
| # vim / | # vim / | ||
| - | <file bash / | + | <file bash / |
| options { | options { | ||
| Zeile 755: | Zeile 763: | ||
| Beim Starten des named Daemon wird dann das chroot jail mit den zugehörigen Konfigurationsdateien gemountet und so dem Daemon verfügbar gemacht. In dem Bash-Sctript // | Beim Starten des named Daemon wird dann das chroot jail mit den zugehörigen Konfigurationsdateien gemountet und so dem Daemon verfügbar gemacht. In dem Bash-Sctript // | ||
| - | ~~codedoc: | + | ~~codedoc: |
| - | <code bash>... | + | |
| + | Damit auch unser [[centos: | ||
| + | # cp -a / | ||
| + | |||
| + | Anschließend korrigieren wir den Dateinamen der RNDC-Schlüsseldatei auf unseren lokalen Dateinamen **''/ | ||
| + | # vim / | ||
| + | ~~codedoc: | ||
| + | <file bash / | ||
| # Warning: the order is important | # Warning: the order is important | ||
| # If a directory containing $ROOTDIR is listed here, | # If a directory containing $ROOTDIR is listed here, | ||
| # it MUST be listed last. (/var/named contains / | # it MUST be listed last. (/var/named contains / | ||
| + | # Django : 2017-12-29 | ||
| + | # default: ROOTDIR_MOUNT='/ | ||
| + | # / | ||
| + | # / | ||
| + | # / | ||
| + | |||
| ROOTDIR_MOUNT='/ | ROOTDIR_MOUNT='/ | ||
| - | / | + | / |
| / | / | ||
| / | / | ||
| - | ... | + | usage() |
| - | </code> | + | { |
| + | echo | ||
| + | echo 'This script setups chroot environment for BIND' | ||
| + | echo ' | ||
| + | } | ||
| + | |||
| + | if ! [ " | ||
| + | echo 'Wrong number of arguments' | ||
| + | usage | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | ROOTDIR=" | ||
| + | |||
| + | # Exit if ROOTDIR doesn' | ||
| + | if ! [ -d " | ||
| + | echo "Root directory $ROOTDIR doesn' | ||
| + | usage | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | mount_chroot_conf() | ||
| + | { | ||
| + | if [ -n " | ||
| + | for all in $ROOTDIR_MOUNT; | ||
| + | # Skip nonexistant files | ||
| + | [ -e " | ||
| + | |||
| + | # If mount source is a file | ||
| + | if ! [ -d " | ||
| + | # mount it only if it is not present in chroot or it is empty | ||
| + | if ! [ -e " | ||
| + | touch " | ||
| + | mount --bind " | ||
| + | fi | ||
| + | else | ||
| + | # Mount source is a directory. Mount it only if directory in chroot is | ||
| + | # empty. | ||
| + | if [ -e " | ||
| + | mount --bind --make-private " | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | umount_chroot_conf() | ||
| + | { | ||
| + | if [ -n " | ||
| + | for all in $ROOTDIR_MOUNT; | ||
| + | # Check if file is mount target. Do not use / | ||
| + | # of modified mounted files can fail. | ||
| + | if mount | grep -q '.* on '" | ||
| + | umount " | ||
| + | # Remove temporary created files | ||
| + | [ -f " | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | case " | ||
| + | on) | ||
| + | mount_chroot_conf | ||
| + | ;; | ||
| + | off) | ||
| + | umount_chroot_conf | ||
| + | ;; | ||
| + | *) | ||
| + | echo ' | ||
| + | usage | ||
| + | exit 1 | ||
| + | esac | ||
| + | |||
| + | exit 0</file> | ||
| [[centos: | [[centos: | ||
| Zeile 1542: | Zeile 1637: | ||
| ==== Zonen-Dateien für lokale Adressen ==== | ==== Zonen-Dateien für lokale Adressen ==== | ||
| + | In nun folgenden Konfigurationsbeispiel wollen wir einen primären DNS-Server aufsetzen, der folgende zwei Zonen verwalten soll: | ||
| + | * **DMZ** : Domäne **dmz.nausch.org** - IP-Netz: **10.0.0.0/ | ||
| + | * **INTRA** : Domäne **intra.nausch.org** - IP-Netz: **10.0.10.0/ | ||
| + | |||
| + | Die Clientanfragen aus den beiden Netzen sollen dabei mit Hilfe unterschiedlicher **[[https:// | ||
| + | * **view** - **INTRA** | ||
| + | * **view** - **DMZ** | ||
| + | |||
| + | Bevor wir nun die notwendigen Zonen-Dateien für unseren DNS-Server anlegen werden, legen wir uns zunächst eine eigenen Verzeichnis an, in dem wir später dann die Zonen-Dateien ablegen werden. | ||
| + | # mkdir / | ||
| + | # mkdir / | ||
| + | |||
| + | Anschließend statten wir unser neues Konfigurationsverzeichnis noch mit den nötigen Datei, Benutzer- und Gruppenrechten aus. | ||
| + | # chown named:named / | ||
| + | # chown named:named / | ||
| + | |||
| + | # chmod 770 / | ||
| + | # chmod 770 / | ||
| + | |||
| + | Nun können wir für jede Zone in unserem neuen Verzeichnis // | ||
| + | * **Zone INTRANET** | ||
| + | * Zonen-Datei für die **Forward**-Auflösung - // | ||
| + | * Zonen-Datei für die **Reverse**-Auflösung - // | ||
| + | * **Zone DMZ** (für die Anfragen aus der DMZ) | ||
| + | * Zonen-Datei für die **Forward**-Auflösung - // | ||
| + | * Zonen-Datei für die **Reverse**-Auflösung - // | ||
| + | * **Zone DMZ** (für die Anfragen aus dem Intranet) | ||
| + | * Zonen-Datei für die **Forward**-Auflösung - // | ||
| + | * Zonen-Datei für die **Reverse**-Auflösung - // | ||
| + | |||
| + | === intra.nausch.org.zone.db === | ||
| + | Zunächst legen wir uns also die Zonen-Datei für die Forward-Auflösung der Zone **INTRANET** an. | ||
| + | # vim / | ||
| + | |||
| + | <file bind / | ||
| + | $TTL 86400 ; 1 day | ||
| + | intra.nausch.org | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.intra.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | $ORIGIN intra.nausch.org. | ||
| + | ns1 | ||
| + | |||
| + | vml010027 | ||
| + | pml010051 | ||
| + | |||
| + | $ORIGIN intra.nausch.org. | ||
| + | test CNAME ns1 | ||
| + | |||
| + | fwi | ||
| + | gateway CNAME vml010027 | ||
| + | proton | ||
| + | </ | ||
| + | |||
| + | Zur Prüfung unserer gerade angelegten Zonendatei nutzen wir folgenden Befehl: | ||
| + | # named-checkzone intra.nausch.org / | ||
| + | |||
| + | zone intra.nausch.org/ | ||
| + | OK | ||
| + | |||
| + | === 10.0.10.zone.db === | ||
| + | Nun legen wir für die Reverseauflösung der Zone **INTRANET** für das IP-Netz **10.0.10.0/ | ||
| + | # vim / | ||
| + | <file bind / | ||
| + | @ IN SOA ns1.intra.nausch.org. hostmaster.nausch.org. ( | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.intra.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | |||
| + | 27 PTR ns1.intra.nausch.org. | ||
| + | 51 PTR pml010051.intra.nausch.org.</ | ||
| + | |||
| + | Wie schon zuvor bei der Zonen-Datei für die Forward-Auflösung checken wir nun auch hier die gerade angelegte Datei auf Tippfehler mit folgenden Befehl: | ||
| + | # named-checkzone 10.0.10 / | ||
| + | |||
| + | zone 10.0.10/IN: loaded serial 2017122901 | ||
| + | OK | ||
| + | |||
| + | === dmz.nausch.org.zone.db === | ||
| + | Nachdem wir die Konfiguration der Zone Intranet abgeschlossen haben, werden wir nun als nächstes die Zone **DMZ** konfigurieren. Als erstes werden wir auch hier das Zonefile für die Forwardauflösung anlegen. | ||
| + | # vim / | ||
| + | |||
| + | <file bind / | ||
| + | $TTL 86400 ; 1 day | ||
| + | dmz.nausch.org | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.dmz.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | $ORIGIN dmz.nausch.org. | ||
| + | ns1 A 10.0.0.27 | ||
| + | |||
| + | vml000017 | ||
| + | vml000027 A | ||
| + | |||
| + | $ORIGIN dmz.nausch.org. | ||
| + | test CNAME ns1 | ||
| + | fwe CNAME | ||
| + | fwi CNAME | ||
| + | </ | ||
| + | |||
| + | Auch hier führen wir den Syntax- und Plausibilitäts-Check durch. | ||
| + | # named-checkzone dmz.nausch.org / | ||
| + | |||
| + | zone dmz.nausch.org/ | ||
| + | OK | ||
| + | |||
| + | === 0.0.10.zone.db === | ||
| + | Was nun noch fehlt ist das Zonenfile für die Zonendatei für die Reverseauflösung der Zone **DMZ**. ~~codedoc: | ||
| + | # vim / | ||
| + | <file bind / | ||
| + | @ IN SOA ns1.dmz.nausch.org. hostmaster.nausch.org. ( | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.dmz.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | |||
| + | 17 PTR | ||
| + | 27 PTR | ||
| + | </ | ||
| + | |||
| + | Wie schon zuvor bei der Zonen-Datei für die Forward-Auflösung checken wir nun auch hier die gerade angelegte Datei auf Tippfehler mit folgenden Befehl: | ||
| + | # named-checkzone 0.0.10 / | ||
| + | |||
| + | zone 0.0.10/IN: loaded serial 2017122901 | ||
| + | OK | ||
| + | |||
| + | === dmz.nausch.org.zone.db (intra) === | ||
| + | Nachdem wir die Konfiguration der Zone Intranet abgeschlossen haben, werden wir nun als nächstes die Zone **DMZ** konfigurieren. Als erstes werden wir auch hier das Zonefile für die Forwardauflösung anlegen. | ||
| + | # vim / | ||
| + | |||
| + | <file bind / | ||
| + | $TTL 86400 ; 1 day | ||
| + | dmz.nausch.org | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.dmz.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | $ORIGIN dmz.nausch.org. | ||
| + | ns1 A 10.0.0.27 | ||
| + | </ | ||
| + | |||
| + | Auch hier führen wir den Syntax- und Plausibilitäts-Check durch. | ||
| + | # named-checkzone dmz.nausch.org / | ||
| + | |||
| + | zone dmz.nausch.org/ | ||
| + | OK | ||
| + | |||
| + | === 0.0.10.zone.db (intra) === | ||
| + | Was nun noch fehlt ist das Zonenfile für die Zonendatei für die Reverseauflösung der Zone **DMZ**. | ||
| + | # vim / | ||
| + | <file bind / | ||
| + | @ IN SOA ns1.dmz.nausch.org. hostmaster.nausch.org. ( | ||
| + | 2017122901 ; serial | ||
| + | 28800 ; refresh (8 hours) | ||
| + | 7200 ; retry (2 hours) | ||
| + | 604800 | ||
| + | 86400 ; minimum (1 day) | ||
| + | ) | ||
| + | NS ns1.dmz.nausch.org. | ||
| + | MX 10 mx1.nausch.org. | ||
| + | |||
| + | 27 PTR | ||
| + | </ | ||
| + | |||
| + | Wie schon zuvor bei der Zonen-Datei für die Forward-Auflösung checken wir nun auch hier die gerade angelegte Datei auf Tippfehler mit folgenden Befehl: | ||
| + | # named-checkzone 0.0.10 / | ||
| + | |||
| + | zone 0.0.10/IN: loaded serial 2017122901 | ||
| + | OK | ||
| + | |||
| + | |||
| + | ==== named.conf ==== | ||
| + | Für unser Konfigurationsbeispiel legen wir uns nun eine eigene individuelle Konfigurationsdatei an, die all unsere Anwendungsfälle abdeckt. Die enizelnen Optionen sind in der Konfigurationsdatei // | ||
| + | # vim / | ||
| + | |||
| + | <file ini / | ||
| + | |||
| + | // ISC Bind Konfigurationsdatei auf Basis der Beispiels-Konfigurationsdatei | ||
| + | // / | ||
| + | // Konfig-Beschreibung: | ||
| + | |||
| + | /* ********** Variablendefinition für die unterschiedlichen ACLs ********** */ | ||
| + | acl dmz { | ||
| + | 10.0.0.0/ | ||
| + | }; | ||
| + | |||
| + | acl intra { | ||
| + | 10.0.10.0/ | ||
| + | }; | ||
| + | |||
| + | acl primary | ||
| + | 10.0.0.27/ | ||
| + | }; | ||
| + | |||
| + | acl interfaces { | ||
| + | 10.0.0.27/ | ||
| + | 10.0.10.27/ | ||
| + | }; | ||
| + | |||
| + | |||
| + | /* *********************** rndc Schlüsseldefinition *********************** */ | ||
| + | include "/ | ||
| + | |||
| + | |||
| + | /* *********************** rndc Control-Definition ************************ */ | ||
| + | controls { | ||
| + | inet 127.0.0.1 port 953 | ||
| + | allow { 127.0.0.1; } keys { " | ||
| + | }; | ||
| + | |||
| + | |||
| + | /* ***************** Definition der allgemeinen Optionen ****************** */ | ||
| + | options { | ||
| + | // Arbeitsverzeichnis des Servers | ||
| + | directory "/ | ||
| + | |||
| + | // Das Verzeichnis, | ||
| + | // DNSSEC-Schlüsseldateien befinden sollen. | ||
| + | key-directory "/ | ||
| + | |||
| + | // Das Verzeichnis, | ||
| + | // die verwalteten DNSSEC-Schlüssel verfolgen. | ||
| + | managed-keys-directory "/ | ||
| + | |||
| + | // Pfadname der Datei, um die eingebauten vertrauenswürdigen Schlüssel | ||
| + | // von named zu überschreiben. Pfad zum ISC DLV Schlüssel. | ||
| + | bindkeys-file "/ | ||
| + | |||
| + | // Der Pfadname der Datei, in die ein TSIG-Sitzungsschlüssel geschrieben | ||
| + | // werden soll, der mit named für die Verwendung durch nsupdate -l | ||
| + | // erzeugt wurde. | ||
| + | session-keyfile "/ | ||
| + | |||
| + | // Der Pfadname der Datei, auf die der Server die security roots | ||
| + | // schreibt, wenn er hierzu angewiesen wird. | ||
| + | secroots-file "/ | ||
| + | |||
| + | // Der Pfadname der Datei, auf die der Server die Datenbank übergibt, | ||
| + | // wenn er angewiesen wird. | ||
| + | dump-file "/ | ||
| + | |||
| + | // Der Pfadname der Datei, an die der Server Statistiken anhängt, | ||
| + | // wenn er Server hierzu angewiesen wird. | ||
| + | statistics-file "/ | ||
| + | |||
| + | // Der Pfadname der Datei, in die der Server beim Beenden die | ||
| + | // Speicherverbrauchsstatistik schreibt. | ||
| + | memstatistics-file "/ | ||
| + | |||
| + | // Pfadname der Datei, in die der Server Abfragen, die gerade | ||
| + | // wiederkehren, | ||
| + | recursing-file "/ | ||
| + | |||
| + | // Pfadname der Datei, in die der Server seine Prozess-ID schreibt. | ||
| + | pid-file "/ | ||
| + | |||
| + | // Wird folgender Parameter auf " | ||
| + | // bei der Generierung von Antworten nur dann Datensätze zur authority | ||
| + | // und additional data sections hinzu, wenn sie benötigt werden. | ||
| + | minimal-responses no; | ||
| + | |||
| + | /* Wird folgender Parameter auf " | ||
| + | | ||
| + | | ||
| + | ist und der Server die Antwort noch nicht kennt, gibt er eine | ||
| + | | ||
| + | Die Default-Einstellung ist " | ||
| + | | ||
| + | dass Clients Daten aus dem Server-Cache beziehen; es verhindert nur, | ||
| + | dass neue Daten als Folge von Client-Abfragen zwischengespeichert werden. | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | von groß angelegten DNS-Amplifikations-Angriffen werden könnte. | ||
| + | Die Implementierung von BCP38 in Ihrem Netzwerk würde diese | ||
| + | | ||
| + | */ | ||
| + | recursion yes; | ||
| + | |||
| + | // DNSsec-Support aktivieren | ||
| + | dnssec-enable yes; | ||
| + | |||
| + | /* DNSsec-Validierung aktivieren und mit den Root-Zertificaten abgleichen. | ||
| + | " | ||
| + | | ||
| + | | ||
| + | | ||
| + | " | ||
| + | | ||
| + | | ||
| + | " | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | dnssec-validation auto; | ||
| + | |||
| + | /* Wird diese option gesetzt, stellt dnssec-lookaside dem validator eine | ||
| + | | ||
| + | Zone (top of a zone) zu validieren. Wenn dnssec-lookaside auf auto | ||
| + | | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | dnssec-lookaside auto; | ||
| + | |||
| + | // Diese Option wird verwendet, um den Zeichensatz und die Syntax | ||
| + | // bestimmter Domänennamen in Masterdateien und/oder DNS-Antworten, | ||
| + | // die vom Netzwerk empfangen werden, einzuschränken. | ||
| + | check-names master warn; | ||
| + | |||
| + | // Gibt an, welche Hosts diesen Server, einen Slave, zusätzlich zu den | ||
| + | // Zonen-Mastern über Zonenänderungen benachrichtigen dürfen. | ||
| + | allow-notify { 127.0.0.1; }; | ||
| + | |||
| + | // Definiert, welche Hosts gewöhnliche DNS-Fragen stellen dürfen. | ||
| + | allow-query { ::1; 127.0.0.1; dmz; intra; }; | ||
| + | |||
| + | // Legt fest, welche Hosts rekursive Abfragen über diesen Server | ||
| + | // durchführen dürfen. | ||
| + | allow-recursion { ::1; 127.0.0.1; dmz; intra; }; | ||
| + | |||
| + | // Gibt an, welche Hosts Zonentransfers vom Server empfangen dürfen. | ||
| + | allow-transfer { 127.0.0.1; primary; }; | ||
| + | |||
| + | // Gibt eine Liste von Adressen an, von denen der Server keine Anfragen | ||
| + | // annimmt oder die zur Lösung einer Anfrage verwendet werden. Anfragen | ||
| + | // von diesen Adressen werden nicht beantwortet. | ||
| + | blackhole { none; }; | ||
| + | |||
| + | // Die Schnittstellen und Ports, von denen der Server Anfragen | ||
| + | // beantwortet, | ||
| + | listen-on port 53 { 127.0.0.1; interfaces; }; | ||
| + | listen-on-v6 port 53 { ::1; }; | ||
| + | |||
| + | // Sofern der Server die Antwort auf eine Frage nicht kennt, fragt er | ||
| + | // andere Nameserver ab. query-source gibt die Adresse und den Port an, | ||
| + | // die für solche Abfragen verwendet werden. | ||
| + | query-source address * port *; | ||
| + | |||
| + | // Maximale Größe eines Core Dump | ||
| + | coresize default; | ||
| + | |||
| + | // Maximale Größe an RAM, die der Server verbrauchen darf. | ||
| + | datasize default; | ||
| + | |||
| + | // Maximale Anzahl von geöffneten Dateien. | ||
| + | files unlimited; | ||
| + | |||
| + | // Maximale Menge an Stack-Speicher, | ||
| + | stacksize default; | ||
| + | |||
| + | // Maximale Größe jeder Journaldatei fest. | ||
| + | // (default ist unbegrenzt, was auch 2 Gigabyte bedeutet) | ||
| + | max-journal-size unlimited; | ||
| + | |||
| + | // Maximale Anzahl gleichzeitiger rekursiver Suchvorgänge, | ||
| + | // für Clients durchführt. Der Standardwert ist 1000. | ||
| + | recursive-clients 1000; | ||
| + | |||
| + | // Maximale Anzahl gleichzeitiger TCP Verbindungen die der Server von | ||
| + | // Clients akzeptiert. Der Standardwert ist 100. | ||
| + | tcp-clients 100; | ||
| + | |||
| + | /* Maximale Menge an Arbeitsspeicher (in Bytes), die für den Server-Cache | ||
| + | | ||
| + | | ||
| + | | ||
| + | von 32-Bit-Ganzzahlen ohne Vorzeichen (0xffffffffffff), | ||
| + | den gleichen Effekt wie 0 auf Maschinen, die mehr als 32 Bit unterstützen. | ||
| + | Alle positiven Werte kleiner als 2MB werden ignoriert und auf 2MB gesetzt. | ||
| + | Bei einem Server mit mehreren Views gilt die Begrenzung separat für | ||
| + | den Cache der einzelnen Views. Der Standardwert ist 0. | ||
| + | */ | ||
| + | max-cache-size 0; | ||
| + | |||
| + | /* List Queue Depth: Die Standardeinstellung und das Minimum ist 10. Sofern | ||
| + | der Kernel Accept-Filter-Verbindungen unterstützt, | ||
| + | | ||
| + | wird. Werte ungleich 0 unter 10 werden stillschweigend erhöht. | ||
| + | ein Wert von 0 kann gesetzt werden und definiert auf den meisten | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | tcp-listen-queue 10; | ||
| + | |||
| + | /* Der Server scannt die Liste der Netzwerkschnittstellen in regelmäßigen | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | dem Abhören von Abfragen auf neu entdeckte Interfaces (vorausgesetzt, | ||
| + | sind durch die Listen-On-Konfiguration erlaubt) und hört auf, auf nicht | ||
| + | mehr vorhandene Interfaces zu hören. | ||
| + | */ | ||
| + | interface-interval 0; | ||
| + | |||
| + | /* Definiert die Zeit in Sekunden, in denen eine lahme Serveranzeige | ||
| + | | ||
| + | | ||
| + | ist 1800 (30 Minuten). | ||
| + | */ | ||
| + | lame-ttl 600; | ||
| + | |||
| + | /* Um den Netzwerkverkehr zu reduzieren und die Leistung zu erhöhen, | ||
| + | | ||
| + | um eine maximale Aufbewahrungszeit für diese Antworten im Server in | ||
| + | | ||
| + | 10800 Sekunden (3 Stunden). max-ncache-ttl kann nicht länger als 7 Tage | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | max-ncache-ttl 10800; | ||
| + | |||
| + | /* Legt die maximale Zeit fest, für die der Server gewöhnliche (positive) | ||
| + | | ||
| + | Ein Wert von Null kann dazu führen, dass alle Abfragen SERVFAIL | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | max-cache-ttl 604800; | ||
| + | |||
| + | /* Definiert die Größe des angebotenen EDNS UDP-Puffers (in Bytes), um | ||
| + | die Größe der empfangenen Pakete zu kontrollieren. Gültige Werte sind | ||
| + | 512 bis 4096 (Werte außerhalb dieses Bereichs werden stillschweigend | ||
| + | angepasst). Der Standardwert ist 4096. Der übliche Grund für das | ||
| + | Setzen von edns-udp-size auf einen nicht standardmäßigen Wert ist es, | ||
| + | UDP-Antworten zu erhalten, um durch gebrochene Firewalls zu gehen, die | ||
| + | fragmentierte Pakete blockieren und/oder UDP-Pakete blockieren, die | ||
| + | größer als 512 Bytes sind. named wird auf die Verwendung von 512 Bytes | ||
| + | zurückgreifen, | ||
| + | Anfangswert erhält. 512 Bytes werden nicht angeboten, um Websites zu | ||
| + | ermutigen, ihre Firewalls zu reparieren. Kleine EDNS UDP-Größen führen | ||
| + | zu einer übermäßigen Nutzung von TCP. | ||
| + | */ | ||
| + | edns-udp-size 4096; | ||
| + | |||
| + | /* Legt die maximale EDNS UDP-Nachrichtengröße fest, die in Bytes gesendet | ||
| + | wird. Gültige Werte sind 512 bis 4096 (Werte außerhalb dieses Bereichs | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | vom beworbenen Empfangspuffer (edns-udp-size). Wird dieser Wert auf einen | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | max-udp-size 4096; | ||
| + | |||
| + | /* Definiert den Anfangswert (Minimum) der Anzahl rekursiver gleichzeitiger | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | */ | ||
| + | clients-per-query 10; | ||
| + | |||
| + | /* Definiert den Anfangswert (Maximum) der Anzahl rekursiver gleichzeitiger | ||
| + | | ||
| + | | ||
| + | Named wird versuchen, diesen Wert selbst zu tunen und Änderungen werden | ||
| + | | ||
| + | */ | ||
| + | max-clients-per-query 100; | ||
| + | |||
| + | /* Festlegung der Angaben (Version), die der Server über eine Abfrage des | ||
| + | | ||
| + | | ||
| + | der Version none wird die Verarbeitung der Abfragen deaktiviert. | ||
| + | */ | ||
| + | version "DNS - nausch.org"; | ||
| + | |||
| + | /* Der Hostname, den der Server über eine Abfrage des Namens hostname.bind | ||
| + | mit dem Typ TXT, Klasse CHAOS, melden soll. Dies ist standardmäßig der | ||
| + | | ||
| + | der Funktion gethostname() gefunden wird. Die ID, die der Server beim | ||
| + | | ||
| + | des Namens ID.SERVER vom Typ TXT, Klasse CHAOS, melden soll. Der primäre | ||
| + | Zweck solcher Abfragen ist es, herauszufinden, | ||
| + | | ||
| + | | ||
| + | Die Angabe von server-id hostname; bewirkt, dass named den Hostnamen | ||
| + | | ||
| + | Der Standardwert ist none. | ||
| + | */ | ||
| + | server-id none; | ||
| + | }; | ||
| + | |||
| + | /* ******************* Definition der Logging-Parameter ******************* */ | ||
| + | logging { | ||
| + | |||
| + | // Definition der unterschiedlichen Kanäle | ||
| + | |||
| + | // Standard-Startmeldungen | ||
| + | channel default_debug { | ||
| + | file " | ||
| + | severity dynamic; | ||
| + | print-category yes; | ||
| + | print-severity yes; | ||
| + | print-time yes; | ||
| + | }; | ||
| + | // Genehmigung und Ablehnung von DNS-Anfragen | ||
| + | channel custom_security { | ||
| + | file " | ||
| + | severity info; | ||
| + | print-category yes; | ||
| + | print-severity yes; | ||
| + | print-time yes; | ||
| + | }; | ||
| + | // Lame servers. Dabei handelt es sich um Fehlkonfigurationen bei | ||
| + | // Remote-Servern, | ||
| + | // versuchte, diese Server während der Auflösung abzufragen. | ||
| + | channel custom_lame-servers { | ||
| + | file " | ||
| + | severity info; | ||
| + | print-category yes; | ||
| + | print-severity yes; | ||
| + | print-time yes; | ||
| + | }; | ||
| + | |||
| + | // Definition der beiden Kathegorien security und lame-servers | ||
| + | |||
| + | category security { | ||
| + | custom_security; | ||
| + | default_syslog; | ||
| + | default_debug; | ||
| + | }; | ||
| + | category lame-servers { | ||
| + | custom_lame-servers ; | ||
| + | default_syslog; | ||
| + | default_debug; | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | /* ******************** Definition der Views and Zones ******************** */ | ||
| + | /* | ||
| + | WICHTIG: | ||
| + | ======== | ||
| + | |||
| + | Die Reihenfolge der View-Anweisungen ist signifikant. | ||
| + | Eine Client-Anfrage wird im Kontext der ersten Ansicht | ||
| + | beantwortet, | ||
| + | */ | ||
| + | view " | ||
| + | // Ist der Anfragende Client aus dem Netz 10.0.10.0/ | ||
| + | match-clients { intra; }; | ||
| + | |||
| + | /* ACHTUNG: Eine Zone kann entweder durch Bearbeiten von Zonendateien | ||
| + | und Neuladen des Servers oder durch dynamisches Update | ||
| + | aktualisiert werden, aber NIEMALS durch beides! | ||
| + | Ist die dynamische Aktualisierung für eine Zone mit der | ||
| + | Option " | ||
| + | Zonendatei manuell bearbeitet werden! Der Server würde | ||
| + | dann nicht mehr versuchen, die Informationen zur Zone | ||
| + | aus der Datei zu laden! | ||
| + | */ | ||
| + | |||
| + | // Zone: root server | ||
| + | zone " | ||
| + | type hint; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: localhost | ||
| + | include "/ | ||
| + | |||
| + | // Zone: intra.nausch.org (forward) | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: intra.nausch.org (reverse) | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: dmz.nausch.org | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: dmz.nausch.org | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | }; | ||
| + | |||
| + | view " | ||
| + | // Ist der Anfragende Client aus dem Netz 10.0.0.0/24 (DMZ)? | ||
| + | match-clients { localhost; dmz; }; | ||
| + | |||
| + | /* ACHTUNG: Eine Zone kann entweder durch Bearbeiten von Zonendateien | ||
| + | und Neuladen des Servers oder durch dynamisches Update | ||
| + | aktualisiert werden, aber NIEMALS durch beides! | ||
| + | Ist die dynamische Aktualisierung für eine Zone mit der | ||
| + | Option " | ||
| + | Zonendatei manuell bearbeitet werden! Der Server würde | ||
| + | dann nicht mehr versuchen, die Informationen zur Zone | ||
| + | aus der Datei zu laden! | ||
| + | */ | ||
| + | |||
| + | // Zone: root server | ||
| + | zone " | ||
| + | type hint; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: localhost | ||
| + | include "/ | ||
| + | |||
| + | // Zone: intra.nausch.org (forward) | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: intra.nausch.org (reverse) | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: dmz.nausch.org | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | |||
| + | // Zone: dmz.nausch.org | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | |||
| + | /* *************************** sonstige includes ************************** */ | ||
| + | include "/ | ||
| + | |||
| + | Bevor wir zur Aktivierung unserer Konfiguration nun den Nameserver einmal durchstarten überprüfen wir noch, ob sich kein Schreibfehler oder sonstiger Konfigurationsfehler eingeschlichen hat. | ||
| + | # named-checkconf | ||
| + | |||
| + | Geben wir beim Aufruf des Befehls **named-checkconf** die Option //**-p**// an, wird uns die (aufgelöste) Konfiguration __ohne__ die ganzen Kommentare ausgegeben. | ||
| + | # named-checkconf -p | ||
| + | |||
| + | < | ||
| + | bindkeys-file "/ | ||
| + | blackhole { | ||
| + | " | ||
| + | }; | ||
| + | coresize default; | ||
| + | datasize default; | ||
| + | session-keyfile "/ | ||
| + | directory "/ | ||
| + | dump-file "/ | ||
| + | files unlimited; | ||
| + | interface-interval 0; | ||
| + | listen-on port 53 { | ||
| + | 127.0.0.1/ | ||
| + | " | ||
| + | }; | ||
| + | listen-on-v6 port 53 { | ||
| + | ::1/128; | ||
| + | }; | ||
| + | managed-keys-directory "/ | ||
| + | memstatistics-file "/ | ||
| + | pid-file "/ | ||
| + | recursing-file "/ | ||
| + | recursive-clients 1000; | ||
| + | secroots-file "/ | ||
| + | server-id none; | ||
| + | stacksize default; | ||
| + | statistics-file "/ | ||
| + | tcp-clients 100; | ||
| + | tcp-listen-queue 10; | ||
| + | version "DNS - nausch.org"; | ||
| + | allow-recursion { | ||
| + | ::1/128; | ||
| + | 127.0.0.1/ | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | check-names master warn; | ||
| + | clients-per-query 10; | ||
| + | dnssec-enable yes; | ||
| + | dnssec-lookaside auto; | ||
| + | dnssec-validation auto; | ||
| + | edns-udp-size 4096; | ||
| + | lame-ttl 600; | ||
| + | max-cache-size 0; | ||
| + | max-cache-ttl 604800; | ||
| + | max-clients-per-query 100; | ||
| + | max-ncache-ttl 10800; | ||
| + | max-udp-size 4096; | ||
| + | minimal-responses no; | ||
| + | query-source address 0.0.0.0 port 0; | ||
| + | recursion yes; | ||
| + | allow-notify { | ||
| + | 127.0.0.1/ | ||
| + | }; | ||
| + | allow-query { | ||
| + | ::1/128; | ||
| + | 127.0.0.1/ | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | allow-transfer { | ||
| + | 127.0.0.1/ | ||
| + | " | ||
| + | }; | ||
| + | key-directory "/ | ||
| + | max-journal-size unlimited; | ||
| + | }; | ||
| + | controls { | ||
| + | inet 127.0.0.1 port 953 allow { | ||
| + | 127.0.0.1/ | ||
| + | } keys { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | acl " | ||
| + | 10.0.0.0/ | ||
| + | }; | ||
| + | acl " | ||
| + | 10.0.10.0/ | ||
| + | }; | ||
| + | acl " | ||
| + | 10.0.0.27/ | ||
| + | }; | ||
| + | acl " | ||
| + | 10.0.0.27/ | ||
| + | 10.0.10.27/ | ||
| + | }; | ||
| + | logging { | ||
| + | channel " | ||
| + | file " | ||
| + | severity dynamic; | ||
| + | print-time yes; | ||
| + | print-severity yes; | ||
| + | print-category yes; | ||
| + | }; | ||
| + | channel " | ||
| + | file " | ||
| + | severity info; | ||
| + | print-time yes; | ||
| + | print-severity yes; | ||
| + | print-category yes; | ||
| + | }; | ||
| + | channel " | ||
| + | file " | ||
| + | severity info; | ||
| + | print-time yes; | ||
| + | print-severity yes; | ||
| + | print-category yes; | ||
| + | }; | ||
| + | category " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | category " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | view " | ||
| + | match-clients { | ||
| + | " | ||
| + | }; | ||
| + | zone " | ||
| + | type hint; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | }; | ||
| + | view " | ||
| + | match-clients { | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | zone " | ||
| + | type hint; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | allow-update { | ||
| + | " | ||
| + | }; | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | zone " | ||
| + | type master; | ||
| + | file " | ||
| + | }; | ||
| + | }; | ||
| + | key " | ||
| + | algorithm " | ||
| + | secret " | ||
| + | }; | ||
| + | managed-keys { | ||
| + | " | ||
| + | " | ||
| + | };</ | ||
| + | |||
| + | ==== Neustart des Daemon ==== | ||
| + | Da mit der zuvor erstellten Konfiguration unseres Servers alles in Ordnung war, spricht nun nichts mehr dagegen, zur Aktivierung unserer Konfiguration den Daemon einmal durchzustarten. | ||
| + | # systemctl restart named-chroot.service | ||
| + | |||
| + | Den Status des laufenden Daemon fragen wir wie gewohnt wie folgt ab. | ||
| + | # systemctl status named-chroot.service | ||
| + | |||
| + | < | ||
| + | <font style=" | ||
| + | | ||
| + | | ||
| + | Process: 13221 ExecStop=/ | ||
| + | Process: 13324 ExecStart=/ | ||
| + | Process: 13322 ExecStartPre=/ | ||
| + | Main PID: 13327 (named) | ||
| + | | ||
| + | | ||
| + | |||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org named[13327]: | ||
| + | Dec 30 18:38:53 vml000027.dmz.nausch.org systemd[1]: Started Berkeley Internet Name Domain (DNS). | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Natürlich können wir den Status des DNS-servers auch mit Hilfe des Name Server Control Utility **rndc** abfragen. | ||
| + | # rndc status | ||
| + | < | ||
| + | CPUs found: 1 | ||
| + | worker threads: 1 | ||
| + | UDP listeners per interface: 1 | ||
| + | number of zones: 208 | ||
| + | debug level: 0 | ||
| + | xfers running: 0 | ||
| + | xfers deferred: 0 | ||
| + | soa queries in progress: 0 | ||
| + | query logging is OFF | ||
| + | recursive clients: 0/0/1000 | ||
| + | tcp clients: 0/100 | ||
| + | server is up and running</ | ||
| + | Zur weiteren Überprüfung und/oder ggf. nötigen Fehlersuche ist ein Blick in folgende Logdateien vorzunehmen: | ||
| + | * // | ||
| + | * // | ||
| + | * // | ||
| + | * // | ||
| + | ===== DNSsec ===== | ||
| + | \\ | ||
| FIXME //**... do gehda weida!**// FIXME | FIXME //**... do gehda weida!**// FIXME | ||