psimon87
Goto Top

OPNSense FreeRadius Server-MAC Authentication-dynamische VLAN Zuweisung

Hallo liebe Leute.

bin ziemlich neu in der OPNSense/freien Switch Welt, habe jetzt einmal, bevor ich mein ganzes Netzwerk umstelle ein Testsetting aufgebaut und stoße hier auf ein Problem beim Thema dynamische VLAN Zuweisung mittels Mac Authentication.

Zuerst mal ein bisschen zu meiner Vorgeschichte.

Komme von einem Unifi System und hatte dort diverse VLANs mit einer dynamischen Zuweisung mittels Radius/MAC Authentifizierung. Hat alles soweit wunderbar funktioniert, sowohl auf den Switches als auch auf den APs.

Möchte jetzt aber komplett weg von dem Unifi System, hin zu einem offenen und flexibleren System und habe mir hierzu auf einem PC OPNSense installiert und als Switche bzw. APs verwende ich Zyxel Geräte. Ich weiß hier gibt es die Nebula Oberfläche wo dies wahrscheinlich recht einfach ginge aber ich möchte die einzelnen Geräte Stand Alone betreiben. Das hat den Hintergrund, da ich wahrscheinlich später auch den ein oder anderen nicht Nebula fähigen Switch brauche und ich spätestens dann sowieso ein "Konfigurationsproblem" hätte. Deswegen will ich es gleich alles Standalone konfigurieren um es später einfacher zu haben.

Was ich bisher konfiguriert habe bzw. was bereits funktioniert:

  • 1 LAN (123er IPs) und 2 VLANs (VID124 und VID125) in OPNSense angelegt und als Parent Interface das LAN Interface zugewiesen.
  • DHCP für die VLANs ist angelegt
  • Freeradius installiert, aktiviert (VLAN Zuweisung unter General ist auch aktiviert), unter Clients ist der Switch mit "SWITCH01" mit der dazugehörigen IP konfiguriert und ein zweiter Eintrag mit 127.0.0.1 für die OPNSens, unter Users ist ein User angelegt mit der MAC als Benutzername und Passwort und bei VLAN ID steht 124 drin
  • Unter System/Access/Servers ist Eintrag mit den Einstellungen 127.0.0.1, Type Radius, Authentication und Accounting sowie den dazugehörigen Ports 1812 und 1813 eingerichtet

Auf dem Zyxel Switch ist der Radius aktiviert und konfiguriert (IP, Ports und Shared Secret der OPNSense), es sind die VLANs angelegt und den Ports wie folgt zugewiesen (VID1 ist Standardmäßig vom Zyxel):

  • Port2: VID1 Forbidden, VID124 Fixed (Untagged), VID125 Forbidden - PVID124, Ingress Check aktiviert, Frame Typ All
  • Port3: VID1 Forbidden, VID124 Forbidden, VID125 Fixed (Untagged) - PVID125, Ingress Check aktiviert, Frame Typ All
  • Port4: VID1 Fixed (Tagged), VID124 Fixed (Tagged), VID125 Fixed (Tagged) - PVID1 - Mac Authentication aktiviert, Ingress Check aktiviert, Frame Typ All
  • Port10 (Upload Port zur OPNSense): VID1 Fixed (Untagged), VID124 Fixed (Tagged), VID125 Fixed (Tagged) - PVID1, Trunk aktiviert, Ingress Check aktiviert, Frame Typ All

Wenn ich jetzt am Switch ein Lan Kabel anstecke passiert folgendes:
  • Port2 (PVID124): PC bekommt eine DHCP IP aus dem 124er Netz -> Passt also
  • Port3 (PVID125): PC bekommt eine DHCP IP aus dem 125er Netz -> Passt also
  • Port4 (MAC Authentication): im Log File vom Freeradius steht "Authface-sad1) Login OK: [MACAdresse/MACAdresse] (from Client Switch01 port 0), PC bekommt aber eine Adresse aus dem 123er LAN Netz -> Passt nicht

Was habe ich hier den vergessen oder falsch konfiguriert?

Was mir (in den Logs) noch so aufgefallen ist:

  • Lösche ich den User aus der OPNSense kommt ebenso die Meldung mit Auth Login OK und bekomme eine 123er IP. Also hier dürfte schonmal was nicht stimmen, ich habe aber irgendwie nichts gefunden.
  • Stelle ich beim Zyxel Switch nur die MAC Authentication ein bekomme ich eine 123er IP, stelle ich zusätzlich 802.1X ein bekomme ich garkeine IP, solange ich nicht im jeweiligen Netzwerkadapter aktiv 802.1X aktiviere und mich mit einem Benutzer den ich vorher in der OPNSense angelegt habe anmelde (das funktioniert dann aber zumindest und ich bekomme die IP aus dem VLAN welches ich beim Benutzer eingetragen habe).

