我有一台 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
}
}