|
购买VPS相信很多人都是为了搞VPN的,搞了VPN后必然想做流量限制。考虑到网上教程有很多问题的,故将博客文章再贴出来。
首先要安装配置好 FreeRADIUS 用于做认证。方法见:《PPTP/L2TP + FreeRADIUS + MySQL 安装与配置》
一、启用 Rlm sqlcounter 模块
查找"counter.conf”(695行),去掉#号
[ol]vim /usr/local/etc/raddb/radiusd.conf[/ol]复制代码
二、添加 Traffic Counter流量计数器
网上一些教程有拼写错误,折腾了大半天才在官方文档上找到原因。
[ol]vim /usr/local/etc/raddb/sql/mysql/counter.conf[/ol]复制代码
在文件末尾添加下面代码
[ol]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'"}[/ol]复制代码
上面代码意思是按月进行统计,从数据库的radacct表中,根据用户名(%k)将所有入站和出站流量累加。
时间也是可以自定义的(months、weeks、days、hours),也可以指定具体值,如三天重置一次 "reset = 3 d"
三、启用Traffic Counter流量计数器
[ol]vim /usr/local/etc/raddb/sites-enabled/default[/ol]复制代码
在authorize区块的末尾(205行)添加
[ol]monthlytrafficcounter[/ol]复制代码
四、添加字典文件
[ol]vim /usr/local/etc/raddb/dictionary[/ol]复制代码
在文件末尾添加下面两行
[ol]ATTRIBUTE Max-Monthly-Traffic 3003 integerATTRIBUTE Monthly-Traffic-Limit 3004 integer[/ol]复制代码
五、数据库插入流量限制值
注意事项:
1)这里插入到radgroupreply表,是限制某个用户组的流量。也可以插入到radcheck表,以限制某个用户的流量。
2)流量值以 byte 为单位,1G = 1073741824 bytes
3)VIP1是用户组,123456是数据库root密码
# 连接到MySQL数据库
[ol]mysql -uroot -p123456;[/ol]复制代码
# 每月最大流量(1G)
[ol]INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('VIP1','Max-Monthly-Traffic',':=','1073741824');[/ol]复制代码
原文:https://wangyan.org/blog/freeradius-traffic-limit.html |
|