Freeradius verschiedene Gruppen managen

Hallo zusammen,
ich möchte mit Freeradius zwei WLAN-Netze über WPA2-Enterprise ausstrahlen.
Das eine WLAN ist nur für Lehrer und das andere WLAN für alle, die in der Gruppe wifi sind.
Dazu brauche ich zwei Radiusserver. Der Freeradius kann das. Zumindes deutet das die Dokumentation an.

Es soll möglich sein, einen virtuellen Server, der auf Port 1812 lauscht, für Anfragen, die auf die Gruppenmitgliedschaft von wifi prüften, einzurichen.
Und ein zweiter virtueller Server, der beispielsweise auf Port 1813 lauscht, für Anfragen, die auf die Gruppenmitgliedschaft von teachers prüften, einzurichen.

Leider hab’ ich das bisher nicht geschafft. Hat da jemand Erfahrung und kann mir einen Tipp geben?

Vielen Dank schon mal für’s Mitdenken.
Gruß,
Mathias

Hallo Matthias,

…ich auch nicht zufriedenstellend. Hatte zwar mal zwei Radius Daemons laufen aber das war nie stabil…daher mache ich jetzt nicht mehr wpa2-enterprise sondern nutze das Captive Portal der Opnsense. Auth gegen die AD geht ohne Probleme…Voucher gehen auch…auch beides gleichzeitig…eine API gibt’s auch…die zunehmende „Problemarik“ mit den notwendigen Zertifikaten für wpa2-enterprise spielt auch keine Rolle…

Beschreibung der Möglichkeiten siehe hier: Captive portal & GuestNET — OPNsense documentation

VG Dominik

Passend dazu:

Bei uns klappt das mit zwei Dämon problemlos.

Hallo Dominik,
das mit dem Captive portal möchte ich auch noch probieren.
WPA2-Enterprise hat für mich den Vorteil, dass Internet ein- bzw ausschalten super funktioniert. Wer beim Captive Portal drin ist, ist halt drin…

Trotzdem danke nochmal für den Tip.
Gruß,
Mathias

Hallo MirDochEgal,

wie habt ihr das gemacht?
Habt ihr beispielsweise vom Verzeichnis /etc/freeradius/3.0/ eine Kopie nach /etc/freeradius/3.0-Lehrer/ angelegt und dort dann den Port 1812 durch 1813 verändert?

Gruß,
Mathias

Genau. Ich hab das freeradius Verzeichnis kopiert und entsprechend angepasst. Nur nicht 1813 sondern 1912, weil 1813 schon ein Standardport für Radius ist und ich mir nicht sicher war ob er den nicht schon heimlich verwendet. Dann noch ein passendes system.d file:

cat /lib/systemd/system/freeradius_schuelerwlan.service
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=network.target
Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ FreeRADIUS | NetworkRADIUS

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius.pid
EnvironmentFile=-/etc/default/freeradius_schuelerwlan
ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Das ist an und für sich auch nur eine Kopie mit passendem Environment.

Das probier ich aus. Vielen Dank für den Tip.
Gruß,
Mathias

Hallo Mathias,

vielleicht habe ich etwas nicht verstanden. Aber warum nimmt man dann nicht die Gruppe „teachers“ in die Gruppe „wifi“ mit auf? Dann können Lehrer auch immer ins WLAN und die Schüler kannst Du nach wie vor sperren/freigeben.

Oder geht es hier um Netzwerktrennung dieser beiden WLAN Netze? Aber auch dann könnte die Radius Authentifizierung über einen einzigen Radius Server laufen.

Vielleicht übersehe ich aber auch etwas.

Viele Grüße
Klaus

Hallo Klaus,

Ich brauche zwei Netzwerke.

  • Ein allgemeines WLAN für Schüler (und Lehrer). Da können alle rein, die in der Gruppe WIFI sind. Und das sind auch die Lehrer.
  • Und ein WLAN für Lehrergeräte und Schuleigene Chromecasts und Beamer. Da dürfen keine Schülergeräte rein, da wir sonst auf den Beamern Dinge sehen, die wir im Unterricht nicht haben wollen.