Habt ihr eine Idee woran es liegen könnte oder was hier falsch konfiguriert sein könnte.

Vielen Dank schonmal und LG
Patrick

Content-Key: 4157490863

Url: https://administrator.de/contentid/4157490863

Printed on: April 19, 2024 at 06:04 o'clock

Member: aqui
aqui Oct 05, 2022, updated at May 15, 2023 at 14:38:42 (UTC)
Goto Top
Guckst du dazu auch hier:
Freeradius Management mit WebGUI
Dynamische VLAN Zuweisung für WLAN (u. LAN) Clients mit Mikrotik
Mikrotik - mehrere VLANs auf cAP AC mit CAPsMAN
Mikrotik - dyn-vLAN und MAC-auth in ROS 7.2
Cisco SG 350x Grundkonfiguration
Ruckus ICX - 802.1x - is mac-vlan member of 2 vlans in single-untagged mode

Praxisthreads hier die sich zwar auf die pfSense beziehen aber der Unterschied ist kosmetisch, da als Unterbau bei beiden ein FreeRadius werkelt findest du in den weiterführenden Links des o.a. Tutorials.
Idealerweise stoppt man über den Shellzugriff der OPNsense den Freeradius und startet ihn dananch manuel neu im Debugging Mode mit -X in der Konsole. Dann zeigt er dir sehr genau wo und warum eine Authentisierung scheitert.

Zu deinen 2 Punkten die dir aufgefallen sind:
1.)
Du hast eine Default Authentication dann aktiviert indem dein letzter Eintrag sowas wie das hier in der user.conf zeigt:
DEFAULT         Cleartext-Password := "%{User-Name}"
                Tunnel-Type = 13,
                Tunnel-Medium-Type = 6,
                Tunnel-Private-Group-Id = 10 
("Tunnel" Parameter sind nur bei dynamischer VLAN Zuweisung relevant!)
Das bedeutet das alle User authentisiert werden bzw. mit dem o.a. Default Eintrag auch die die nicht explizit in der Radius Konfig definiert sind. Gastuser etc.
Denen wird dann im Beispiel oben das VLAN 10 zugewiesen. In der regel ist das dann immer ein sog. Captive Portal WLAN also ein Gastsegment indem eine Web basierte Authentisierung mit Einmal Passwörtern, Vouchern etc. ermöglicht wird. Ein übliches Standard Design.
Wenn du, wie du oben schreibst, dort falsche IP Adressen bekommst wird dynamisch eine falsche VLAN ID zugewiesen aus deren Bereich der Client dann eine IP bekommt.

Wenn du nicht mit dynamischer VLAN Zuweisung arbeitest bestimmt einzig und allein deine statische VLAN Zuweisung in der Switch Konfig welches VLAN hier nach der Authentisierung aktiv ist.
Klappt also bei einer statischen Zuweisung die Port Authentisierung aber du bekommst eine falsche IP ist deine Switch VLAN Konfiguration fehlerhaft!
2.)
Bei gleichzeitiger Mac und .1x Authentisierung an einem Port musst du aufpassen.
Die meisten der Billighersteller supporten sowas nicht, du musst also im Datenblatt checken ob Zyxel sowas überhaupt kann.
Bei den Herstellern die es supporten muss man in der Konfig dann zwingend angeben
  • Welches Verfahren man zuerst ausführen möchte und welches hinterher und
  • Ob man nach dem ersten Success zwingend noch das 2te Verfahren ausführen will oder nicht
Bei 2 konsekutiven Auth Verfahren gilt bei einer dynamischen VLAN Zuweisung das immer die VLAN Zuweisung der zuletzt ausgeführten Authentisierung gilt und die der ersten egalisiert.
Ports mit eine Dual Authentication sind also nicht trivial und erfordern einen deutlichen Mehraufwand in der Konfiguration bzw. Überlegungen der Verfahren. Das solltest du auf dem Radar haben.
Member: psimon87
psimon87 Oct 05, 2022 at 09:16:10 (UTC)
Goto Top
Vielen Dank für dein Kommentar.

Zitat von @aqui:

Du hast eine Default Authentication dann aktiviert indem dein letzter Eintrag sowas wie das hier in der user.conf zeigt:
DEFAULT         Cleartext-Password := "%{User-Name}"
                Tunnel-Type = 13,
                Tunnel-Medium-Type = 6,
                Tunnel-Private-Group-Id = 10 


