gpt4 book ai didi

mysql - Freeradius 与 NAS 显示的在线用户数不正确

转载 作者:行者123 更新时间:2023-11-29 17:20:54 24 4
gpt4 key购买 nike

场景:Freeradius 服务器 2.2.8 作为 Ubuntu 服务器上的计费系统,NAS 是 Mikrotik 路由器 ccr1036 v 6.42.4

问题:在 NAS 上我可以看到 900 个活跃/在线用户,而在 freeradius 上我看到 500 个 session (其中 acctstop 时间为 NULL)

我使用以下查询来计算 FR 的在线用户数量。

mysql -uroot -s -e "use radius; select * from radacct  WHERE acctstoptime IS NULL;" |wc -l

我尝试断开 NAS 上的所有用户,清除 freeradius 的所有 session ,用户重新连接正常,但 NAS 与 freeradius 上的用户数量仍然不匹配。我应该检查什么?

最佳答案

这是一个根本问题,因为 RADIUS 是一种有损协议(protocol)。如果用户出于某种原因脱机,RADIUS 服务器不会收到 Acct-Status-Type=Stop数据包,则 session 将被永久标记为打开。

如果您使用 FreeRADIUS v3 中的 SQL 查询,您将看到它们有 AcctUpdateTime field 。这个AcctUpdateTime字段设置为 NOW()每次 session 更改时。

https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/raddb/mods-config/sql/main/mysql/queries.conf#L332

此字段的目的是通过查看 session 上次更新的时间,使外部脚本可以轻松进入并纠正明显过时的 session 。

如果您想解决此问题,我要么更新到 FreeRADIUS v3.0.x(现在暂时不支持 2.2.8),要么使用 v3.0.x 架构和查询(它们应该大部分工作)。

然后每 10 分钟运行一次查询来更新带有 NULL 的行AcctStopTime ,其中 NOW() 之间的差异和AcctUpdateTime> <NAS Interim Interval> * 2 ,设置AcctStopTimeNOW() .

为此,您需要在 NAS 上启用临时更新。这些是从 NAS 定期发送的计费请求,用于更新流量计数器等内容,但在这种情况下,它们也可以用作有用的心跳消息。

如果您无法确定此静态配置选项在 NAS 上的位置,有时可以通过返回 Acct-Interim-Interval 来启用它。 Access-Accept 中的属性,它将指定中间间隔(以秒为单位)。

关于mysql - Freeradius 与 NAS 显示的在线用户数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51258440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com