Press "Enter" to skip to content

FreeRADIUS实现VPN流量控制功能

本文接上文《PPTP + FreeRADIUS + MySQL 安装与配置》,请先安装好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 ('zhukun.net', 'Password', 'abc123');
# 将用户zhukun.net加到组里
mysql> insert into radusergroup(username,groupname) values('zhukun.net','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”的错误。

3 Comments

  1. pba 2012-03-31

    搞的这么复杂啊,小猪现在功底越来越厚了啊。

  2. 夜泊枫桥 2012-04-03

    zhukun,想用vps来卖虚拟主机,有没有好的主机面板控制程序推荐啊,便宜或者免费的最好。

    • bear 2012-04-04

      你的留言怎么跑到垃圾留言区了,幸好我刚才及时看见。
      免费的主机面板程序就是kloxo了。收费的比较便宜的是DirectAdmin了,淘宝上的终身授权好像要340多块吧。

Leave a Reply

Your email address will not be published. Required fields are marked *