Genau das mit Tunnel-Type = 13 und Tunnel-Medium-Type = 6 geht mir hier irgendwie ab. Die Einstellung kenne ich nämlich noch von Unifi. Muss mal in der Shell schauen was in der Datei drinsteht, in der GUI habe ich dazu nämlich nichts gefunden zum Einstellen.

Wenn du nicht mit dynmaischer VLAN Zuweisung arbeitest bestimmt einzig und allein deine statische VLAN Zuweisung in der Switch Konfig welches VLAN hier nach der Authentisierung aktiv ist.

Okay Danke das werde ich mir gegebenfalls auch noch anschauen ob und wie das bei mir geht und ob es Sinn macht.

Bei gleichzeitiger Mac und .1x Authentisierung an eimnem Port musst du aufpassen.
.1x Authentisierun habe ich nur Testweise aktiviert gehabt weil nicht genau dokumentiert ist ob man das für die MAC Authentifizierung aktivieren muss oder nicht. Ich möchte rein nur dynamische VLAN Zuweisung über die OPNSense. Deinen Ausführungen zu folge gehört .1x Authentisierung also jedenfalls deaktiviert. Das hilft zumindest schonmal weiter. Danke dafür
Member: aqui
aqui Oct 05, 2022 updated at 09:33:15 (UTC)
Goto Top
weil nicht genau dokumentiert ist ob man das für die MAC Authentifizierung aktivieren muss oder nicht.
Muss man nicht! Das eine bedingt niemals die Funktion des anderen und ist immer nur Port bezogen.
Sprich man muss pro Port im Setup bestimmen ob man da MAP (Mac Auth Bypass) oder Dot1x macht oder eine Kombination von beidem. (Letzteres sofern supportet)
Die Konfigs von z.B. Cisco und Ruckus im o.a. Link zeigen diese Konfig Logik einer Kombination.
Ich möchte rein nur dynamische VLAN Zuweisung über die OPNSense.
Was ja generell eine Lachnummer ist und schnell implementiert ist.
Kardinalsfrage ist aber immer: Nur MAP (Mac Auth Bypass), nur 802.1x oder eine Kombination? Letzteres sofern supportet auf der HW).
Dazu machst du ja leider keinerlei konkrete Aussagen, ist aber wichtig für das Setup bzw. weitere Vorgehen. Vielleicht solltest du dir darüber erstmal klar werden?! 😉
Member: psimon87
psimon87 Oct 05, 2022 at 09:38:51 (UTC)
Goto Top
Zitat von @aqui:

Was ja generell eine Lachnummer ist und schnell implementiert ist.
Ja bei Unifi war es eigentlich auch schnell konfiguriert und lief auch sofort ohne Probleme

Kardinalsfrage ist aber immer: Nur MAP (Mac Auth Bypass), nur 802.1x oder eine Kombination? Letzteres sofern supportet auf der HW).
Dazu machst du ja leider keinerlei konkrete Aussagen, ist aber wichtig für das Setup bzw. weitere Vorgehen. Vielleicht solltest du dir darüber erstmal klar werden?! 😉
Naja laut deiner Beschreibung ist es nur MAB was ich brauche. Iim Endeffekt möchte ich das der Switch bzw. die OPNsense in ihrer Datenbank nachsieht ob die MAC Adresse vorhanden ist, wenn ja dann Zack ab mit dem Gerät ins hinterlegt VLAN, wenn nicht dann ab in ein Fallback VLAN in dem alle Zugriffe von und nach außen gesperrt sind.

802.1x wäre natürlich sicherer aber das wird ja von einigen Endgeräten nicht unterstützt (gerade günstigere Drucker oder vorallem SmartHome Geräte)
Member: psimon87
psimon87 Oct 05, 2022 at 12:09:27 (UTC)
Goto Top
Zitat von @aqui:
Du hast eine Default Authentication dann aktiviert indem dein letzter Eintrag sowas wie das hier in der user.conf zeigt:
DEFAULT         Cleartext-Password := "%{User-Name}"
                Tunnel-Type = 13,
                Tunnel-Medium-Type = 6,
                Tunnel-Private-Group-Id = 10 


Hab das ganze gefunden (ist bei Freeradius in OPNSense ziemlich versteckt)

Bei mir schaut das ganze interessanterweise so aus

MAC-ADRESSE Cleartext-Password := "MAC_ADRESSE"  
       Tunnel-Type = VLAN,
       Tunnel-Medium-Type = IEEE-802,
       Tunnel-Private-Group-Id = 124,
       Framed-Protocol = PPP


DEFAULT Framed-Protocol == PPP
        Framed-Protocol = PPP,
        Framed-Compression = Van-Jacobson-TCP-IP

DEFAULT Hint == "CSLIP"  
        Framed-Protocol = SLIP,
        Framed-Compression = Van-Jacobson-TCP-IP

