达到带宽时断开用户连接

问题描述 投票:0回答:1

我在 Centos 6.x 上配置 FreeRadius 服务器,身份验证在 mysql 数据库上工作正常。 但我无法使用 sqlcounter 来检查使用我的 mysql 数据库中的用户的带宽总和。

我做了一个这样的sqlcount:

sqlcounter  wifi_Limit{
count-attribute = Acct-Input-Octets
counter-name = Mikrotik-Total-Limit
check-name = Mikrotik-Total-Limit
reply-name = Session-Timeout
sqlmod-inst = sql
key = User-Name
reset = never
query = "SELECT ((SUM(AcctInputOctets)+SUM(AcctOutputOctets))) FROM radacct WHERE UserName='%{%k}'"

}

并且还将 wifi_limite 插入“站点可用默认值”授权中,如下所示:

poyrazwifi_Limit{
    reject = 1
}
if(reject){
    reject
}

我在 radcheck 中插入“Mikrotik-Total-Limit”属性,如下所示:

insert into radcheck(username,attribute,op,value) values('test','Mikrotik-Total-Limit',':=','999999')

现在,当用户使用总带宽“999999”后手动断开pppoe连接时,此配置可以正常工作,之后该用户无法再次登录。

但是我喜欢在使用总带宽“999999”时自动断开用户连接。

请建议我解决这个问题。 谢谢你

freeradius
1个回答
4
投票

首先,你已经定义了

poyrazwifi_Limit

在授权部分,与您配置的sqlcounter名称不同:-

sqlcounter wifi_Limit{

其次,您已经配置了 sqlcounter 并给出了

回复名称=会话超时

您不需要这个,而是这是一个错误的配置。这将发送剩余的任何数据字节供用户浏览作为会话超时。

例如,您已将用户的“Mikrotik-Total-Limit”配置为 999999,并且用户已浏览其中的 999990 字节。

因此,如果用户验证了 Session-Timeout=9 的回复属性,将会得到回复。因此,9 秒后,无论用户是否浏览了剩余的 9 个字节,用户都将被取消身份验证,我认为这不是您想要的。

因此您可以简单地将计数器配置为:-

sqlcounter  wifi_Limit{
count-attribute = Acct-Input-Octets
counter-name = Mikrotik-Total-Limit
check-name = Mikrotik-Total-Limit
sqlmod-inst = sql
key = User-Name
reset = never
query = "SELECT ((SUM(AcctInputOctets)+SUM(AcctOutputOctets))) FROM radacct WHERE UserName='%{%k}'"

并将部分授权为:-

authorize {
......
wifi_Limit
......
}

第三,现在介绍如何在达到设定的数据限制时自动断开用户连接。你可以使用 unlang 来实现这一点,所以你必须检查每个计费数据包并使用以下代码来断开用户连接:-

accounting {
......
if ( "%{sql: SELECT ((SUM(AcctInputOctets)+SUM(AcctOutputOctets))) FROM radacct WHERE UserName='%{User-Name}'}" > "%{sql: SELECT value from radcheck where username='%{User-Name}' and attribute='Mikrotik-Total-Limit'}" ) {
     update disconnect {
            User-Name = "%{User-Name}"
            Calling-Station-Id = "%{Calling-Station-Id}"
     }
}
......
}

注意:为此,您的 NAS 应侦听 Radius 的 COA 或 POD 请求,并且应在 FreeRadius client.conf 文件中将 NAS 配置为 COA 服务器

© www.soinside.com 2019 - 2024. All rights reserved.