FreeRadius 服务器:最大连接用户数的 RadGroupReply 属性?

FreeRadius 服务器:最大连接用户数的 RadGroupReply 属性?

我有一台 FreeRadius 服务器,我想设置连接到特定 NAS 的用户数量限制。我当前的设置是,连接到特定 NAS 的每个用户都会添加到连接到该 NAS 的 Radius 用户组中。然后,RadGroupReply 会为特定 NAS 的用户执行我想要执行的操作。目前,我可以设置最大下载速度限制以及会话超时,但我想知道如果我要限制允许连接到特定 NAS 的最大用户数量,应该使用什么属性。

谢谢。

答案1

当然,首先您需要使用 SQL 数据库(例如 postgresql 或 MySQL)设置 RADIUS 会计。

然后,您需要实施一个用于检测陈旧会话的解决方案。这可以很简单,例如启用临时更新并关闭上次更新之前的会话,然后(NOW() - <interim time>)使用 cron 作业。如何计算过去的时间因数据库而异,因此您必须找到适合您使用的数据库的正确语法。

最后,您需要编写一个 unlang 策略,获取 NAS 的实时会话计数并将其与配置的最大值进行比较。在 FreeRADIUS v3.0.x 中,您可以通过将任意对添加到客户端部分来将其与 NAS 关联。

客户端部分示例:

client test {
    ipaddr = 127.0.0.1
    secret = 'testing123'
    max_users = 10
}

策略示例:

authorize {
    if ("%{sql:SELECT COUNT(*) FROM radacct WHERE nasipaddress = '%{NAS-IP-Address}' AND acctstoptime != NULL}" > "%{client:max_users}") {
        update reply {
            Reply-Message := 'Sorry, too many users connected, please try again later'
        }
        reject
    }
}

相关内容