CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制
安装:
1 | yum install freeradius2 freeradius2-mysql freeradius2-utils |
安装完以后,编辑 /etc/raddb/users,加上:
1 | testing Cleartext-Password := "password" |
打开radius的测试模式,执行radiusd -X,然后打开一个新终端,执行:
1 | radtest testing password 127.0.0.1 0 testing123 |
如果看到Access-Accept,说明没问题,如果没看到,返回去检查. 测试连接成功后,我们可以把users里临时加上去的第一行删除.
下载ppp源码:
1 | wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz |
编辑 /usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为”LaoxieVPN”:
1 | localhost LaoxieVPN |
编辑 /usr/local/etc/radiusclient/dictionary: 最后一行改成:
1 | INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft |
然后添加一行:
1 | INCLUDE /usr/local/etc/radiusclient/dictionary.merit |
编辑 /etc/raddb/clients.conf: 把client localhost段下的secret改成刚才指定的密钥.
编辑 /etc/raddb/radiusd.conf,找到:
1 | $INCLUDE sql.conf |
去掉前面的#.
找到:
1 | $INCLUDE sql/mysql/counter.conf |
去掉前面的#.
进入mysql,添加数据库:
1 | create database radius; |
编辑 /etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#.
编辑 /etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:
1 | authorize段,关掉files,打开sql,也可以把unix关掉 |
到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中.至于数据库中的表,我们在后面统一导入.
配置DaloRADIUS:
1 | wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz |
注意,这里需要安装pear,如果bash提示找不到命令,那么请自行google安装方法. 下面导入数据库:
1 | mysql -uroot -p radius '%b'" |
上面代码意思是按月进行统计,从数据库的radacct表中,根据用户名(%k)将所有入站和出站流量累加. 时间也是可以自定义的(months、weeks、days、hours),也可以指定具体值,如三天重置一次 “reset = 3 d”.
1 | vi /etc/raddb/sites-enabled/default |
在authorize区块的末尾(205行)添加:
1 | monthlytrafficcounter |
添加字典文件.
1 | vim /usr/local/etc/raddb/dictionary |
在文件末尾添加下面两行:
1 | ATTRIBUTE Max-Monthly-Traffic 3003 integer |
流量控制服务 建立表格:
1 | INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local'); |
以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量.倒数第二行是每月最大流量,这里是5G(单位是字节).最后一行是允许同时连接数目. 访问daloRADIUS,在Management中添加一个新用户,注意密码类型选择Cleartext-Password.用户组选择user.
1 | radiusd -X |
测试一下,看看现在是不是还能正常接通,如果没问题就OK. 如果结果中有Access-Accept就代表成功了,否则退回去检查设置. 测试成功的话添加在认证时检测流量的语句,打开/etc/raddb/sites-enabled/default,找到authorize一节插入:
1 | update request { |
启动服务:
1 | service radiusd start |
自动断线检测脚本:
1 | #!/bin/bash |