- configgen: input model shared by derivation and renderers - derive: forward zones per domain, reverse zones (IPv4 octet, IPv6 nibble boundaries), A/AAAA/PTR from static and manual_dhcp entries, Kea subnets with effective pools and reservations; pure and deterministic - bindgen: zone-statement include, options include, zone files with strict validation, canonical ordering and RFC 1035 TXT escaping - keagen: typed Kea DHCPv4 JSON with strict validation - golden-file, validation, determinism and fuzz tests - integration tests check generated files with real named-checkconf, named-checkzone (BIND 9.18, 9.20) and kea-dhcp4 -t (Kea 2.6, 3.2); new CI job Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
0004 – DNS-Engine BIND 9
- Status: Akzeptiert
- Datum: 2026-10-12
Kontext
Der Brief legt BIND 9 fest. Zu klären sind Mindestversion und die Art der Ansteuerung.
Entscheidung
- Mindestversion BIND 9.18 (ESV), getestet wird zusätzlich mit 9.20 (aktuelle stabile Linie). Entwicklungs-Compose nutzt
internetsystemsconsortium/bind9:9.20. - Ansteuerung ausschließlich über Dateien und
rndc:- Der Agent schreibt eine Include-Datei (
ddi-suite.conf) mit Zonen-, ACL-, Key- und Optionsblöcken sowie die Zonendateien der managed Zonen in ein eigenes Verzeichnis. Die distributionseigenenamed.confbindet nur diese Include-Datei ein. - Prüfung vor Aktivierung mit
named-checkconf -zundnamed-checkzone. - Aktivierung mit
rndc reconfig(neue/entfernte Zonen) bzw.rndc reload <zone>.
- Der Agent schreibt eine Include-Datei (
- Dynamische Zonen (RFC 2136): Der Agent legt nur den Zonenblock samt
update-policy/allow-updatean und schreibt eine Initial-Zonendatei nur, wenn noch keine existiert. Zonendatei und Journal werden danach nie überschrieben. - Kein
rndc addzone/catalog zonesin Version 1: Die Include-Datei ist vollständig generiert und damit deterministisch prüfbar. Katalogzonen sind eine mögliche spätere Optimierung für Secondaries. - Rekursion ist standardmäßig aus.
Nachträge
- 2026-10-13 (M2): Statt einer Include-Datei erzeugt der Generator zwei:
ddi-suite.conf(ACLs undzone-Blöcke, auf oberster Ebene eingebunden) undddi-suite-options.conf(Rekursion,allow-recursion,forwarders,allow-transfer), die innerhalb desoptions-Blocks der Distribution eingebunden wird. BIND erlaubt nur einenoptions-Block;includeist dort zulässig (Parser in 9.18/9.20: „include statements wherever a map body clause can occur“). Die Distributionskonfiguration darf diese Optionen dann nicht selbst setzen; das richtet der Installer (M6) ein. Dynamische Zonen brauchen Schreibrechte vonnamedauf das Zonenverzeichnis (Journale).
Konsequenzen
- Distributionspakete reichen auf Debian 12/13 und Ubuntu 22.04/24.04 (alle ≥ 9.18). Auf RHEL 9 ist die Paketlage (
bind9.16 vs.bind9.18) in M6 zu prüfen. rndc-Schlüssel wird bei der Installation erzeugt, nur fürnamedund den Agent-Benutzer lesbar.