Radius sqlcounter 键

Radius sqlcounter 键

我的问题的简短版本是如何将单个用户会话限制为 24 小时,即使每个会话都有相同的用户名。

我使用 CoovaChilli 设置了 radius 服务器,用于对无线用户进行身份验证以访问网络。用户只需同意“服务条款”,因此我有一个对所有人都免费的用户帐户:

| 22 | freeuser | 同时使用 | := | 99 | | 21 | freeuser | 用户密码 | := | freepass |

我想将每个用户的会话限制为 24 小时。但是 Max-All-Session 计数器是:

查询 = “SELECT SUM(AcctSessionTime) \ FROM radacct WHERE UserName='%{%k}'”

因此,如果我指定 Max-All-Session,则每个免费用户的登录时间将计入 24 小时限制,并且每个会话都会很快过期。是否可以为该 SQL 计数器使用两个键,以便我可以检查 UserName 和 CalledStationId?这应该允许我通过 MAC 地址和用户名来限制单个会话时间。

或者我应该尝试用其他/更好的方法来解决这个问题?谢谢!

答案1

只需将定义中的 Key 更改为:

called-station-id

并将查询更改为:

SELECT SUM(AcctSessionTime) \ FROM radacct WHERE calledstationid='%{%k}

但是这个查询有一个问题,即用户第一次连接时,将不会获得超时,因为该查询将返回 NULL ,而不是 0

相关内容