Dieses Projekt stellt eine Sammlung von Integrationstools für die Anbindung von linuxmuster.net an OPNsense bereit. Die Hauptfunktionen umfassen:
- Synchronisation von IP-Aliasen (Rollen, Räume, Hardwaregruppen) auf der OPNsense-Firewall
- Verwaltung von Captive-Portal-Vouchers (Erstellen, Auflisten, Löschen)
- Listen und Trennen aktiver Captive-Portal-Sessions
- Automatisierte Alias-Aktualisierung nach Geräte-Importen
-
Basis-Konfiguration
- Kopieren Sie die Datei
in
/etc/linuxmuster/opnsense/default-school.ini.default
(/etc/linuxmuster/opnsense/MEINE_SCHULE.ini
MEINE_SCHULEist ein frei wählbarer Name).
- Kopieren Sie die Datei
-
Parameter setzen
Öffnen Sie die neu angelegte.ini-Datei und füllen Sie die benötigten Werte aus:-
[opnsense]
api_key/api_secret: Zugangsdaten für die OPNsense-APIbase_url: Basis-URL der OPNsense (z. B.https://firewall.example.org/api)verify_ssl(True/False): SSL-Zertifikatprüfung aktivieren oder deaktivierenca_bundle: Pfad zu einer CA-Bundle-Datei (falls vorhanden)
-
[school]
name: Anzeigename der Schule (wird für Geräte-Filterung, Ausgaben usw. genutzt)
-
[aliases]
sync_roles: Legt fest, ob Rollen (z. B. Schüler, Lehrer etc.) synchronisiert werden sollenroles_prefix: Prefix für Rollen-Aliasnamen (z. B.ROLE_)sync_rooms: Legt fest, ob Räume synchronisiert werden sollenrooms_prefix: Prefix für Raum-Aliasnamen (z. B.ROOM_)sync_hwgroups: Legt fest, ob Hardware-Gruppen synchronisiert werden sollenhwgroups_prefix: Prefix für Hardwaregruppen-Aliasnamen (z. B.HWGROUP_)
-
[voucher]
provider: Name des Voucher-Providers im OPNsense Captive Portal (Standard:Voucher)
-
-
Mehrere Schulen
- Sie können mehrere
.ini-Dateien anlegen (z. B.default-school.ini,schule-2.ini) und damit Skripte für verschiedene Einrichtungen ausführen.
- Sie können mehrere
- Beschreibung: Script zur Verwaltung der Captive-Portal-Vouchers in OPNsense.
- Aufruf:
opn-captive-voucher --school <INI-NAME> <SUBCOMMAND> [OPTIONEN]
- Subcommands:
- list [GROUP]
- Zeigt alle Voucher-Gruppen an (ohne
GROUP). - Zeigt alle Vouchers in einer bestimmten Gruppe (mit
GROUP).
- Zeigt alle Voucher-Gruppen an (ohne
- create
- Erzeugt neue Vouchers in der angegebenen Gruppe.
- Wichtige Parameter:
--validity(Standard:4h): Gültigkeitsdauer (z. B.1d,12h)--expiry(Standard:never): Zeit bis ein Voucher verfällt--count(Standard:5): Anzahl zu erstellender Vouchers
- delete
- Löscht Vouchers oder ganze Gruppen.
- Wichtige Optionen:
--username <USER>: Löscht einen bestimmten Voucher--all-expired: Löscht alle abgelaufenen Vouchers in der Gruppe--all: Löscht die gesamte Gruppe (inkl. aller Vouchers)
- list [GROUP]
Beispiele:
- Alle Gruppen auflisten
opn-captive-voucher list
- Vouchers in Gruppe
testanzeigenopn-captive-voucher list test - 5 neue Vouchers in Gruppe
testanlegenopn-captive-voucher create test --count 5 --validity 4h --expiry 1d - Einen bestimmten Voucher löschen
opn-captive-voucher delete test --username r2x
- Beschreibung: Listet oder trennt aktive Captive-Portal-Sessions in OPNsense.
- Aufruf:
opn-captive-sessions --school <INI-NAME> [OPTIONEN]
- Optionen:
--search <PHRASE>: Zeigt nur Sessions, die den Suchbegriff enthalten (z. B. Username).--zone <ID1 ID2 ...>: Filtert auf bestimmte Zonen-IDs.--kill-username <USER>: Trennt alle Sessions für den genannten Benutzernamen (exakter Match).--kill-sessionid <SESSIONID>: Trennt eine spezifische Session.
Beispiele:
- Alle Sessions anzeigen
opn-captive-sessions
- Alle Sessions eines bestimmten Nutzers trennen
opn-captive-sessions --kill-username alice
- Genau eine Session trennen
opn-captive-sessions --kill-sessionid "abc123XYZ"
- Beschreibung: Aktualisiert die Alias-Listen in OPNsense basierend auf Informationen aus
linuxmuster-tools. Dabei können Rollen, Räume und Hardwaregruppen berücksichtigt werden. - Konfiguration:
- In der jeweiligen
.ini-Datei (Abschnitt[aliases]):sync_roles,roles_prefixsync_rooms,rooms_prefixsync_hwgroups,hwgroups_prefix
- In der jeweiligen
- Aufruf:
opn-update-aliases --school <INI-NAME> [--quiet]
--quiet: Unterdrückt normale Ausgaben, nur Fehler werden angezeigt.
Funktionsweise:
- Liest alle Geräte aus dem
Devices-Management (vialinuxmusterTools.devices.devices). - Erzeugt oder aktualisiert die entsprechenden Alias-Einträge in OPNsense.
- Sendet ein
reconfigure, damit die Änderungen sofort aktiv werden.
- Pfad:
/var/lib/linuxmuster/hooks/device-import.post.d/opn-update-all-schools
- Beschreibung:
Dieser Hook wird automatisch nach dem Import neuer Geräte (z. B. mittelslinuxmuster-import-devices) ausgeführt.- Er sucht alle
.ini-Dateien in/etc/linuxmuster/opnsense/, - ruft für jede davon das Skript
opn-update-aliasesauf, - und aktualisiert so alle in der Ini-Datei konfigurierten Schulen.
- Er sucht alle
Hinweis: Wer diesen Automatik-Hook nicht nutzen möchte, kann ihn entfernen oder umbenennen.
- Pfad:
/etc/linuxmuster/tools/hooks/group-manager/99_kill_wlan_sessions
- Beschreibung:
Dieser Hook wird automatisch aufgerufen, wenn ein Benutzer aus der Gruppe wifi entfernt wird. Er überprüft in der jeweiligen Schulkonfiguration (.ini-Datei), ob in der Sektion[wlan]die Optionkill_session = Truegesetzt ist.- Nur wenn
kill_session = Trueeingetragen ist, werden die aktiven Captive-Portal-Sessions des betroffenen Nutzers auf OPNsense perbeendet.opn-captive-sessions --kill-username <BENUTZERNAME>
- Bei
kill_session = Falsewird nichts unternommen.
- Nur wenn
Hinweis:
- Das Skript gibt nur Fehler aus; bei erfolgreicher Ausführung bleibt es still.
- Der Hook wird alphabetisch aufgerufen, daher stellt das Präfix
99_sicher, dass das Skript gewöhnlich zuletzt ausgeführt wird.
-
Geräte-Import & automatische Alias-Aktualisierung
- Nach dem Befehl
wird über den Hook
linuxmuster-import-devices
opn-update-all-schoolsdie OPNsense-Aliasliste neu erstellt.
- Nach dem Befehl
-
Voucher für Projekt-/GästewLAN
- Mit
opn-captive-voucher create <group>lassen sich kurzfristig neue Zugangscodes anlegen. - Abgelaufene Vouchers können über
--all-expiredbereinigt werden.
- Mit
-
Troubleshooting bei Captive Portal
- Aktive Sessions über
opn-captive-sessionslisten. - Notfalls einzelne Sessions trennen (z. B. bei Missbrauch).
- Aktive Sessions über