Internet und Hostinglösungen
  • Werbung
  • Schlagwörter

Bind9 Master und Slave Domain Name System Server Zonentransfer einrichten

Vorwort


Ich erkläre Ihnen hier, wie Sie Bind9 als DNS Server für den Zonentransfer einrichten. Ich verwende als Betriebssystem Debian 8 Jessie. Der Master-Server hat die IP-Adresse 10.48.42.1 und die Slaves die IP-Adressen 10.48.42.11 bis 10.48.42.14.

Installation


Zuerst sollten Sie die Bind DNS-Server Software auf Ihren Servern installieren. Führen Sie folgenden Befehl auf dem Master und auf den Slave Server(n) aus:
apt-get install -y bind9


Konfiguration


Erstellen Sie nun ein Verzeichnis für die Zonendateien und passen Sie die Berechtigungen an:
mkdir /etc/bind/zones/ && chown bind:bind /etc/bind/zones/

Nun können Sie fals erwünscht, eine Logdatei erstellen und die Berechtigungen anpassen:
touch /var/log/bind.log
chown bind:bind /var/log/bind.log

Master


Öffnen Sie Konfigurationsdatei named.conf mit einem Editor Ihrer wahl:
nano /etc/bind/named.conf

Fügen Sie am Ende er Konfiguration folgende Zeilen ein:
include "/etc/bind/rndc.key";
include "/etc/bind/nsp.conf";

Die Konfigurationsdatei sieht dann aus wie folgt:
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

include "/etc/bind/rndc.key";
include "/etc/bind/nsp.conf";

Öffnen Sie nun die Konfigurationsdatei named.conf.options:
nano /etc/bind/named.conf.options

Kopieren Sie die folgenden Zeilen und passen Sie die IP-Adressen an Ihre Infratruktur an:
	// 2013-07-05 by Kevin Bühl
dnssec-enable yes;
dnssec-lookaside auto;
allow-recursion { 127.0.0.1; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; ::1; };
minimal-responses yes; // optional - improved performance
additional-from-auth no; // optional - improved performance
additional-from-cache no; // optional - minimal performance change
// Slave DNS Servers
also-notify {
10.48.42.11;
10.48.42.12;
10.48.42.13;
10.48.42.14;
};

Um das Logging zu aktivieren fügen Sie am Ende der named.conf.options folgende Zeilen ein:
logging
{
channel security_log
{
file "/var/log/bind.log" versions 3 size 20m;
severity dynamic;
print-time yes;
};

category security
{
security_log;
};
};

Die Konfiguration sieht dann aus wie folgt:
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
// 2013-07-05 by Kevin Bühl
dnssec-enable yes;
dnssec-lookaside auto;
allow-recursion { 127.0.0.1; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; ::1; };
minimal-responses yes; // optional - improved performance
additional-from-auth no; // optional - improved performance
additional-from-cache no; // optional - minimal performance change
// Slave DNS Servers
also-notify {
10.48.42.11;
10.48.42.12;
10.48.42.13;
10.48.42.14;
};
};
logging
{
channel security_log
{
file "/var/log/bind.log" versions 3 size 20m;
severity dynamic;
print-time yes;
};

category security
{
security_log;
};
};

Sie Zonen werden in der Konfigurationsdatei nsp.conf gespeichert.
nano /etc/bind/nsp.conf

Diese hat folgenden Inhalt:
acl slaves {
10.48.42.11;
10.48.42.12;
10.48.42.13;
10.48.42.14;
};

zone "4b42.com" {
type master;
file "/etc/bind/zones/4b42.com";
allow-transfer { slaves; };
};

Passen Sie die Berechitungen für die Dateien und Verzeichnise an:
chown www-data:bind /etc/bind/zones
chown www-data:bind /etc/bind/rndc.key
chown www-data:bind /etc/bind/nsp.conf

Sollten Sie DNSSEC verwenden, führen Sie folgende Befehle ebenfalls aus:
mkdir /etc/bind/keys/
chown www-data:bind /etc/bind/keys/

Slave


Zuerst sollten Sie den rndc Schlüssel aus der rndc.key Datei auslesen:
cat /etc/bind/rndc.key

