KEA DHCP DDNS Netzwerk und Serveradministration

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Dynamisches DNS mit Kea und BIND9

Diese Anleitung beschreibt die Verknüpfung von Kea DHCPv4 mit einem BIND9 Nameserver (10.88.213.21) über den Kea-DHCP-DDNS Daemon unter Verwendung von TSIG-Keys.

Technischer Ablauf und Theorie

Das Dynamic DNS (DDNS) Update sorgt für die automatische Synchronisation zwischen DHCP-Leases und DNS-Records.

  • Der Client sendet beim DHCP-Request seinen Hostnamen (Option 12).
  • Kea-DHCPv4 weist eine IP zu und generiert einen Name Change Request (NCR).
  • Durch das qualifying-suffix wird der Hostname zum Fully Qualified Domain Name (FQDN) ergänzt (z.B. client.it213.int).
  • Der Kea-DHCP-DDNS Daemon empfängt den NCR auf Port 53001, signiert ihn mit dem TSIG-Key und sendet ein Update-Paket an den BIND9-Server.
  • BIND9 prüft die Signatur (allow-update) und aktualisiert Forward-Zone (A-Record) sowie Reverse-Zone (PTR-Record).

Konfiguration des Nameservers

Auf dem Nameserver (ns.it213.int) wird der TSIG-Key erstellt und den Zonen zugewiesen.

  • Key erzeugen:

cd /etc/bind tsig-keygen -a HMAC-SHA256 it213.key >> /etc/bind/named.conf.local

  • Zonenkonfiguration anpassen:

cat /etc/bind/named.conf.local

key "it213.key" {

   algorithm hmac-sha256;
   secret "Y8zioRKf3L0lWlhZ5FReSdegcnWVD53IIqT9PPle5cU=";

};

zone "it213.int" {

   type master;
   file "/var/cache/bind/it213.int";
   allow-update { key "it213.key"; };

};

zone "213.88.10.in-addr.arpa" {

   type master;
   file "/var/cache/bind/213.88.10.in-addr.arpa";
   allow-update { key "it213.key"; };

};

zone "213.26.172.in-addr.arpa" {

   type master;
   file "/var/cache/bind/213.26.172.in-addr.arpa";
   allow-update { key "it213.key"; };

};

  • Dienst neu starten:

systemctl restart bind9

Konfiguration des Kea Servers

  • Installation des DDNS-Dienstes:

sudo apt update sudo apt install kea-dhcp-ddns-server

  • Konfiguration DHCPv4 (/etc/kea/kea-dhcp4.conf):

{

 "Dhcp4": {
   "interfaces-config": {
     "interfaces": [ "enp0s3" ]
   },
   "dhcp-ddns": {
     "enable-updates": true,
     "server-ip": "127.0.0.1",
     "server-port": 53001
   },
   "ddns-send-updates": true,
   "ddns-override-no-update": true,
   "ddns-override-client-update": true,
   "ddns-update-on-renew": true,
   "ddns-qualifying-suffix": "it213.int",
   "subnet4": [
     {
       "id": 1,
       "subnet": "172.26.213.0/24",
       "pools": [ { "pool": "172.26.213.100 - 172.26.213.200" } ],
       "reservations": [
         {
           "hw-address": "08:00:27:5d:76:5d",
           "ip-address": "172.26.213.99",
           "hostname": "client"
         }
       ]
     }
   ],
   "loggers": [
     {
       "name": "kea-dhcp4",
       "output_options": [ { "output": "/var/log/kea/kea-dhcp4.log" } ],
       "severity": "INFO"
     }
   ]
 }

}

  • Konfiguration DDNS-Daemon (/etc/kea/kea-dhcp-ddns.conf):

{

 "DhcpDdns": {
   "ip-address": "127.0.0.1",
   "port": 53001,
   "tsig-keys": [
     {
       "name": "it213.key",
       "algorithm": "HMAC-SHA256",
       "secret": "Y8zioRKf3L0lWlhZ5FReSdegcnWVD53IIqT9PPle5cU="
     }
   ],
   "forward-ddns": {
     "ddns-domains": [
       {
         "name": "it213.int.",
         "key-name": "it213.key",
         "dns-servers": [ { "ip-address": "10.88.213.21" } ]
       }
     ]
   },
   "reverse-ddns": {
     "ddns-domains": [
       {
         "name": "213.88.10.in-addr.arpa.",
         "key-name": "it213.key",
         "dns-servers": [ { "ip-address": "10.88.213.21" } ]
       },
       {
         "name": "213.26.172.in-addr.arpa.",
         "key-name": "it213.key",
         "dns-servers": [ { "ip-address": "10.88.213.21" } ]
       }
     ]
   },
   "loggers": [
     {
       "name": "kea-dhcp-ddns",
       "output_options": [ { "output": "/var/log/kea/kea-ddns.log" } ],
       "severity": "INFO"
     }
   ]
 }

}

Restart und Debugging

  • Dienste neu starten:

systemctl restart kea-dhcp4-server kea-dhcp-ddns-server

  • Fehleranalyse:

Bei Problemen das Logging auf "severity": "DEBUG" und "debuglevel": 99 setzen. Logs live einsehen: tail -f /var/log/kea/kea-dhcp4.log tail -f /var/log/kea/kea-ddns.log

  • Überprüfung der Einträge im DNS:

dig @10.88.213.21 client.it213.int dig @10.88.213.21 -x 172.26.213.99

Wichtige Hinweise

  • Schreibrechte: BIND benötigt Schreibrechte im Verzeichnis /var/cache/bind/ für die Journal-Dateien (.jnl).
  • Suffix: Ohne ddns-qualifying-suffix in der kea-dhcp4.conf schlägt der Zonen-Match im DDNS-Daemon fehl.
  • AppArmor: Bei Zugriffsproblemen (Unable to open file) AppArmor-Profile prüfen oder deaktivieren.