DHCP: Subnet/Netzmaske/Gateway immer aus System-Netzwerkkonfiguration ableiten

- Neue Helfer _list_network_interfaces() (echte Interfaces aus
  /sys/class/net) und _detect_interface_network() (IPv4/Prefix per
  "ip addr show", Gateway per "ip route show default") — Subnet/
  Netzmaske/Router werden dadurch bei jeder Anzeige/Generierung live vom
  System gelesen statt manuell gepflegt zu werden.
- dhcp_subnet/dhcp_netmask als manuelle Settings entfernt; Interface ist
  jetzt ein Dropdown mit den tatsächlich vorhandenen Interfaces statt
  Freitext, serverseitig zusätzlich gegen die echte Liste validiert.
- _dhcp_reservation_candidates()/_render_kea_config() nehmen jetzt das
  erkannte Netz (ipaddress.IPv4Network) bzw. net_info entgegen statt
  Subnet/Netzmaske aus der Konfiguration zu lesen; Router kommt vom
  erkannten Gateway (Fallback: erster DNS-Eintrag, wie zuvor).
- UI zeigt das erkannte Netz (IP/Prefix, Subnet, Gateway) read-only an;
  Schreiben/Vorschau werden blockiert bzw. liefern eine leere
  Reservierungsliste, wenn die Erkennung fehlschlägt, statt eine mit
  Sicherheit falsche Konfiguration zu erzeugen.
- Live getestet: Erkennung liefert korrekt das tatsächliche WSL-NAT-Netz
  (172.25.64.0/20) samt Gateway; generierte Config besteht kea-dhcp4 -t;
  ein Testgerät mit IP im erkannten Netz erscheint korrekt als
  Reservierung, Geräte außerhalb werden weiterhin sauber übersprungen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 08:28:11 +02:00
co-authored by Claude Sonnet 5
parent c3d69a9870
commit 8e4a874943
3 changed files with 132 additions and 60 deletions
+11 -5
View File
@@ -235,10 +235,16 @@ der aktiv weiterentwickelte Nachfolger und bildet „globaler Wert, pro Client
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 Kea-Config
(Standard: die aktive `/etc/kea/kea-dhcp4.conf`) — als `dhcp_*`-Schlüssel
in der bestehenden `settings`-Tabelle gespeichert.
- **Netzwerk-Kopplung**: Subnet, Netzmaske und Gateway werden **nie manuell
eingegeben**, sondern bei jeder Anzeige/Generierung live aus der
System-Netzwerkkonfiguration des gewählten Interfaces gelesen
(`_detect_interface_network()`: `ip -4 addr show dev <iface>` +
`ip route show default`). Die generierte Kea-Konfiguration ist dadurch
immer an das Netz gekoppelt, in dem der Host tatsächlich hängt, auch wenn
sich dessen IP/Subnet mal ändert — nur das Interface selbst (Dropdown,
echte vorhandene Interfaces aus `/sys/class/net`), die Lease-Range,
DNS-Server, Domain, Lease-Zeiten und der Ausgabepfad sind konfigurierbar
(`dhcp_*`-Schlüssel in der `settings`-Tabelle).
- **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
@@ -249,7 +255,7 @@ der aktiv weiterentwickelte Nachfolger und bildet „globaler Wert, pro Client
`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
des erkannten 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 oder mit
einer IP außerhalb des Subnets werden mit Hinweis übersprungen — Kea lehnt