Installation DNS-Cluster mit Bind (Ubuntu 22.04)

Hallo Freunde der Sonne,

manchmal wäre es doch schön, nicht nur blind mit IP-Adressen zu arbeiten oder? Hab ich mir auch gedacht.

Installation DNS-Cluster mit Bind (Ubuntu 22.04)

Quellen

Installation

Wir starten Mal wieder einfach, die Installation muss auf beiden Server durchgeführt werden.

apt install -y bind9 bind9-utils
systemctl enable named
systemctl restart named

Bitte kontrollieren, ob die /etc/bind/named.conf wie folgt aussieht:

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

Master-Server (Admin der Zonen)

Zonendefinitionen auf dem Master-Server per /etc/bind/named.conf.default-zones,
eine Forward- und eine Reverse-Lookup-Zone.

zone "localhost" {
   type master;
   file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
   type master;
   file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
   type master;
   file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
   type master;
   file "/etc/bind/db.255";
};

zone "subdomain.domain.tld" {
   type master;
   file "/etc/bind/db.subdomain.domain.tld";
};

zone "1.10.in-addr.arpa" {
   type master;
   file "/etc/bind/db.1.10";
};

Danach konfigurieren wir den Master-Server über die /etc/bind/named.conf.options,
konfiguriert werden sollte:

  • wer ist der NextHop der DNS-Anfragen (im Beispiel die Google-DNS-Server)
  • welcher Netzwerkbereich, darf den Server abfragen
  • welcher Netzwerkbereich, darf sich Zonen-Kopien ziehen (etwas umfangreich bei mir)
  • auf welchem Interface soll der Dienst lauschen
options {
   directory "/var/cache/bind";

   allow-query { localhost; 10.1.0.0/16; }; ## RANGE ##
   allow-transfer { localhost; 10.1.0.0/16; }; ## SLAVE ##

   forwarders {
       8.8.8.8;
       8.8.4.4;
   };

   dnssec-validation auto;

   listen-on { 10.1.130.1; };
   // listen-on-v6 { any; };
};

Slave-Server (Hosting der Zonen-Kopien)

Zonendefinitionen auf dem Slave-Server per /etc/bind/named.conf.local

zone"subdomain.domain.tld" {
   type slave;
   file "/var/lib/bind/db.subdomain.domain.tld";
   masters { 10.1.130.1; };
};

zone"1.10.in-addr.arpa" {
   type slave;
   file "/var/lib/bind/db.1.10";
   masters { 10.1.130.1; };
};

Nun zur Konfiguration des Slave-Server über die /etc/bind/named.conf.options,
hier konfigurieren wir:

  • wer ist der NextHop der DNS-Anfragen
  • welcher Netzwerkbereich, darf den Server abfragen
  • welcher Netzwerkbereich, darf sich Zonen-Kopien ziehen (hier nur der Master hinterlegt)
  • auf welchem Interface soll der Dienst lauschen
options {
directory "/var/cache/bind";

allow-query { localhost; 10.1.0.0/16; }; ## RANGE ##
allow-transfer { localhost; 10.1.130.1; }; ## SLAVE ##

forwarders {
8.8.8.8;
8.8.4.4;
};


dnssec-validation auto;

listen-on { 10.1.130.2; };
// listen-on-v6 { any; };
};

Zoneninhalte definieren

Die Zonen werden selbstverständlich auf dem Master gepflegt.
bei der Definition der Zone haben wir oben immer eine Datei mit angegeben, diese sollte sich wie folgt aufbauen.

Forward-Zone (Name in IP) – /etc/bind/db.subdomain.domain.tld

Definiert wurde folgendes:

  • Autorisierte Server
  • Zeiteinstellungen der Zone wie TTL
  • Namen der DNS-Server
  • Mailserver der Domäne (MX-Record)
  • IP-Adressen der Zone selbst (IP-Adressen der DNS-Server, könnte aber auch der Webserver werden)
  • Nameserver der Zone (A-Records)
;; db.subdomain.domain.tld
;; Forwardlookupzone für subdomain.domain.tld
;;
$TTL 2D
@ IN SOA server1.subdomain.domain.tld. server2.subdomain.domain.tld. (
2022091601 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; NX (TTL Negativ Cache)

@ IN NS server1.subdomain.domain.tld.
@ IN NS server1.subdomain.domain.tld.
IN MX 10 mailserver.domain.tld.
IN A 10.1.130.1
IN A 10.1.130.2

server1 IN A 10.1.130.1
server2 IN A 10.1.130.2

Reverse-Zone (IP in Name) – /etc/bind/db.1.10

;; db.1.10
;; Reverselookupzone für 10.1.0.0/16
;;
$TTL 2D
@ IN SOA server1.subdomain.domain.tld. server2.subdomain.domain.tld. (
2022091601 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
3H ) ; TTL Negative Cache

@ IN NS server1.subdomain.domain.tld.
@ IN NS server2.subdomain.domain.tld.

1.130 IN PTR server1.subdomain.domain.tld.
2.130 IN PTR server2.subdomain.domain.tld.