Fix: 'host-name'-Option kollidierte mit dem nativen Reservierungs-Hostname

Der Nutzer fragte zu Recht nach, ob eine Reservierung mit gleichzeitig
gesetztem hostname-Feld (aus dem Namen abgeleitet, z.B. 'unraid') UND
einem option-data-Override fuer 'host-name' (Code 12, z.B. 'test') so
beabsichtigt ist. Laut Kea-Dokumentation beantwortet Kea die Host-Name-
Anfrage eines Clients bei einer Reservierung automatisch mit deren
eigenem hostname-Feld -- der zusaetzliche Options-Override fuer dieselbe
Option war eine unbeabsichtigte Dopplung/Quelle fuer Widersprueche, keine
zusaetzliche Funktion.

'host-name' aus den 56 verbleibenden Standard-Optionen entfernt (war eine
von 57), neue Migration v3 loescht eine bereits geseedete/gesetzte
host-name-Zeile samt Wert aus bestehenden Installationen nach. Live auf
der Test-VM verifiziert: Option ist verschwunden, die 'unraid'-Reservierung
enthaelt jetzt nur noch hw-address/ip-address/hostname ohne option-data,
kea-dhcp4 -t weiterhin erfolgreich.
This commit is contained in:
2026-08-11 16:53:33 +02:00
parent 255308f81b
commit d3cf78592f
2 changed files with 52 additions and 26 deletions
+24 -18
View File
@@ -271,27 +271,33 @@ der aktiv weiterentwickelte Nachfolger und bildet „globaler Wert, pro Client
kein "ungültig", da das Fehlen des Netzes hier Absicht ist), statt es
jedes Mal neu anlegen zu müssen.
- **DHCP-Options** (`dhcp_option_defs`/`dhcp_option_values`): eine kuratierte
Auswahl an **57 Standard-Optionen** (analog den „Vordefinierten Optionen“
eines Windows-DHCP-Servers — u.a. Hostname erzwingen, NTP-/WINS-/TFTP-/
SMTP-Server, Boot-Datei, Domain-Search, IP-Forwarding) ist automatisch
vorbefüllt und **nicht löschbar** (Backend lehnt es ab, UI zeigt statt
eines Löschen-Buttons ein Schloss-Symbol) — Router/DNS-Server/Domain-Name/
Lease-Zeiten sind bewusst ausgenommen, da dafür bereits eigene, dedizierte
Felder existieren (Subnetze bzw. globale Einstellungen oben); ebenso
client-/protokollinterne Optionen (message-type, parameter-request-list,
Auswahl an **56 Standard-Optionen** (analog den „Vordefinierten Optionen“
eines Windows-DHCP-Servers — u.a. NTP-/WINS-/TFTP-/SMTP-Server, Boot-Datei,
Domain-Search, IP-Forwarding) ist automatisch vorbefüllt und **nicht
löschbar** (Backend lehnt es ab, UI zeigt statt eines Löschen-Buttons ein
Schloss-Symbol) — Router/DNS-Server/Domain-Name/Lease-Zeiten sind bewusst
ausgenommen, da dafür bereits eigene, dedizierte Felder existieren
(Subnetze bzw. globale Einstellungen oben); ebenso client-/
protokollinterne Optionen (message-type, parameter-request-list,
requested-address, ...), die serverseitig nicht sinnvoll setzbar sind.
Alle 57 Namen sind live gegen eine echte Kea-2.4.1-Instanz verifiziert
(`kea-dhcp4 -t`, jede Option einzeln getestet — u.a. „host-name“ mit
Bindestrich statt „hostname“ als Kea-Name richtiggestellt). Standard-
Optionen bekommen bewusst **kein eigenes `option-def`** in der generierten
Konfiguration — Kea kennt sie bereits nativ, eine Neudefinition würde die
eingebaute duplizieren; nur zusätzlich angelegte, wirklich eigene/
herstellerspezifische Options (z.B. eine Terminal-Boot-URL) bekommen eines
und bleiben frei löschbar.
„host-name“ (12) ist ebenfalls bewusst **nicht** enthalten (war es
zwischenzeitlich, wurde aber wieder entfernt): Kea beantwortet die
Host-Name-Anfrage eines Clients bei einer Reservierung bereits automatisch
über deren eigenes `hostname`-Feld (aus dem Namen der Reservierung
abgeleitet) — ein zusätzlicher `option-data`-Override für dieselbe Option
wäre laut Kea-Dokumentation eine Dopplung und Quelle für Widersprüche,
live an einer echten Reservierung mit beiden gleichzeitig gesetzten
Werten nachvollzogen. Alle verbleibenden Namen sind live gegen eine echte
Kea-2.4.1-Instanz verifiziert (`kea-dhcp4 -t`, jede Option einzeln
getestet). Standard-Optionen bekommen bewusst **kein eigenes
`option-def`** in der generierten Konfiguration — Kea kennt sie bereits
nativ, eine Neudefinition würde die eingebaute duplizieren; nur
zusätzlich angelegte, wirklich eigene/herstellerspezifische Options (z.B.
eine Terminal-Boot-URL) bekommen eines und bleiben frei löschbar.
In der Tabelle sind grundsätzlich nur **tatsächlich genutzte** Options
sichtbar (eigene immer, Standard-Optionen nur mit gesetztem globalen Wert)
— weitere Standard-Optionen kommen über ein Dropdown „+ Standard-Option
hinzufügen“ dazu, statt alle 57 dauerhaft als leere Zeilen anzuzeigen.
hinzufügen“ dazu, statt alle 56 dauerhaft als leere Zeilen anzuzeigen.
Jede Option hat einen **globalen** Wert sowie optional einen **Wert pro
Client** — ein Client-Override überschreibt den globalen Wert
ausschließlich für dieses eine Gerät (technisch: globale Werte landen im
@@ -301,7 +307,7 @@ der aktiv weiterentwickelte Nachfolger und bildet „globaler Wert, pro Client
gesetztem Override sind sichtbar, weitere kommen über ein Dropdown dazu.
Das ausgewählte Feld wird dabei direkt unter das Dropdown verschoben und
fokussiert, statt an seiner ursprünglichen Stelle irgendwo in der u.U.
langen Liste (bis zu 57 mögliche Options) zu erscheinen — sonst lag es
langen Liste (bis zu 56 mögliche Options) zu erscheinen — sonst lag es
oft außerhalb des sichtbaren Modal-Ausschnitts und wirkte, als wäre nichts
passiert (live genau so reproduziert und behoben).
- **Reservierungen aus zwei Quellen**: automatisch für jedes aktive Gerät mit