DHCP: Backend auf Kea umgestellt, eigene Options (global + pro Client), echte Install-/Dienststeuerung
- Backend-Wechsel von isc-dhcp-server (seit 2022 EOL) auf Kea DHCP (kea-dhcp4-server) — aktiv weiterentwickelt, bildet "globaler Wert, pro Client überschreibbar" nativ über Kea-Reservation-Option-Data ab. - Neue Tabellen dhcp_option_defs/dhcp_option_values: eigene/herstellerspezifische Options mit Code/Name/Typ/Beschreibung, Wert global sowie optional pro Client (device_mac="" für global, siehe Kommentar zur SQLite-NULL- UNIQUE-Falle). UI dafür: Optionen-Tabelle + "Neue Option"-Modal + Pro-Client-Overrides-Modal je Reservierung. - Kea-JSON-Generator (_render_kea_config): option-def für jede eigene Option, globale Werte im Top-Level option-data, Client-Overrides im option-data der jeweiligen Reservierung. - Reservierungen werden jetzt zusätzlich auf Zugehörigkeit zum konfigurierten Subnet gefiltert (_dhcp_reservation_candidates) — beim Live-Test gegen echtes Kea gefunden: Kea lehnt Reservierungen außerhalb ihres Subnets als Konfigurationsfehler ab, das muss also schon bei der Generierung berücksichtigt werden statt erst beim Laden zu crashen. - Neue, einzeln bestätigte Aktionen: "kea-dhcp4-server installieren" (apt-get), "Aktivieren & (neu) starten" sowie "Stoppen" (systemctl) — bewusst getrennt von "Konfiguration speichern"/"In Datei schreiben". - Live gegen eine echte, frisch installierte Kea-3.0.3-Instanz verifiziert: Installation erfolgreich, generierte Config besteht "kea-dhcp4 -t", Dienst übernimmt sie beim Neustart fehlerfrei (DHCP4_CONFIG_COMPLETE), globaler Options-Wert und Client-Override erscheinen korrekt getrennt. Danach wieder gestoppt; Paket bleibt installiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -212,36 +212,59 @@ sich per SSH mit einem Switch verbindet: dem Web-Terminal (Verbindungstest),
|
||||
`expect`-Aufrufen in `poe.sh` selbst (`ssh -p <port> ...`) für automatische
|
||||
wie manuelle PoE-Neustarts.
|
||||
|
||||
## DHCP-Reservierungen (Systemeinstellungen → DHCP)
|
||||
## DHCP-Reservierungen & eigene Options (Systemeinstellungen → DHCP)
|
||||
|
||||
Erzeugt aus den vorhandenen Client-Stammdaten (MAC + IP + Name) automatisch
|
||||
feste DHCP-Reservierungen, ohne die Daten ein zweites Mal pflegen zu müssen.
|
||||
Eigenes Rechtepaar `settings_dhcp.view`/`settings_dhcp.edit`, gespiegelt in
|
||||
der Navbar unter Einstellungen.
|
||||
feste DHCP-Reservierungen inkl. eigener/herstellerspezifischer Options, ohne
|
||||
die Daten ein zweites Mal pflegen zu müssen. Eigenes Rechtepaar
|
||||
`settings_dhcp.view`/`settings_dhcp.edit`, gespiegelt in der Navbar unter
|
||||
Einstellungen.
|
||||
|
||||
- **Status-Erkennung** (rein lesend): prüft per `shutil.which("dhcpd")` und
|
||||
`systemctl is-active isc-dhcp-server`, ob ein ISC-DHCP-Server installiert
|
||||
bzw. aktiv ist. Die App installiert und startet **nie selbst** einen
|
||||
DHCP-Dienst — ist keiner gefunden, zeigt die Seite lediglich den passenden
|
||||
manuellen Befehl (`sudo apt-get install isc-dhcp-server`) an. Grund: ein
|
||||
unerwartet aktiver oder fehlkonfigurierter DHCP-Server kann ein ganzes
|
||||
Netzwerksegment stören, das soll ausschließlich eine bewusste,
|
||||
eigenständige Admin-Entscheidung außerhalb der App bleiben.
|
||||
**Backend: Kea DHCP** (`kea-dhcp4-server`), nicht das ältere
|
||||
`isc-dhcp-server` — ISC hat isc-dhcp-server 2022 als EOL erklärt, Kea ist
|
||||
der aktiv weiterentwickelte Nachfolger und bildet „globaler Wert, pro Client
|
||||
überschreibbar“ nativ ab (siehe unten).
|
||||
|
||||
- **Status-Erkennung** (rein lesend): `shutil.which("kea-dhcp4")` +
|
||||
`systemctl is-active`/`is-enabled`. Zeigt Version, Lauf- und
|
||||
Autostart-Status.
|
||||
- **Installation & Dienststeuerung**: eigene, jeweils einzeln bestätigte
|
||||
Buttons — „kea-dhcp4-server installieren“ (`apt-get install -y`),
|
||||
„Aktivieren & (neu) starten“ (`systemctl enable` + `restart`) und
|
||||
„Stoppen“. Bewusst **nicht** automatisch an „Konfiguration speichern“
|
||||
oder „In Datei schreiben“ gekoppelt — ein unerwartet aktiver oder
|
||||
fehlkonfigurierter DHCP-Server kann ein ganzes Netzsegment stören, jede
|
||||
dieser Aktionen soll ein bewusster, separater Klick bleiben.
|
||||
- **Konfiguration**: Interface, Subnet, Netzmaske, Range, DNS-Server,
|
||||
Domain, Lease-Zeiten sowie der Ausgabepfad der generierten Datei — als
|
||||
`dhcp_*`-Schlüssel in der bestehenden `settings`-Tabelle gespeichert.
|
||||
- **Reservierungen**: für jedes aktive Gerät mit gültiger MAC + IP wird ein
|
||||
`host { hardware ethernet ...; fixed-address ...; }`-Block erzeugt; der
|
||||
Domain, Lease-Zeiten sowie der Ausgabepfad der generierten Kea-Config
|
||||
(Standard: die aktive `/etc/kea/kea-dhcp4.conf`) — als `dhcp_*`-Schlüssel
|
||||
in der bestehenden `settings`-Tabelle gespeichert.
|
||||
- **Eigene Options** (`dhcp_option_defs`/`dhcp_option_values`, analog den
|
||||
„Vordefinierten Optionen und Werten“ eines Windows-DHCP-Servers): Code,
|
||||
Name, Kea-Datentyp und Beschreibung frei definierbar (z.B. herstellerspezifische
|
||||
Options wie eine Terminal-Boot-URL). 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 Top-Level `option-data`, Overrides im
|
||||
`option-data` der jeweiligen Kea-Reservierung, was Kea automatisch pro
|
||||
Client Vorrang geben lässt).
|
||||
- **Reservierungen**: für jedes aktive Gerät mit gültiger MAC + IP **innerhalb
|
||||
des konfigurierten Subnets** wird eine Kea-Reservierung erzeugt; der
|
||||
Hostname wird aus dem Gerätenamen abgeleitet (nur `a-z0-9-`, Kollisionen
|
||||
bekommen automatisch ein `-2`/`-3`-Suffix). Geräte ohne MAC/IP werden mit
|
||||
Hinweis übersprungen statt eine kaputte Reservierung zu erzeugen.
|
||||
bekommen automatisch ein `-2`/`-3`-Suffix). Geräte ohne MAC/IP oder mit
|
||||
einer IP außerhalb des Subnets werden mit Hinweis übersprungen — Kea lehnt
|
||||
eine Reservierung außerhalb ihres Subnets als Konfigurationsfehler ab
|
||||
(mit einer echten Kea-Instanz verifiziert).
|
||||
- **Schreiben**: „In Datei schreiben“ (nur mit `settings_dhcp.edit`)
|
||||
schreibt die generierte Subnet-/Reservierungs-Deklaration in eine
|
||||
**separate Include-Datei** (Standard-Vorschlag
|
||||
`/etc/dhcp/dhcpd.conf.d/aruba-poe-reservations.conf`) — **nicht** in die
|
||||
eigentliche `dhcpd.conf`. Einmalig manuell per `include "<Pfad>";`
|
||||
einbinden. Die App reloadet/restartet den DHCP-Dienst dabei bewusst
|
||||
**nicht automatisch** — dieselbe Begründung wie bei der Status-Erkennung.
|
||||
schreibt die vollständige, generierte Kea-JSON-Konfiguration an den
|
||||
konfigurierten Ausgabepfad. Wirksam wird sie erst nach einem
|
||||
Dienst-Neustart über den separaten Button.
|
||||
|
||||
Live gegen eine echte, frisch installierte Kea-Instanz verifiziert:
|
||||
Installation, generierte Konfiguration besteht `kea-dhcp4 -t`, Dienststart
|
||||
übernimmt sie fehlerfrei (`DHCP4_CONFIG_COMPLETE`), globaler Options-Wert
|
||||
sowie Client-spezifischer Override erscheinen korrekt getrennt in der
|
||||
Konfiguration.
|
||||
|
||||
## Änderungslog
|
||||
|
||||
|
||||
Reference in New Issue
Block a user