DEFAULT Hint == "SLIP"  
        Framed-Protocol = SLIP

Ich kann es zwar ändern, aber beim nächsten durchstarten wird das ganze wieder überschrieben.
Member: aqui
aqui Oct 05, 2022 updated at 12:17:22 (UTC)
Goto Top
laut deiner Beschreibung ist es nur MAB was ich brauche.
Meine Sicht der Dinge ist ja irrelevant. Es zählt das was DU in deinem Netz umsetzen willst und danach richtet sich die Konfig! 😉
ob die MAC Adresse vorhanden ist, wenn ja dann Zack ab mit dem Gerät ins hinterlegt VLAN, wenn nicht dann ab in ein Fallback VLAN
Das ist kinderleicht und schnell erledigt. In der User Konfig Datei muss dann sowas wie:
00:22:FA:7B:12:34  Cleartext-Password := "00:22:FA:7B:12:34"
                        Tunnel-Type = VLAN,
                        Tunnel-Medium-Type = IEEE-802,
                        Tunnel-Private-Group-Id = 20 

DEFAULT            Cleartext-Password := "%{User-Name}"
                        Tunnel-Type = VLAN,
                        Tunnel-Medium-Type = EEE-802,
                        Tunnel-Private-Group-Id = 99 
Das schiebt dann dynamisch den registrierten User mit der Mac 00:22:FA:7B:12:34 ins VLAN 20 und alle unregistrierten User ins VLAN 99.
WICHTIG:
Unbedingt auf das Format der Mac Adresse achten was im Setup des Authenticators (Switch) eingestellt ist!! Für den Radius Server sind 00:22:FA:7B:12:34, 00:22:fa:7b:12:34, 00-22-FA-7B-12-34 oder 0022FA7B1234 vier völlig unterschiedliche User!!
Member: psimon87
psimon87 Oct 05, 2022 updated at 12:52:36 (UTC)
Goto Top
Bei mir in OPNSense schaut es eigentlich fast so aus - also soweit passt es aber dieses Framed-Protocol ist noch da. Und es klappt halt komischerweise trotzdem nicht.

MAC-ADRESSE Cleartext-Password := "MAC_ADRESSE"  
       Tunnel-Type = VLAN,
       Tunnel-Medium-Type = IEEE-802,
       Tunnel-Private-Group-Id = 124,
       Framed-Protocol = PPP


DEFAULT Framed-Protocol == PPP
        Framed-Protocol = PPP,
        Framed-Compression = Van-Jacobson-TCP-IP

DEFAULT Hint == "CSLIP"  
        Framed-Protocol = SLIP,
        Framed-Compression = Van-Jacobson-TCP-IP

DEFAULT Hint == "SLIP"  
        Framed-Protocol = SLIP

Ich kann aber auch nichts überschreiben. Er autorisiert sich soweit auch richtig (sehe ich in den LOGs). Ich bekomme aber trotzdem immer eine IP aus dem Standard LAN Netz. Habe Username und Passwort im Radius und Switch so eingestellt das er Kleinbuchstaben nimmt und keine Trennzeichen.
Member: aqui
aqui Oct 06, 2022 at 08:49:51 (UTC)
Goto Top
Framed PPP ist auch falsch, denn das gibt es bei MAB oder 802.1x nicht und ist definitiiv das falsche Format. Da hast du also irgendeinen Haken falsch gesetzt im Setup!
Ich kann aber auch nichts überschreiben.
Das ist falsch. Wenn du das Filesystem auf RW setzt geht es aber solche Frickelei ist gar nicht nötig, denn der OPNsense FreeRadius macht das auch so richtig wenn das Setup stimmt.
Habe Username und Passwort im Radius und Switch so eingestellt das er Kleinbuchstaben nimmt und keine Trennzeichen.
Wenn das passt mit dem Format was der Zyxel schickt ist das OK. Wenn nicht hast du Pech.
Relevant ist hier nur in welchem Format der Zyxel das schickt!
Member: psimon87
psimon87 Oct 06, 2022 at 10:30:23 (UTC)
Goto Top
Zitat von @aqui:

Framed PPP ist auch falsch, denn das gibt es bei MAB oder 802.1x nicht und ist definitiiv das falsche Format. Da hast du also irgendeinen Haken falsch gesetzt im Setup!

Ich habe eigentlich nur 2 Haken gesetzt, einmal für Enable und einmal den Hacken für VLAN Zuweisungen. Die ganzen anderen Settings habe ich auf Standard gelassen aber vielleicht liegt da das Problem. Muss nochmal schauen ob ich dazu was finde.

