RADSEC keep TLS connections open with keep-alive
Alan DeKok
aland at deployingradius.com
Thu Feb 20 16:10:25 UTC 2025
On Feb 20, 2025, at 10:34 AM, Michal Moravec <michal.moravec at macadmin.cz> wrote:
> What actually happened was the server closing the connection after 30 seconds which is the default idle_timeout in both listen and client/limit (<- even when undefined) stanzas in tls (radsec) configuration file.
> After changing idle_timeout to higher value in both in client/limit and listen stanzas, the server keeps the tcp connection open for defined amount of time.
That's good.
>>> Some network vendors support sending keep-alive messages through the connection in order to keep it established and re-use it for subsequent requests.
>>
>> This is the Status-Server packet. FreeRADIUS supports this.
> In this case the vendor is Cisco Meraki. It seems they don't send "Status-Server".
> NAS sends TCP keep-alive message (empty TCP header with ACK flag) every 270 seconds until it reaches "RADSec TLS idle timeout" (default 15 minutes) which I interpret as connection being open for X minutes without any actual application-level traffic.
Unfortunately those packets ensure that intermediate firewalls don't close the TCP connection. But the application doesn't see those packets.
> So I tried this:
> 1. EAP authentication from a client which makes NAS to open the tcp radsec connection to FreeRADIUS
> 2. RADIUS with idle_timeout = 330 then says "Waking up in 324.8 seconds."
> 3. Some time after that NAS sends TCP keep-alive
> 4. RADIUS wakes up as scheduled and closes the connection with "Reached idle timeout on socket auth+acct from client (A.B.C.D, 42471)"
>
> I guess the answer is to use higher value for idle_timeout since TCP keep-alive does not seem to affect this?
Yes.
Though there usually isn't a lot of benefit in keeping connections open for 10+ minutes without any traffic.
Alan DeKok.
More information about the Freeradius-Users
mailing list