Bei Bedarf, wenn beispielsweise ein Schüler mit seinem Tablett seine Präsentation zeigen möchte, kann auch ein Schüler mit einem WLAN-Voucher ins Lehrer-WLAN.

Gruß,
Mathias

Hallo Mathias,

Danke für Deine Erklärung und die gute Idee! Bin gespannt ob es mit den 2x Radius klappt.

Viele Grüße
Klaus

Hallo Björn,

eine Frage hätte ich da noch:

Wo trage ich ein, dass die neue Konfiguration in /etc/freeradius/3.0-teachers/ liegt?

Gruß,
Mathias

Das ist die Environment Variable im service file.

Da habe ich EnvironmentFile=-/etc/default/freeradius-teachers eingetragen.
Im Original-File (/etc/defaultt/freeradius) steht:

# Options for the FreeRADIUS daemon.
FREERADIUS_OPTIONS=""

Was muss ich da eintragen?

FREERADIUS_OPTIONS="-d /etc/freeradius/3.0_schuelerwlan"
steht bei mir.

Du musst den Pfad auf dein Setup entsprechend anpassen.

Irgendwas habe ich übersehen…

  • Ich habe /etc/freeradius/3.0/ nach /etc/freeradius/3.0-teachers/ kopiert.
  • In /etc/freeradius/3.0-teachers/radiusd.conf habe ich
logdir = /var/log/freeradius-teachers
raddbdir = /etc/freeradius/3.0-teachers

gesetzt.

  • In /etc/default/freeradius-teachers steht bei mir:
# Options for the FreeRADIUS daemon.
FREERADIUS_OPTIONS="-d /etc/freeradius/3.0-teachers"
  • In /lib/systemd/system/freeradius-teachers.service steht bei mir:
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=network.target
Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ http://networkradius.com/doc/

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius-teachers.pid
EnvironmentFile=-/etc/default/freeradius-teachers
ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Wenn ich jetzt systemctl start freeradius-teachers.service ausführe erhalte ich nach ca 1 Min mit journalctl -xe:

Jun 01 06:57:52 server.linuxmuster.lan systemd[1]: freeradius-teachers.service: Can't open PID file /run/freeradius/freeradius-teachers.pid (yet?) after start: No such file or directory

freeradius.service ist gestoppt.

Hallo Mathias,

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius-teachers.pid
EnvironmentFile=-/etc/default/freeradius-teachers
ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

Bei EnvironmentFile hat sich vor /etc/... ein Minus eingeschlichen, das da bestimmt nicht hingehört.

Viele Grüße
Christoph

Probier doch einfach erstmal den freeradius direkt zu starten. Dann kannst du gucken ob deine config so passt.
Also in deinem Fall

/usr/sbin/radius -d /etc/freeradius/3.0-teachers

Wenn das nichts ergibt machst du halt verbose.

Hallo Christop,

Ja, das sieht schon komisch aus. Im Original steht EnvironmentFile=-/etc/default/freeradius. Ich hab’s nur abgewandelt…
Gruß,
Mathias

Hallo Björn,

Der Start mit /usr/sbin/freeradius -d /etc/freeradius/3.0-teachers klappt witziger weise.
Wenn ich mit systemctl start freeradius-teachers.service starte geht’s schief.
Ich erhalte immer

Jun 01 09:26:25 server.linuxmuster.lan freeradius[2137]: Configuration appears to be OK
Jun 01 09:26:25 server.linuxmuster.lan systemd[1]: freeradius-teachers.service: Can't open PID file /run/freeradius-teachers/freeradius-teachers.pid (yet?) after start: No such file or directory

Die Datei freeradius-teachers.service kann / wird nicht angelegt. Die wird aber angelegt, wenn ich von Hand starte?!?

Gruß,
Mathias