DNS Replication with bind9 in Debian 10

Am Master sollte der Slave in der named.conf.local eingetragen werden. Der Eintrag sieht dann folgendermaßen aus.

zone "server1.com" {
        type master;
        allow-transfer{
       192.168.1.2;
        };  
        file "/etc/bind/server1.com.db";
};

Zum Erstellen eines zweiten Servers zur DNS Replikation muss am 2. Server in der Datei named.conf.local eine Slave Zone angelegt werden. Der Eintrag sieht folgendermaßen aus.

zone "server1.com" {
        type slave;
        masters{
       192.168.1.1;
        };  
        file "/var/cache/bind/server1.com.db";
};

Die IP Adresse des Masters Servers muss mit der IP des ersten DNS Server ausgetauscht werden. Sollen die Zonen übertragen werden so muss am ersten Server im Zonenfile die Seriennummer erhöht werden. Die Seriennummer besteht aus dem aktuellen Datum plus fortlaufende Nummer. Es ist der erste Eintrag im SOA Record.

Hat man die Änderungen am Master Server vorgenommen so muss der Dienst neu gestartet werden oder mittels rndc reload server1.com die Zone neu geladen werden. Möchte man den Transfer der Zonen automatisieren so kann man das in der Datei named.conf.optionseinstellen.

Der Eintrag sieht folgendermaßen aus:

  also-notify {192.168.1.2;};

Als IP Adresse muss hier die IP Adresse des Slave Servers eingetragen werden. - Ändert man nun am Master die Konfiguration, z.B. man erstellt eine neue IP so wird nach dem neu laden der Konfiguration der Zoneneintrag selbständig an den Slave übertragen.

Die Fehlersuche erfolgt in der Datei /var/log/syslog.

Möchte man seine DNS Server gegen Zonentransfers von nicht authorisierten DNS Servern absichern so ist das mit dnssec möglich. - Als ersten Schritt muss hier mittels des dnssec-keygen ein Schlüssel erstellt werden. - Der Befehl wird folgendermaßen aufgerufen:

dnssec-keygen -a hmac-md5 -b 256 -n HOST test.file

Dieser Schlüssel muß am Master installiert werden. Das geschieht mit diesem Befehl.

key master {
    algorithm    hmac-md5;
    secret       "yVisaOhpnWZEGaD4g+DKwg==";
};

Sollte hmac-md5 nicht mehr verfügbar sein so kann mit dem Befehl rndc-confgen ein Schlüssel erstellt werden. Der Output des Befehls sieht wie folgt aus und kann in die named.conf oder in die named.conf.options eingefügt werden. - Achtung wenn in der named.conf.options dann ausserhalb der options!

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "7L3Mt3l/lm1nwBUICWgprA==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

In den named.conf.options wird nun noch der key unter allow-transfer eingetragen.

allow-transfer  { key master; };

Zusätzlich muss bei den allgemeinen Einstellungen dnssec aktiviert werden. Das kann mit folgenden Befehlen eingestellt werden.

dnssec-enable yes;
dnssec-validation yes;

Damit die Schüssel übertragen werden können muss jetzt noch in der named.conf.options der jeweils andere Server mit dem Schlüssel eingetragen werden. Der Eintrag erfolgt ausserhalb der options.

server 192.168.1.1{
    keys { master; };
}

Sollte alles richtig konfiguriert sein so sollten die Zonen wieder automatisch übertragen werden. Zum testen sollte der Schlüssel einmal geändert werden damit man sieht das die Übertragung nicht mehr funktioniert. Sollte das der Fall sein so findet man einen TSIG Error in der syslog. Achtung ab Debian 12 muss der Fehler in journalctl -f gesucht werden.