标签:stongswan
stongswan订制每月每年流量方法
网上好多都是订制月份的比较多,本人由于工作需要,订制每月,每年,每半年的流量需要,找了好多资料都是每月的多,我自己研究出订制方法,希望可以帮助有需要的网友。
其实你订制完每月的方法后,再依此订制年或半年的方法如下:
月的大家都会我就不说了,我写一下年的:
vi /etc/raddb/sql/mysql/counter.conf
在文件最末尾增加如下:
sqlcounter yearlytrafficcounter {
counter-name = yearly-Traffic
check-name = Max-yearly-Traffic
reply-name = yearly-Traffic-Limit
sqlmod-inst = sql
key = User-Name
reset = 12m
query = "SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct WHERE UserName=‘%{%k}‘ AND UNIX_TIMESTAMP(AcctStartTime) > ‘%b‘"
增加完保存退出,再编辑vi /etc/raddb/dictionary,在文件增加如下:
ATTRIBUTE Max-Monthly-Traffic 3003 integer
ATTRIBUTE Monthly-Traffic-Limit 3004 integer
ATTRIBUTE Max-yearly-Traffic 3005 integer
ATTRIBUTE yearly-Traffic-Limit 3006 integer
上面两个是月的,下面这两个是年的,然后保存退出
最后再编辑vi /etc/raddb/sites-enabled/default文件,在authorize的末尾大概在223位置,在}上面增加
monthlytrafficcounter
yearlytrafficcounter
当时我没有调通的原因是由于我加了这个
update request {
Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username=‘%{User-Name}‘ ORDER BY priority}"
}
if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username=‘%{User-Name}‘ AND date_format(acctstarttime, ‘%Y-%m-%d‘) >= date_format(now(),‘%Y-%m-01‘) AND date_format(acctstoptime, ‘%Y-%m-%d‘) <= last_day(now());}" >= "%{sql: SELECT value FROM radgroupreply WHERE groupname=‘%{Group-Name}‘ AND attribute=‘Max-Monthly-Traffic‘;}") {
reject
}
,我一开始以为再加一个就行了,可是不行,只能去了,这样才能实现月和流量同时可以验证通过的,上面的意思就是流量如果超过了就会不让登陆,这个我们可以写一个脚本来解决上面的问题,每隔多少时间去查一次就行了。
至此解决了问题。
本文出自 “流星” 博客,请务必保留此出处http://461884.blog.51cto.com/451884/1650946
标签:stongswan
原文地址:http://461884.blog.51cto.com/451884/1650946