key "rndc-key" {
algorithm hmac-md5;
secret "4b424b424b424b424b424b424b424b424b424b424b4=";
};

Melden Sie sich an der Konsole eines Slave DNS-Servers an. Un öffnen Sie die rndc.key Datei mit einem Editor:
nano /etc/bind/rndc.key

Kopieren Sie den rndc-key des Master-Servers in die Datei:
key "rndc-key" {
algorithm hmac-md5;
secret "4b424b424b424b424b424b424b424b424b424b424b4=";
};

Öffnen Sie nun die named.conf Datei:
nano /etc/bind/named.conf

Fügen Sie am Ende folgende Zeilen ein:
include "/etc/bind/rndc.key";
server 10.48.42.1 {
keys { rndc-key; };
};
controls {
inet * port 953 allow { 127.0.0.1; 10.48.42.1; } keys { rndc-key; };
};

Passen Sie nun die named.conf.options an:
nano /etc/bind/named.conf.options

Fügen Sie hier folgende Zeilen ein:
	dnssec-enable yes;
allow-new-zones yes;
allow-recursion { 127.0.0.1; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };
zone-statistics yes;

Um das Logging zu aktivieren fügen Sie am Ende der named.conf.options folgende Zeilen ein:
logging
{
channel security_log
{
file "/var/log/bind.log" versions 3 size 20m;
severity dynamic;
print-time yes;
};

category security
{
security_log;
};
};


Logrotate


Damit die älternen Eintrage aus der Logdatei verschwinden, sollte bind auch in logrotate eingetragen werden:
nano /etc/logrotate.d/bind

/var/log/bind.log
{
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0664 bind root
postrotate
/etc/init.d/bind9 reload > /dev/null
endscript
}


Abschluss und Funktionskontrolle


Starten Sie nun den Bind9 DNS-Server auf allen Systemen neu (Master und Slaves):
/etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.

Prüfen Sie ob die die Konfiguration und Zonen des Slave DNS-Servers neuladen können:
rndc -b 10.48.42.1 -s 10.48.42.11 reload
server reload successful


Administration von Zonen


Zone auf Slave hinzufügen


Führen Sie folgenden Befehl auf dem Master-Server aus.
rndc -s 10.48.42.11 addzone 4b42.com '{ type slave; file "/etc/bind/zones/4b42.com"; masters { 10.48.42.1; }; allow-transfer { 10.48.42.1; }; };'

Zone auf Slave löschen


Führen Sie folgenden Befeh lauf dem Master-Server aus.
rndc -s 10.48.42.11 delzone 4b42.com


Einträge mit nsupdate aktualisieren


Erstellen Sie einen Schlüssel:
dnssec-keygen -a HMAC-MD5 -b 512 -n HOST web

Dieser Vorgang kann ein paar Minuten dauern.
Kweb.+157+60439

Lesen Sie Ihren Schlüssel aus:
cat Kweb.+157+60439.private|grep Key


nano /etc/bind/named.conf
key "web" {
algorithm hmac-md5;
secret "ABCDEFGH==";
};


nano /etc/bind/nsp.conf
zone "4b42.com" {
type master;
file "/etc/bind/zones/4b42.com";
allow-transfer { slaves; };
allow-update { key "web"; };
};


nsupdate -k Kweb.+157+26743.private

server localhost
zone 4b42.com
update add www.4b42.com 86400 a 188.165.2.254
send



Proleme und Lösungen


Einstellungen für interne und lokale DNS Server


Ich verwende auf den meisten Servern Bind9 als lokaler DNS Server. Versuchen Sie mit der obenstehenden Konfiguration externe Domainnamen aufzulösen erhalten Sie folgende Antwort:
nslookup ftp.debian.org

Server:		127.0.0.1
Address: 127.0.0.1#53

** server can't find ftp.debian.org: REFUSED

Damit Sie Ihren DNS Server intern verwenden können öffnen Sie die named.conf.options Datei und passen Sie diese wie folgt an:
nano /etc/bind/named.conf.options
recursion no;
durch
allow-recursion { 127.0.0.1; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };
ersetzen.