Stuck at "More than 50 roundtrips"

thomas at habets.se thomas at habets.se
Mon Oct 23 22:45:06 UTC 2023


Hi.

I'm trying to set up EAP-TLS with certificates with an Android Pixel 7
Pro, latest OS, via a Unifi U6 Pro, using FreeRadius 3.0.17 on a
raspberry pi 4.

I took the default config, and changed as little as possible:

clients.conf, added:

client wifi_aps {
       ipaddr = 192.168.123.0/24
       secret = radiuspasswordhere
}

In case it would help, I also added a user. PEAP auth with
username/password works.

wifi    Cleartext-Password := "XXXXXXX"
        Tunnel-Type = "VLAN",
        Tunnel-Medium-Type = "IEEE-802",
        Tunnel-Private-Group-Id = "13",
        Reply-Message = "Hello there!"

Made the certificates by editing the .cnf files and doing "make
ca.pem", "make server.pem", and "make client.pem".

I loaded the .p12 on the Android phone, and changed the paths in
mod-enabled/eap.

I changed default_eap_type to tls, and added use_tunneled_reply to
tls-config.

Here's a selection of the output of freeradius -X:

First access request in packet 1:
(1) Received Access-Request Id 61 from 192.168.XX.Z:59545 to
192.168.XX.Y:1812 length 216

SSL handshake done by packet 8:
(8) eap_tls: SSL Connection Established
(with client cert details shown)

After that there's just a bunch of apparently empty-ish repeating
Access-Request/Access-Challenge[1], and it's stuck that way until:

(52) eap: ERROR: rlm_eap (EAP): Aborting! More than 50 roundtrips made
in session with state 0x8e36e001bc25ed47

What am I doing wrong? In this example I'm putting "wifi" as identity,
in case it helps that it's present in the user config.

I expect that at some point the server should reply Accepted, instead
of a new challenge. I guess the client cert was not enough auth? Is
there a config I need to change so that cert is sufficient?

I'd appreciate any help. Thanks.

[1]

(14) Received Access-Request Id 74 from 192.168.XX.Z:59545 to
192.168.XX.Y:1812 length 231
(14)   User-Name = "wifi"
(14)   NAS-IP-Address = 192.168.XX.Z
(14)   NAS-Identifier = "xxx"
(14)   Called-Station-Id = "xx-xx-xx-xx-xx-xx:secnet2"
(14)   NAS-Port-Type = Wireless-802.11
(14)   Service-Type = Framed-User
(14)   Calling-Station-Id = "xx-xx-xx-xx-xx-xx"
(14)   Connect-Info = "CONNECT 0Mbps 802.11b"
(14)   Acct-Session-Id = "3E1F2B0282D15C98"
(14)   Acct-Multi-Session-Id = "3870EEE1F7155662"
(14)   WLAN-Pairwise-Cipher = 1027076
(14)   WLAN-Group-Cipher = 1027076
(14)   WLAN-AKM-Suite = 1027073
(14)   Framed-MTU = 1400
(14)   EAP-Message = 0x02ed00060d00
(14)   State = 0x8e36e00182dbed476556c84932fcf3de
(14)   Message-Authenticator = 0x03a0ae965bd12781a50f91cd3ac1aaf6
(14) session-state: No cached attributes
(14) # Executing section authorize from file
/etc/freeradius/3.0/sites-enabled/default
(14)   authorize {
(14)     policy filter_username {
(14)       if (&User-Name) {
(14)       if (&User-Name)  -> TRUE
(14)       if (&User-Name)  {
(14)         if (&User-Name =~ / /) {
(14)         if (&User-Name =~ / /)  -> FALSE
(14)         if (&User-Name =~ /@[^@]*@/ ) {
(14)         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(14)         if (&User-Name =~ /\.\./ ) {
(14)         if (&User-Name =~ /\.\./ )  -> FALSE
(14)         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(14)         if ((&User-Name =~ /@/) && (&User-Name !~
/@(.+)\.(.+)$/))   -> FALSE
(14)         if (&User-Name =~ /\.$/)  {
(14)         if (&User-Name =~ /\.$/)   -> FALSE
(14)         if (&User-Name =~ /@\./)  {
(14)         if (&User-Name =~ /@\./)   -> FALSE
(14)       } # if (&User-Name)  = notfound
(14)     } # policy filter_username = notfound
(14)     [preprocess] = ok
(14)     [chap] = noop
(14)     [mschap] = noop
(14)     [digest] = noop
(14) suffix: Checking for suffix after "@"
(14) suffix: No '@' in User-Name = "wifi", looking up realm NULL
(14) suffix: No such realm "NULL"
(14)     [suffix] = noop
(14) eap: Peer sent EAP Response (code 2) ID 237 length 6
(14) eap: No EAP Start, assuming it's an on-going EAP conversation
(14)     [eap] = updated
(14) files: users: Matched entry wifi at line 90
(14)     [files] = ok
(14)     [expiration] = noop
(14)     [logintime] = noop
(14) pap: WARNING: Auth-Type already set.  Not setting to PAP
(14)     [pap] = noop
(14)   } # authorize = updated
(14) Found Auth-Type = eap
(14) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
(14)   authenticate {
(14) eap: Expiring EAP session with state 0x8e36e00182dbed47
(14) eap: Finished EAP session with state 0x8e36e00182dbed47
(14) eap: Previous EAP request found for state 0x8e36e00182dbed47,
released from the list
(14) eap: Peer sent packet with method EAP TLS (13)
(14) eap: Calling submodule eap_tls to process data
(14) eap_tls: Continuing EAP-TLS
(14) eap_tls: Peer ACKed our handshake fragment
(14) eap_tls: [eaptls verify] = request
(14) eap_tls: [eaptls process] = handled
(14) eap: Sending EAP Request (code 1) ID 238 length 10
(14) eap: EAP session adding &reply:State = 0x8e36e00183d8ed47
(14)     [eap] = handled
(14)   } # authenticate = handled
(14) Using Post-Auth-Type Challenge
(14) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
(14)   Challenge { ... } # empty sub-section is ignored
(14) Sent Access-Challenge Id 74 from 192.168.XX.Y:1812 to
192.168.XX.Z:59545 length 0
(14)   Tunnel-Type = VLAN
(14)   Tunnel-Medium-Type = IEEE-802
(14)   Tunnel-Private-Group-Id = "13"
(14)   Reply-Message = "Hello there!"
(14)   EAP-Message = 0x01ee000a0d8000000000
(14)   Message-Authenticator = 0x00000000000000000000000000000000
(14)   State = 0x8e36e00183d8ed476556c84932fcf3de
(14) Finished request

--
typedef struct me_s {
  char name[]      = { "Thomas Habets" };
  char email[]     = { "thomas at habets.se" };
  char kernel[]    = { "Linux" };
  char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt" };
  char pgp[] = { "9907 8698 8A24 F52F 1C2E  87F6 39A4 9EEA 460A 0169" };
  char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;


More information about the Freeradius-Users mailing list