Neu: DHCP-Reservierungen aus Client-Stammdaten (Systemeinstellungen -> DHCP)
- Neue Unterseite unter Einstellungen (eigenes Rechtepaar
settings_dhcp.view/settings_dhcp.edit, in PERMISSIONS/NAV_ITEMS/
_nav_key_visible integriert, Kill-Switch über settings_group.view
greift wie bei den anderen Einstellungen-Unterpunkten).
- Rein lesende Installations-/Status-Erkennung (shutil.which("dhcpd"),
systemctl is-active isc-dhcp-server) — die App installiert/startet nie
selbst einen DHCP-Dienst, sondern zeigt bei fehlender Installation den
passenden manuellen Befehl an.
- Konfigurierbare Netzwerkparameter (Interface/Subnet/Netzmaske/Range/
DNS/Domain/Lease-Zeiten/Ausgabepfad), gespeichert als dhcp_*-Schlüssel
in der bestehenden settings-Tabelle.
- Reservierungen werden aus aktiven Geräten mit gültiger MAC+IP generiert
(Hostname aus Gerätename abgeleitet, Kollisionen automatisch
durchnummeriert, Geräte ohne MAC/IP werden übersprungen).
- "In Datei schreiben" (nur mit settings_dhcp.edit) schreibt eine
separate Include-Datei statt der aktiven dhcpd.conf; kein automatischer
Dienst-Reload/-Restart durch die App.
- Live getestet: Status-Erkennung, Config speichern, Reservierungs-
Generierung inkl. Namenskollisionen, Datei-Schreiben in sicheren
Testpfad, View-only-Gating (Formular ausgeblendet, POST blockiert),
Kill-Switch über settings_group.view.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -212,6 +212,37 @@ 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)
|
||||
|
||||
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.
|
||||
|
||||
- **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.
|
||||
- **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
|
||||
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.
|
||||
- **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.
|
||||
|
||||
## Änderungslog
|
||||
|
||||
Jede Anlage, Bearbeitung, Löschung sowie jedes Aktivieren/Deaktivieren von
|
||||
|
||||
Reference in New Issue
Block a user