[原创]freeradius2.2.6的sqlcounter的用法,实现累计时长或流量控制
来源:互联网 发布:足彩开奖数据api接口 编辑:程序博客网 时间:2024/04/29 10:55
一、累计时长控制
1、radiusd.conf配置文件配置
modules{ } 中开放counter.conf配置文件
modules {
$INCLUDE sql/mysql/counter.conf
...some other entries here...
2、sites-enabled/default文件的修改
authorize{ } 在最后增加计数器选项
authorize {
...some entries here...
...some entries here...
...some entries here...
...some entries here...
noresetcounter
dailycounter
monthlycounter
}
3、基于用户的累计时长控制
在radcheck表插入用户时,需要同时插入以下几个记录
INSERT into radcheck (username, attribute, op, value) VALUES ('Glenn','Max-All-Session',':=','54000');
INSERT into radcheck (username, attribute, op, value) VALUES ('Glenn','Max-Daily-Session',':=','10800');
INSERT into radcheck (username, attribute, op, value) VALUES ('Glenn','Max-Monthly-Session',':=','10800');
4、基于组的累计时长控制
在radgroupcheck表中,增加组检查信息
INSERT into radgroupcheck(groupname, attribute, op, value) VALUES ('normal','Max-All-Session',':=','54000');
INSERT into radgroupcheck(groupname, attribute, op, value) VALUES ('normal','Max-Daily-Session',':=','10800');
INSERT into radgroupcheck(groupname, attribute, op, value) VALUES ('normal','Max-Monthly-Session',':=','10800');
在插入用户时,在radusergroup表中管理用户到该组
二、累计流量控制
1、与时长控制一致,在radiusd.conf中开放counter.conf
modules{ } 中开放counter.conf配置文件
modules {
$INCLUDE sql/mysql/counter.conf
...some other entries here...
2、在sqlcounter.conf文件末尾添加下面代码
sqlcounter dailytrafficcounter {
counter-name = Daily-Traffic
check-name = Max-Daily-Traffic
reply-name = Daily-Traffic-Limit
sqlmod-inst = sql
key = User-Name
reset = daily
query = "SELECT SUM(acctinputoctets + acctoutputoctets) \
FROM radacct WHERE username = '%{%k}' AND \
UNIX_TIMESTAMP(acctstarttime) > '%b'"
}
sqlcounter monthlytrafficcounter {
counter-name = Monthly-Traffic
check-name = Max-Monthly-Traffic
reply-name = Monthly-Traffic-Limit
sqlmod-inst = sql
key = User-Name
reset = monthly
query = "SELECT SUM(acctinputoctets + acctoutputoctets) \
FROM radacct WHERE UserName='%{%k}' AND \
UNIX_TIMESTAMP(AcctStartTime) > '%b'"
}
sqlcounter noresettrafficcounter {
counter-name = All-Traffic
check-name = Max-All-Traffic
reply-name = All-Traffic-Limit
sqlmod-inst = sql
key = User-Name
reset = never
query = "SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct WHERE UserName='%{%k}'"
}
3、sites-enabled/default文件的修改
authorize{ } 在最后增加计数器选项
authorize {
...some entries here...
...some entries here...
...some entries here...
...some entries here...
noresettrafficcounter
dailytrafficcounter
monthlytrafficcounter
}
4、添加字典文件
vim /etc/raddb/dictionary
在文件末尾添加下面几行
ATTRIBUTE Max-Daily-Traffic 3003 integer
ATTRIBUTE Daily-Traffic-Limit 3004 integer
ATTRIBUTE Max-Monthly-Traffic 3005 integer
ATTRIBUTE Monthly-Traffic-Limit 3006 integer
ATTRIBUTE Max-All-Traffic 3007 integer
ATTRIBUTE All-Traffic-Limit 3008 integer
5、组方式限定用量
INSERT INTO radgroupcheck (GroupName, Attribute, op, Value) values("normal", "Max-Daily-Traffic", ":=", "1048576");
INSERT INTO radgroupcheck (GroupName, Attribute, op, Value) values("normal", "Max-Monthly-Traffic", ":=", "1073741824");
INSERT INTO radgroupcheck (GroupName, Attribute, op, Value) values("normal", "Max-All-Traffic", ":=", "10737418240");
注意:3.0以下版本的freeradius,由于计数器门限变量在代码中是int32,所以限制流量时,最大门限int32的最大值
(2147483648),即2G字节。
因此,可以考虑只按天或按月限制,不要做太长周期的限制
1 0
- [原创]freeradius2.2.6的sqlcounter的用法,实现累计时长或流量控制
- TCP的工作原理,TCP的流量控制原理,滑动窗口,拥塞窗口,ACK累计确认等
- TCP的工作原理,TCP的流量控制原理,滑动窗口,拥塞窗口,ACK累计确认等
- freeradius2 限制流量
- 利用滑动窗口实现流量的控制
- lede编译freeradius2时遇到的错误解决方法
- 建议tencent取消QQ累计时长以获取相应等级的制度!
- 计算两个日期之间的时间差、累计时长,精确到秒
- linux的流量控制
- TCP的流量控制
- TCP的流量控制
- TCP的流量控制
- TCP的流量控制
- TCP的流量控制
- Floodlight的流量控制
- TCP的流量控制
- TCP的流量控制
- TCP的流量控制
- HEVC中CTU递归代码分析
- 2222222222222222222222222222222
- d3
- PCA 主成分分析
- 【IOS】AFNetworking 2.0中XML请求处理专题
- [原创]freeradius2.2.6的sqlcounter的用法,实现累计时长或流量控制
- 【Leetcode】integer to Roman
- 【IOS】IOS开发问题解决方法索引(一)
- Balanced Binary Tree
- 华为机试—亮着电灯的盏数(优化过的双重for)
- android Fragments (Android官方文档中文版)
- android关于H264
- Perl命令行用法解析
- 使用svn merge文件