Das ist falsch. Wenn du das Filesystem auf RW setzt geht es aber solche Frickelei ist gar nicht nötig, denn der OPNsense FreeRadius macht das auch so richtig wenn das Setup stimmt.

Habe mich ein bisschen falsch ausgedrückt, überschreiben kann ich es schon aber beim nächsten Neustart ist es wieder überschrieben. Aber wie du sagst eigentlich sollte das garnicht nötig sein. Muss nochmal die ganzen Einstellungen durchgehen.

Wenn das passt mit dem Format was der Zyxel schickt ist das OK. Wenn nicht hast du Pech.
Relevant ist hier nur in welchem Format der Zyxel das schickt!
Ja im Zyxel Switch kann ich Einstellen wie er es schicken soll, gibt da zum Glück ziemlich viel Auswahl. Und der "Login" klappt ja soweit auch.

Das Problem dürfte an diesem Framed PPP/SLIP/CSLIP liegen. Das werde ich hoffentlich auch noch finden.

Danke dir jedenfalls face-smile
Member: aqui
Solution aqui Oct 06, 2022, updated at Jul 17, 2023 at 14:15:06 (UTC)
Goto Top
Ein paar Tests mit dem OPNsense FreeRadius Plugins brachten es ans Licht....
Man sieht es wenn man den Radius Server auf der OPNsense Firewall in den Debug Mode versetzt. Das ist schnell gemacht auf der OPNsense.
  • Im Setup temporär SSH Zugang für den Root User einrichten, einloggen und die Shell starten. (Danach den Shell Zugang wieder deaktivieren! (Security!))
  • ps ax zeigt den Radius Daemon "25120 - Is 0:00.26 /usr/local/sbin/radiusd" den man dann mit kill 25120 stoppen kann. Etwas unschön aber zum Troubleshooten ok.
  • Nun startet man mit /usr/local/sbin/radiusd -X den Radius manuell im Debug Mode und kann sich alles genau ansehen. (<ctrl> c stoppt ihn wieder)

Testswitch ist hier ein Cisco Catalyst 2960 und ein Ruckus ICX 7150 sowie einige Cisco WLAN APs mit IP .111.102 und einfacher MAB Auth Port Konfig:
!
radius server radius
address ipv4 192.168.111.103 auth-port 1812 acct-port 1813
key testing123
!
interface FastEthernet0/1
description Port Authentication Mac only
switchport mode access
authentication port-control auto
authentication periodic
mab
spanning-tree portfast
!


Der Test mit einer klassischen FreeRadius Server Installation auf einem Debian Server mit folgender User Konfig:
8cae4cfe0194	Cleartext-Password := "8cae4cfe0194"
                Tunnel-Type = 13,
                Tunnel-Medium-Type = 6,
                Tunnel-Private-Group-Id = 10 
ergibt erwartungsgemäß diesen debug Output:
(0) Received Access-Request Id 17 from 192.168.111.102:1645 to 192.168.111.103:1812 length 157
(0) User-Name = "8cae4cfe0194"
(0) User-Password = "8cae4cfe0194"
(0) Service-Type = Call-Check
(0) Framed-MTU = 1500
(0) Called-Station-Id = "00-17-5A-99-FA-01"
(0) Calling-Station-Id = "8C-AE-4C-FE-01-94"
(0) Message-Authenticator = 0xf61f38c493bfa820cc60053406e4a79c
(0) NAS-Port-Type = Ethernet
(0) NAS-Port = 50001
(0) NAS-Port-Id = "FastEthernet0/1"
(0) NAS-IP-Address = 192.168.111.102
...
(0) Sent Access-Accept Id 17 from 192.168.111.103:1812 to 192.168.111.102:1645 length 0
(0) Tunnel-Type = VLAN
(0) Tunnel-Medium-Type = IEEE-802
(0) Tunnel-Private-Group-Id = "10"

(0) Finished request

Zeigt das die VLAN Attribute zusammen mit dem Access Accept vom Radius Server sauber an den Switch rausgehen.
Was der Cisco und der Ruckus dann auch entsprechend quittieren mit "Success" und der korrekten VLAN Zuweisung (10):
Cat2960#sh authentication interface fa 0/1
Client list:
Interface  MAC Address     Method   Domain   Status         Session ID
Fa0/1      8cae.4cfe.0194  mab      DATA     Authz Success  C0A86F660000000F00572189

CiscoSW#sh vlan brief
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa0/2, Fa0/3, Fa0/4, Fa0/5
                                                Fa0/6, Fa0/7, Fa0/10, Fa0/13
                                                Fa0/14, Fa0/19, Fa0/20, Fa0/21
                                                Fa0/22, Fa0/23, Gi0/1, Gi0/2
