我是Freeradius的新手。我的NAS是StrongSwan,似乎是supporting CoA。 我也启用了sql accounting mod,这允许我计算八位字节。
有许多教程介绍如何计算用户的会话时间,并在时间结束后执行会话超时操作。但几乎没有什么我能找到解释如何计算用户的数据使用情况并在说出100 KB的每月使用量后断开他的连接。
vim / etc / freeradius / mods-enabled / sqlcounter
sqlcounter totaldatacounter {
sql_module_instance = sql
dialect = ${modules.sql.dialect}
counter_name = Max-Capacity
check_name = Acct-Output-Octets
reply_name = Session-Timeout
key = User-Name
reset = monthly
query = "SELECT ((SUM(`acctinputoctets`)+SUM(`acctoutputoctets`))) FROM radacct WHERE `username`='%{${key}}' AND Month(acctstoptime)=(Month(NOW())) AND Year(acctstoptime)=Year(NOW())"
}
当我为给定用户运行上面的查询时,我得到以下数据用法:76827648
这超出了我在100000
表中设置radcheck
的限制:
INSERT INTO `radcheck` (`id`, `username`, `attribute`, `op`, `value`)
VALUES
(3, '0799a559-1426-478a-b46a-a33f1198cd24', 'Acct-Output-Octets', ':=', '100000');
那为什么还能连接?
我在freeradius -X
日志文件中有pastebin。