首页 > Linux系统 > system > FreeRADIUS实现VPN流量控制功能
2013
03-01

FreeRADIUS实现VPN流量控制功能

请先安装好PPTP + FreeRADIUS + MySQL,然后再继续本文的安装过程。

vi /usr/local/etc/raddb/radiusd.conf 

# 取消注释712行, $INCLUDE sql/mysql/counter.conf

vi /usr/local/etc/raddb/sql/mysql/counter.conf 

# 最底行加入如下代码:

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'"
}
vi /usr/local/etc/raddb/sites-enabled/default 

# 找到下面这块区域

authorize {
…
} 

# 在该区域的尾部(即“}”前一行)添加一行

monthlytrafficcounter
vi /usr/local/etc/raddb/dictionary 

# 在最底部插入:

ATTRIBUTE Max-Monthly-Traffic 3003 integer
ATTRIBUTE Monthly-Traffic-Limit 3004 integer
mysql -uroot -p;
use radius;
# 在数据库中限制用户组的最大流量为1M(本例中的用户组名为user)
mysql> INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','1048576');
# 流量统计时间的间隔(60秒)
mysql> INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','60');
# 加入一个新的VPN用户(用户名zhukun.net,密码abc123)
mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('xsdou.com', 'Password', 'abc123');
# 将用户zhukun.net加到组里
mysql> insert into radusergroup(username,groupname) values('xsdou.com','user');
# 退出Mysql
mysql> exit
# 重启radius让其生效
/etc/init.d/radiusd restart 

注意:如果同时用phpMyAdmin来管理MySQL的话,建议把php.ini里session.auto_start的值设置为1(默认是0),否则phpMyAdmin会出现“Cannot start session without errors”的错误。

最后编辑:
作者:admin

留下一个回复