10   VLAN-10                          active    Fa0/1
20   VLAN-20                          active    Fa0/8, Fa0/11, Fa0/12
30   VLAN-30                          active    Fa0/9 
Works as designed also und klassischer Standard wie es sein soll! 👍😉

Sieht man sich aber nun den Debug Output des OPNsense FreeRadius Plugins an fehlen diese VLAN Radius Attribute in der Access Accept Message!! 🤔
(4) Received Access-Request Id 3 from 192.168.111.102:1645 to 192.168.111.1:1812 length 157
(4)   User-Name = "8cae4cfe0194"
(4)   User-Password = "8cae4cfe0194"
(4)   Service-Type = Call-Check
(4)   Framed-MTU = 1500
(4)   Called-Station-Id = "00-17-5A-99-FA-01"
(4)   Calling-Station-Id = "8C-AE-4C-FE-01-94"
(4)   Message-Authenticator = 0x4bc7bacbd03a1a662c22323930792efd
(4)   NAS-Port-Type = Ethernet
(4)   NAS-Port = 50001
(4)   NAS-Port-Id = "FastEthernet0/1"
(4)   NAS-IP-Address = 192.168.111.102
...
(4)   Sent Access-Accept Id 12 from 192.168.111.1:1812 to 192.168.111.102:1645 length 32
(4)   Service-Type = Framed-User
(4)   Finished request 
Eine Recherche in den OPNsense Dokus brachte es dann ans Licht...
Das FreeRadius Plugin schickt die VLAN Attribute einzig nur wenn EAP-TLS verwendet wird. Das unterscheidet das OPNsense Setup von einem klassischen FreeRadius der das im Default auch mit MD5, PEAP usw. macht.

Die Lösung ist dann aber recht einfach indem man im OPNsense Setup den EAP Default auf EAP-TLS setzt im FreeRadius Service Setup. PEAP dürfte ebenso klappen.
opnrad
Und Tadaaa... Dann kommen bei der OPNsense auch sofort die VLAN Attribute mit: 🙂
(0) Sent Access-Accept Id 22 from 192.168.111.1:1812 to 192.168.111.102:1645 length 42
(0)   Tunnel-Type = VLAN
(0)   Tunnel-Medium-Type = IEEE-802
(0)   Tunnel-Private-Group-Id = "10"
(0)   Framed-Protocol = PPP
(0) Finished request 
Und das VLAN wird dann fehlerfrei am Port zugewiesen (siehe Cisco oben) und funktioniert dann auch bei allen anderen Herstellern auf Switch und WLAN APs mit Port Authentisierung und dynamischer VLAN Zuordnung.
Case closed...! 😉
Member: psimon87
psimon87 Oct 07, 2022 updated at 05:53:01 (UTC)
Goto Top
Zitat von @aqui:

Case closed...! 😉

Wenns so einfach wäre 😂 Danke erstmal für deine ausführliche Beschreibung und das testen. Ich habe EAP jetzt umgestellt und das ganze mal im Debug Modus laufen lassen. Du hast recht das VLAN Attribut kommt mit aber ich bekomme trotzdem eine 123er Adresse 😭

Das ist mein Debug Output nach dem anstecken

