01 · Zielbild
Planbar, aber nicht starr
Ein normaler Wochenplan bleibt die Grundlage. Schulferien können automatisch längere Zeiten erlauben. Eltern setzen im vertrauten Kalender nur Ausnahmen: zusätzliche Zeit mit BONUS Kind1 oder eine Sperre mit SPERRE Kind1.
Er enthält nur Profilnamen und Zeitfenster. Konten, Kennwörter und Gerätezuordnungen bleiben in den dafür vorgesehenen Systemen.
02 · Identität
Wer meldet sich an?
Die Zeitregel muss einer stabilen Identität folgen. Nur dann wirkt sie auch dann korrekt, wenn ein Smartphone seine IP-Adresse wechselt oder zwischen Access Points roamt.
Enterprise-WLAN
Das Kind verwendet ein eigenes Konto. Der Access Point reicht die Anmeldung per PEAP/MSCHAPv2 an FreeRADIUS weiter. FreeRADIUS prüft Kennwort und Zeitregel.
Feste Geräte
PC, Konsole oder Tablet werden zusätzlich einem Routerprofil zugeordnet. Das deckt Geräte ab, die sich nicht selbst per RADIUS anmelden.
Beide Wege dürfen dasselbe logische Profil verwenden. Eine Sperre muss dann sowohl einen RADIUS-Login ablehnen als auch das Routerprofil schließen.
03 · Bedienung
Zwei eindeutige Termintitel
| Titel | Wirkung während des Termins |
|---|---|
BONUS Kind1 | Zugang vollständig freigeben |
SPERRE Kind1 | Zugang vollständig sperren |
Der Parser sollte nur exakt passende Titel akzeptieren, beispielsweise mit dem regulären Ausdruck ^(BONUS|SPERRE)\s+(.+?)\s*$. Notizen gehören in die Terminbeschreibung. Zeitgesteuerte, ganztägige und wiederkehrende Termine lassen sich damit einheitlich behandeln.
SUMMARY:SPERRE Kind1
DTSTART;TZID=Europe/Berlin:20260811T220000
DTEND;TZID=Europe/Berlin:20260812T070000
04 · Profile
Eine Quelle für alle Namen
Das Profil verbindet Kalendername, RADIUS-Benutzer, Routerprofil und Grundplan. Die folgende neutrale JSON-Datei ist ein Schema-Beispiel und muss an den eigenen Auswertedienst angepasst werden.
{
"timezone": "Europe/Berlin",
"profiles": [{
"calendar_name": "Kind1",
"radius_user": "kind1",
"router_profile": "Kind1",
"school_schedule": {
"mon": "06:00-20:00",
"fri": "06:00-22:00"
}
}],
"priority": ["block", "bonus", "holiday", "base_schedule"]
}
Groß- und Kleinschreibung kann der Parser beim Kalendernamen tolerant behandeln. Für RADIUS und Router sollten die technisch hinterlegten Namen dagegen exakt und eindeutig bleiben.
05 · WLAN
FreeRADIUS setzt die Loginzeit durch
Der Policy-Dienst erzeugt aus dem effektiven Modus eine kleine Include-Datei. Im Grundplan wird Login-Time gesetzt. BONUS und Ferien erhalten einen ganztägigen Wert. Eine aktive Sperre muss als vollständiger Reject erscheinen.
# Grundplan
kind1 Login-Time := "Mo0600-2000,Tu0600-2000,We0600-2000,Th0600-2000,Fr0600-2200,Sa0600-2200,Su0600-2000"
# Aktive Sperre
kind1 Auth-Type := Reject
Die Datei sollte zunächst temporär geschrieben, mit freeradius -XC geprüft und danach atomar ersetzt werden. Erst eine gültige Änderung rechtfertigt einen Reload.
Endgeräte müssen der ausstellenden CA vertrauen und den erwarteten Servernamen kontrollieren. Ohne diese Prüfung schützt PEAP nicht zuverlässig vor einem fremden Anmeldepunkt.
06 · Geräte
MikroTik ergänzt die Geräteebene
Das Routerprofil verwendet denselben Wochenplan. Feste Geräte werden dem Profil zugeordnet. Beispielwerte müssen vor dem Import angepasst werden:
/ip kid-control add name=Kind1 \
mon=6h-20h tue=6h-20h wed=6h-20h thu=6h-20h \
fri=6h-22h sat=6h-22h sun=6h-20h
/ip kid-control device add name=Kind1-Tablet \
mac-address=02:00:00:00:00:01 user=Kind1
Bei BONUS oder Ferien setzt der Dienst alle Wochentage auf 0s-1d. Bei SPERRE werden die Zeitfenster geleert. Vor jeder Änderung sollte geprüft werden, dass genau ein Routerprofil mit diesem Namen existiert.
iOS und Android können pro WLAN eine zufällige MAC verwenden und sie nach dem erneuten Anlegen des Profils ändern. Die Benutzeranmeldung bleibt stabil; eine zusätzliche feste Gerätezuordnung muss dann aktualisiert werden.
07 · Linux
Minütlich und ohne Dauerprozess
Ein systemd-Timer reicht für diese Aufgabe aus. Der Auswertedienst lädt Kalender und Ferien, berechnet alle Profile gemeinsam und veröffentlicht danach Router- und RADIUS-Regeln.
[Unit]
Description=Familien-Netzzeit aktualisieren
[Timer]
OnBootSec=2min
OnUnitActiveSec=1min
RandomizedDelaySec=5s
Unit=family-access.service
[Install]
WantedBy=timers.target
Die private iCal-Adresse gehört in eine eigene root-lesbare Datei und niemals in das Skript oder ein öffentliches Repository:
sudo install -d -o root -g root -m 700 /etc/family-access
sudoedit /etc/family-access/private-calendar-url
sudo chmod 600 /etc/family-access/private-calendar-url
08 · Failsafe
Fehler dürfen nicht großzügiger machen
- Bei einem Downloadfehler bleibt die letzte gültige Konfiguration aktiv.
- Ein BONUS aus einem mehr als 15 Minuten alten Cache wird unterdrückt.
- Eine bereits bekannte SPERRE bleibt auch bei einem alten Cache wirksam.
- Ungültige Kalenderdaten oder Profile ändern weder Router noch RADIUS.
- Der Routerzugang nutzt ein eigenes, minimal berechtigtes Automationskonto.
- Private Kalender-URL, SSH-Key und RADIUS-Secret werden getrennt geschützt.
Kalenderzugriff sollte nur lesend erfolgen. Wer den Kalender bearbeitet, kann Netzzeit steuern, erhält dadurch aber keinen Router- oder Serverzugang.
09 · Abnahme
Die ganze Kette testen
- Grundplan außerhalb und innerhalb des erlaubten Fensters prüfen.
- BONUS an Beginn, Ende und über Mitternacht testen.
- SPERRE gleichzeitig mit BONUS testen; SPERRE muss gewinnen.
- RADIUS-Login und fest zugeordnetes Routergerät getrennt prüfen.
- Kalenderdownload blockieren und das Verhalten mit altem Cache prüfen.
- Ungültige RADIUS-Datei simulieren; die letzte gültige Policy muss bleiben.
- Timer, Logs und Rückkehr zum Grundplan nach Terminende kontrollieren.
Erst wenn diese Übergänge reproduzierbar funktionieren, ist die Lösung für den Familienalltag geeignet. Ein grüner Dienststatus allein beweist noch keine wirksame Sperre.