Files
DDI/docs/adr/0004-dns-engine-bind9.md
T
beug.k@beugsiud.deandClaude Opus 5.5 3564686db0 feat(configgen): BIND and Kea configuration generator with integration tests
- 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>
2026-10-13 14:19:25 +02:00

2.2 KiB
Raw Blame History

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 distributionseigene named.conf bindet nur diese Include-Datei ein.
    • Prüfung vor Aktivierung mit named-checkconf -z und named-checkzone.
    • Aktivierung mit rndc reconfig (neue/entfernte Zonen) bzw. rndc reload <zone>.
  • Dynamische Zonen (RFC 2136): Der Agent legt nur den Zonenblock samt update-policy/allow-update an und schreibt eine Initial-Zonendatei nur, wenn noch keine existiert. Zonendatei und Journal werden danach nie überschrieben.
  • Kein rndc addzone/catalog zones in 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 und zone-Blöcke, auf oberster Ebene eingebunden) und ddi-suite-options.conf (Rekursion, allow-recursion, forwarders, allow-transfer), die innerhalb des options-Blocks der Distribution eingebunden wird. BIND erlaubt nur einen options-Block; include ist 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 von named auf 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 (bind 9.16 vs. bind9.18) in M6 zu prüfen.
  • rndc-Schlüssel wird bei der Installation erzeugt, nur für named und den Agent-Benutzer lesbar.