(1) Received Access-Request Id 247 from 192.168.123.12:1045 to 192.168.123.1:1812 length 66
(1)   User-Name = "e132f98ff6c3"  
(1)   User-Password = "e132f98ff6c3"  
(1)   NAS-IP-Address = 192.168.123.1
(1)   NAS-Identifier = "XS1930"  
(1) # Executing section authorize from file /usr/local/etc/raddb/sites-enabled/default
(1)   authorize {
(1)     policy filter_username {
(1)       if (&User-Name) {
(1)       if (&User-Name)  -> TRUE
(1)       if (&User-Name)  {
(1)         if (&User-Name =~ / /) {
(1)         if (&User-Name =~ / /)  -> FALSE
(1)         if (&User-Name =~ /@[^@]*@/ ) {
(1)         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(1)         if (&User-Name =~ /\.\./ ) {
(1)         if (&User-Name =~ /\.\./ )  -> FALSE
(1)         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(1)         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(1)         if (&User-Name =~ /\.$/)  {
(1)         if (&User-Name =~ /\.$/)   -> FALSE
(1)         if (&User-Name =~ /@\./)  {
(1)         if (&User-Name =~ /@\./)   -> FALSE
(1)       } # if (&User-Name)  = notfound
(1)     } # policy filter_username = notfound
(1)     [preprocess] = ok
(1)     [chap] = noop
(1)     [mschap] = noop
(1)     [digest] = noop
(1) suffix: Checking for suffix after "@"  
(1) suffix: No '@' in User-Name = "e132f98ff6c3", looking up realm NULL  
(1) suffix: No such realm "NULL"  
(1)     [suffix] = noop
(1) eap: No EAP-Message, not doing EAP
(1)     [eap] = noop
(1) files: users: Matched entry e132f98ff6c3 at line 2
(1)     [files] = ok
(1)     [expiration] = noop
(1)     [logintime] = noop
(1)     [pap] = updated
(1)   } # authorize = updated
(1) Found Auth-Type = PAP
(1) # Executing group from file /usr/local/etc/raddb/sites-enabled/default
(1)   Auth-Type PAP {
(1) pap: Login attempt with password
(1) pap: Comparing with "known good" Cleartext-Password  
(1) pap: User authenticated successfully
(1)     [pap] = ok
(1)   } # Auth-Type PAP = ok
(1) # Executing section post-auth from file /usr/local/etc/raddb/sites-enabled/default
(1)   post-auth {
(1)     update {
(1)       No attributes updated for RHS &session-state:
(1)     } # update = noop
(1)     [exec] = noop
(1)     policy remove_reply_message_if_eap {
(1)       if (&reply:EAP-Message && &reply:Reply-Message) {
(1)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(1)       else {
(1)         [noop] = noop
(1)       } # else = noop
(1)     } # policy remove_reply_message_if_eap = noop
(1)   } # post-auth = noop
(1) Login OK: [e132f98ff6c3/e132f98ff6c3] (from client Switch01 port 0)
(1) Sent Access-Accept Id 247 from 192.168.123.1:1812 to 192.168.123.12:1045 length 43
(1)   Tunnel-Type = VLAN
(1)   Tunnel-Medium-Type = IEEE-802
(1)   Tunnel-Private-Group-Id = "124"  
(1)   Framed-Protocol = PPP
(1) Finished request
Member: psimon87
psimon87 Oct 07, 2022 at 05:57:35 (UTC)
Goto Top
Und so sieht meine Config am Switch aus
screenshot 2022-10-07 075508
screenshot 2022-10-07 080004
screenshot 2022-10-07 075603
screenshot 2022-10-07 075933
screenshot 2022-10-07 075948
screenshot 2022-10-07 075656
screenshot 2022-10-07 075714
Member: aqui
aqui Oct 07, 2022, updated at Mar 12, 2023 at 10:56:13 (UTC)
Goto Top
Du hast recht das VLAN Attribut kommt mit aber ich bekomme trotzdem eine 123er Adresse
Dann "erkennt" der Switch die Radius VLAN Attribute nicht. Das kann mehrere Gründe haben. Die wichtigsten:
  • Der Switch supportet keine dynamischen VLANs mit MAB oder Dot1x.
  • Es gibt kein konfiguriertes VLAN mit der dynamischen ID auf dem Switch
  • Du hast fälschlicherweise dem Port im Setup ein VLAN statisch zugewiesen?! Das darf nicht sein, denn alle dynamischen VLAN Ports müssen zwingend immer im Default VLAN stecken bzw. die Default Konfig haben! Es darf keinerlei statische Zuweisung da geben, ansonsten scheitert die dynamische Zuweisung! Ggf also das "Ingress Check" entfernen.
Sehr hilfreich wäre ein Debug Output des Switches oder mindestens ein Log oder Syslog Output WAS der Switch macht bei Empfang des Access Accept vom Radius Server. Leider hast du genau DAS nicht gepostet. face-sad

Ein Test dieser OPNsense Konfig mit den folgenden Switches: Cisco Catalyst, Cisco SG/CBS, Ruckus ICX, HP ProCurve, HP-1910 und Mikrotik CRS-305 verlief erfolgreich so das man davon ausgehen kann das es definitiv nicht an der Radius Konfig an sich liegt sondern an einem Konfig Fehler deinerseits auf dem Switch oder einem Fehlverhalten der Switch Firmware.
In der Zyxel Knowledgebase gibt es eine entsprechende Anleitung die alle Settings beschreibt:
https://support.zyxel.eu/hc/en-us/articles/4453007504658-Configuring-RAD ...
Member: psimon87
psimon87 Oct 07, 2022 updated at 09:16:28 (UTC)
Goto Top
Also ich teste hier gerade mit einem Zyxel XS1930-10 und weiters bekomme ich dann noch einen XGS1930-28HP. Bei beiden steht zum Thema VLAN folgendes in den technischen Daten

802.1Q Static VLANs*/Dynamic VLANs: 1K/4K
Support up to 4K VLAN ID
Independent VLAN Learning (IVL)
Port-based VLAN
Voice VLAN
VLAN trunking
Guest VLAN
802.1x VLAN and bandwidth assignment by RADIUS
DHCP relay per VLAN

Also prinzipiell sollte er mit dynamischen VLANs umgehen können.

Das einzige was ich dazu jetzt noch gefunden gefunden habe ist das hier.

GVRP
GVRP (GARP VLAN Registration Protocol) is a registration protocol that defines a way for switches to register necessary VLAN members on ports across the network.
Select this check box to permit VLAN groups beyond the local Switch.

Habe es aktiviert, hat aber auch nicht funktioniert, egal ob mit oder ohne Ingress Check. Der Port der für MAC Authentication freigegeben ist steht bei allen VLANS auf Normal und ist getaggt. Wenn ich das VLAN 1 auch auf "Normal" stelle statt "Fixed" bekomme ich aber überhaupt keine DHCP Adresse mehr.

In der Hilfe steht dazu folgendes: Select Normal for the port to dynamically join this VLAN group using GVRP. This is the default selection.

Ich werde mal schauen das ich LOGs rauskriege und hier reinstelle. Wäre dir dankbar wenn du drüberschauen könntest dir fällt da sicher mehr auf wie mir.
Member: aqui
aqui Oct 07, 2022 at 12:14:19 (UTC)
Goto Top
GVRP hat mit dynamischen VLANs nichts zu tun.
Das ist ein standartisiertes VLAN Registrierungs Protokoll wie das proprietäre VTP bei Cisco. Es bewirkt das VLANs die an einem Switch konfiguriert werden dynamisch und automatisch auch an alle anderen GVRP sprechenden VLAN Switches im Netz distribuiert werden.
Das hat keinerlei Einflüss auf eine dynmaische VLAN Portzuweisung mit MAB oder Dot1x.
Ich werde mal schauen das ich LOGs rauskriege
Das wäre das Wichtigste um zu sehen was da genau auf dem Switch abgeht.
Bei Cisco Switches gibt es einen Debug Kommando. Ein "debug mab all" z.B. zeigt dann auch auf dem Switch detailierte Debug Messages die genau beschreiben was auf der Switchseite abgeht. Ggf. hat Zyxel sowas ja auch zusätzlich zum Log oder Syslog?!
Member: aqui
aqui Oct 31, 2022 at 10:29:37 (UTC)
Goto Top
Wenns das denn nun war bitte dann auch nicht vergessen deinen Thread hier als erledigt zu schliessen!
Member: psimon87
psimon87 Nov 02, 2022 at 10:44:20 (UTC)
Goto Top
Zitat von @aqui:

Wenns das denn nun war bitte dann auch nicht vergessen deinen Thread hier als erledigt zu schliessen!

Irgendwie klappts leider immer noch nicht ganz, aber das liegt wohl an der OPNSense und meinem (nicht)Wissen dazu 😅. Hab da noch so meine Probleme damit. Bin jetzt am überlegen mich nach was anderen umzusehen aber mache hier mal zu da es ja nicht direkt was mit dem Thema zu tun hat. Danke jedenfalls für die Hilfe 👍
Member: aqui
aqui Nov 02, 2022, updated at Dec 11, 2023 at 16:24:24 (UTC)
Goto Top
Was genau klappt den nicht an der OPNsense? Nur die Mac Authentisierung an den Kupferports eines angeschlossenen Switches über den Radius?
Member: hidden
hidden Dec 11, 2023 at 14:16:51 (UTC)
Goto Top
Moin'zam!

Diese Geschichte ist zwar schon ein bisschen in die Jahre gekommen, aber irgendwie fehlt mir hier das 'Happy End'.

Der Switch, welcher vom Fragesteller verwendet wird/wurde, bietet die gewünschte Funktion nicht an.

Auf der Hersteller-Website wird in der XGS-Serie unter Funktionen Folgendes beschrieben:

- 802.1x VLAN and bandwidth assignment by RADIUS*

Dies ist richtig. ABER nur wenn beides verwendet wird (Mac Auth via Radius + 802.1x). Heißt: VLAN's werden nur dann dynamisch zugewiesen, wenn clientseitig die Dot1x Authentifizierung aktiviert ist und Du mit USER = MAC & PASS = MAC um die Ecke kommst.

Klettert man bei Zyxel die Preisleiter etwas nach oben heißt das Ganze dann "MAC-based authentication per VLAN" und funktioniert so wie es soll. Die OPNSense kann in diesem Fall nichts dafür.

Ich hoffe diesen Thread damit unmissverständlich geschlossen zu haben.
Member: aqui
aqui Dec 11, 2023 at 16:27:33 (UTC)
Goto Top
Danke für das verspätete Feedback. 👍
Wenn die verwendete Switch Hardware nicht mitspielt in Bezug auf vorhandene Features kann man natürlich lange versuchen. face-wink