KEA DHCP DDNS Netzwerk und Serveradministration
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.