CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制
前提条件
阅读本文前,您需要搭建好PPTP,如果仍未搭建,可以参考:http://www.xj123.info/2301.html
如果您需要配置DaloRADIUS,那么您还需要安装LAMP,可以参考:http://www.xj123.info/2223.html
PPP:Point-to-Point Protocol,点对点协议,是工作在数据链路层的连接协议。常见的ADSL连接时使用的PPPoE便是指的以太网上的点对点协议(Point-to-Point Protocol over Ethernet)。而我们创建连接VPN时也会通过PPP来进行,*nix操作系统上的pppd能够完成这一任务,其进行用户验证的默认方法便是chap-secrets文件。配置完FreeRADIUS后,我们需要把用户验证这一环节交给RADIUS服务器来完成。
RADIUS:Remote Authentication Dial In User Service,远程用户拨号验证服务,基于RFC2865和RFC2866。具体的工作原理挺复杂的,仔细阅读这两个RFC标准应该可以搞明白。简单的说,它是一个兼顾验证(authentication)、授权(authorization)及记账(accounting)三种服务的协议,即AAA协议。RADIUS运行在应用层,使用UDP进行传输,它被广泛用于ISP和企业用来控制Internet或内部网络、无线网络的访问。
FreeRADIUS:是一个实现RADIUS协议的软件,基于GPLv2开源。它是目前部署最广泛的开源RADIUS软件。
daloRADIUS:是一个FreeRADIUS的Web挂历程序,使用PHP编写。
安装配置
yum install freeradius2 freeradius2-mysql freeradius2-utils
2014.12.10 更新 目前yum官方源已经取消了freeradius1的安装包,请执行下面的命令安装freeradius
yum install freeradius freeradius-mysql freeradius-utils |
安装完以后,编辑/etc/raddb/users,加上
testing Cleartext-Password := “password”
打开radius的测试模式,执行radiusd -X,然后打开一个新终端,执行radtest testing password 127.0.0.1 0 testing123,如果看到Access-Accept,说明没问题,如果没看到,返回去检查。
测试连接成功后,我们可以把users里临时加上去的第一行删除。
下载ppp源码
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz tar zxvf ppp-2.4.5.tar.gz cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient |
编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“LaoxieVPN”
localhost LaoxieVPN |
编辑/usr/local/etc/radiusclient/dictionary
最后一行改成INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft,然后添加一行INCLUDE /usr/local/etc/radiusclient/dictionary.merit
编辑/etc/raddb/clients.conf
把client localhost段下的secret改成刚才指定的密钥。
编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。
进入mysql,添加数据库
create database radius; flush privileges; exit; |
编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。
编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:
- authorize段,关掉files,打开sql,也可以把unix关掉
- preacct段,关掉files
- accounting段,打开sql,也可以把unix关掉
- session段,打开sql
- post-auth段,打开sql
- pre-proxy段,关掉files
到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。
配置DaloRADIUS
wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz pear install DB mkdir /usr/share/daloRadius tar zxvf daloradius-0.9-8.tar.gz mv daloradius-0.9-8/* /usr/share/daloRadius/ rm -r daloradius-0.9-8 |
注意,这里需要安装pear,如果bash提示找不到命令,那么请自行google安装方法
下面导入数据库
mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql |
编辑/usr/share/daloRadius/library/daloradius.conf.php,修改daloRADIUS的配置文件。首先是MySQL登录信息:
$configValues['CONFIG_DB_HOST'] = 'localhost'; $configValues['CONFIG_DB_USER'] = 'radius'; //根据自己实际情况填写 $configValues['CONFIG_DB_PASS'] = ''; // 设为自己的密码 $configValues['CONFIG_DB_NAME'] = 'radius'; |
下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:
$configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup'; |
然后修改daloRADIUS的路径:
$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var'; |
网页目录下建目录链接
cd /usr/local/apache/htdocs/ ln -s /usr/share/daloRadius/ admin |
daloRADIUS管理页面地址就是 http://ip/admin
默认用户名administrator和密码radius登录
重启mysql和apache服务
service httpd restart service mysqld restart |
daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。
在终端里再次启动radiusd -X,同时在另一个终端中用radtest username password localhost 0 LaoxieVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。
配置Pppd
编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:
refuse-pap refuse-chap refuse-mschap require-mppe-128 require-mschap-v2 |
在配置文件最后加上3行:
plugin radius.so plugin radattr.so radius-config-file /usr/local/etc/radiusclient/radiusclient.conf |
流量控制服务
建立表格
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');
|
以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。
访问daloRADIUS,在Management中添加一个新用户,注意密码类型选择Cleartext-Password。用户组选择user
radius -X radtest username password localhost 0 LaoxieVPN |
测试一下,看看现在是不是还能正常接通,如果没问题就OK
如果结果中有Access-Accept就代表成功了,否则退回去检查设置。
测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:
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
}
|
启动服务
service radiusd start chkconfig radiusd on chkconfig pptpd on |

2013.06.03新增内容:自动断线检测脚本
#!/bin/bash MYSQL_PASS=XXXXXXXXXX /usr/local/mysql/bin/mysql -uroot -p$MYSQL_PASS -e "UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;" |
至此,已经完成所有操作了!
本文主要参考以下文章,感谢以下所有文字创建者
在PPTP VPN服务器上配置FreeRADIUS+DaloRADIUS实现用户跟踪管理
PPTP+FreeRADIUS+MySQL搭建VPN认证和流量控制
ARA (ASN RADIUS admin) – FreeRADIUS 管理程序安装总结
原文地址 : http://www.xj123.info/2323.html
本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)
版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处
前提条件
阅读本文前,您需要搭建好PPTP,如果仍未搭建,可以参考:http://www.xj123.info/2301.html
如果您需要配置DaloRADIUS,那么您还需要安装LAMP,可以参考:http://www.xj123.info/2223.html
PPP:Point-to-Point Protocol,点对点协议,是工作在数据链路层的连接协议。常见的ADSL连接时使用的PPPoE便是指的以太网上的点对点协议(Point-to-Point Protocol over Ethernet)。而我们创建连接VPN时也会通过PPP来进行,*nix操作系统上的pppd能够完成这一任务,其进行用户验证的默认方法便是chap-secrets文件。配置完FreeRADIUS后,我们需要把用户验证这一环节交给RADIUS服务器来完成。
RADIUS:Remote Authentication Dial In User Service,远程用户拨号验证服务,基于RFC2865和RFC2866。具体的工作原理挺复杂的,仔细阅读这两个RFC标准应该可以搞明白。简单的说,它是一个兼顾验证(authentication)、授权(authorization)及记账(accounting)三种服务的协议,即AAA协议。RADIUS运行在应用层,使用UDP进行传输,它被广泛用于ISP和企业用来控制Internet或内部网络、无线网络的访问。
FreeRADIUS:是一个实现RADIUS协议的软件,基于GPLv2开源。它是目前部署最广泛的开源RADIUS软件。
daloRADIUS:是一个FreeRADIUS的Web挂历程序,使用PHP编写。
安装配置
yum install freeradius2 freeradius2-mysql freeradius2-utils
2014.12.10 更新 目前yum官方源已经取消了freeradius1的安装包,请执行下面的命令安装freeradius
yum install freeradius freeradius-mysql freeradius-utils |
安装完以后,编辑/etc/raddb/users,加上
testing Cleartext-Password := “password”
打开radius的测试模式,执行radiusd -X,然后打开一个新终端,执行radtest testing password 127.0.0.1 0 testing123,如果看到Access-Accept,说明没问题,如果没看到,返回去检查。
测试连接成功后,我们可以把users里临时加上去的第一行删除。
下载ppp源码
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz tar zxvf ppp-2.4.5.tar.gz cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient |
编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“LaoxieVPN”
localhost LaoxieVPN |
编辑/usr/local/etc/radiusclient/dictionary
最后一行改成INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft,然后添加一行INCLUDE /usr/local/etc/radiusclient/dictionary.merit
编辑/etc/raddb/clients.conf
把client localhost段下的secret改成刚才指定的密钥。
编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。
进入mysql,添加数据库
create database radius; flush privileges; exit; |
编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。
编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:
- authorize段,关掉files,打开sql,也可以把unix关掉
- preacct段,关掉files
- accounting段,打开sql,也可以把unix关掉
- session段,打开sql
- post-auth段,打开sql
- pre-proxy段,关掉files
到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。
配置DaloRADIUS
wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz pear install DB mkdir /usr/share/daloRadius tar zxvf daloradius-0.9-8.tar.gz mv daloradius-0.9-8/* /usr/share/daloRadius/ rm -r daloradius-0.9-8 |
注意,这里需要安装pear,如果bash提示找不到命令,那么请自行google安装方法
下面导入数据库
mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql |
编辑/usr/share/daloRadius/library/daloradius.conf.php,修改daloRADIUS的配置文件。首先是MySQL登录信息:
$configValues['CONFIG_DB_HOST'] = 'localhost'; $configValues['CONFIG_DB_USER'] = 'radius'; //根据自己实际情况填写 $configValues['CONFIG_DB_PASS'] = ''; // 设为自己的密码 $configValues['CONFIG_DB_NAME'] = 'radius'; |
下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:
$configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup'; |
然后修改daloRADIUS的路径:
$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var'; |
网页目录下建目录链接
cd /usr/local/apache/htdocs/ ln -s /usr/share/daloRadius/ admin |
daloRADIUS管理页面地址就是 http://ip/admin
默认用户名administrator和密码radius登录
重启mysql和apache服务
service httpd restart service mysqld restart |
daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。
在终端里再次启动radiusd -X,同时在另一个终端中用radtest username password localhost 0 LaoxieVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。
配置Pppd
编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:
refuse-pap refuse-chap refuse-mschap require-mppe-128 require-mschap-v2 |
在配置文件最后加上3行:
plugin radius.so plugin radattr.so radius-config-file /usr/local/etc/radiusclient/radiusclient.conf |
流量控制服务
建立表格
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');
|
以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。
访问daloRADIUS,在Management中添加一个新用户,注意密码类型选择Cleartext-Password。用户组选择user
radius -X radtest username password localhost 0 LaoxieVPN |
测试一下,看看现在是不是还能正常接通,如果没问题就OK
如果结果中有Access-Accept就代表成功了,否则退回去检查设置。
测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:
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
}
|
启动服务
service radiusd start chkconfig radiusd on chkconfig pptpd on |

2013.06.03新增内容:自动断线检测脚本
#!/bin/bash MYSQL_PASS=XXXXXXXXXX /usr/local/mysql/bin/mysql -uroot -p$MYSQL_PASS -e "UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;" |
至此,已经完成所有操作了!
本文主要参考以下文章,感谢以下所有文字创建者
在PPTP VPN服务器上配置FreeRADIUS+DaloRADIUS实现用户跟踪管理
PPTP+FreeRADIUS+MySQL搭建VPN认证和流量控制
ARA (ASN RADIUS admin) – FreeRADIUS 管理程序安装总结
原文地址 : http://www.xj123.info/2323.html
本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)
版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处
CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制的更多相关文章
- CentOS PPTP配置LNMP+PPTP+FreeRADIUS+DaloRADIUS+流量控制
折腾了好几天,查阅了很多资料,终于搞定了,泪牛满面,下面记录详细操作过程!注:测试环境为CENTOS5.8 x86 安装PPTP 直接使用赵蓉的PPTP一键安装包即可 wget http://dl.z ...
- 在 Windows 中为高级用户配置 IPv6 的指南
在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...
- CentOS6.5下搭建LAMP+FreeRadius+Daloradius Web管理和TP-LINK路由器、H3C交换机连接,实现,上网认证和记账功能
什么是RADIUS服务: RADIUS:(Remote Authentication Dial In User Service)中文名为远程用户拨号认证服务,简称RADIUS,是目前应用最广泛的AAA ...
- CentOS7下搭建LAMP+FreeRadius+Daloradius Web管理
注意:本文所有命令均在root命令下执行. freeradius服务官网:http://freeradius.org/ daloradius Web管理页面官网:https://sourceforge ...
- gitlab centos 安装配置运维笔记
写在前面 如果你需要一个git服务器,为企业或自己的团队托管代码而又不希望将代码仓库存储到第三方.你可以在自己的服务器上搭建一个gitlab. 本文为我在最初安装配置gitlab服务器的时候留存的笔记 ...
- CentOS安装配置
1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...
- Hadoop集群(第1期)CentOS安装配置
1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...
- 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat
阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat 执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...
- 阿里云服务器Linux CentOS安装配置(三)yum安装mysql
阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...
随机推荐
- 读源码之RESideMenu
RESideMenu是github上比较出名的一个开源库,主要是实现侧滑菜单,现在有三千多个star了.效果如下. 据说创意来源于dribbble的一个设计,还是比较好看的.感兴趣的可以去gith ...
- MSSQL 2012 拒绝了对对象 'extended_properties' (数据库 'mssqlsystemresource',架构 'sys')的 SELECT 权限
查看数据库的表的时候报如下错误: MSSQL 拒绝了对对象 ) 解决方法: 在数据库里相应的用户权限中,把db_denydatareader的复选框的勾去掉.db_denydatareader是拒绝访 ...
- NET基础(2):类型转换
CLR最重要的特性之一就是类型安全的.在运行时,CLR总是知道对象的类型是什么.调用GetType()方法可以知道对象的确切类型,由于它是非虚方法,所以一个类型不可能伪装成另一种类型.每种编程语言都规 ...
- Linux:实现Hadoop集群Master无密码登录(SSH)各个子节点
以下所介绍的安装方式都是在线安装方式,如果你需要连网请参考:Linux:宿主机通过桥接方式连接的VMware内部Linux14.04虚拟机(静态IP)实现上网方案 环境: OS:Linux Ubunt ...
- 学生各门课程成绩统计SQL语句大全
学生成绩表(stuscore): 姓名:name 课程:subject 分数:score 学号:stuid 张三 数学 89 1 张三 语文 80 1 张三 英语 70 1 李四 数学 90 2 李四 ...
- 夺命雷公狗-----React---9--map数据的遍历
比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...
- Maps for Developers
苹果官方文档: Give your apps a sense of place with maps and location information. Present maps with custom ...
- 十八、Java基础--------IO流体系以及字符流
在上一章节中详细介绍集合框架的相关知识,在接下来的几篇文章中将讲述Java中另一个及其重要的知识——IO流,本文主要是讲述IO流的一些基本概念以及字符流的相关应用. IO流 介绍IO流之前先介绍一下什 ...
- logback文章推荐
logback 配置详解:http://www.cnblogs.com/zhuawang/p/4002975.html Logback 日志输出到 mysql:http://www.codeweblo ...
- 操作SSIS之前的准备工作
SSIS的历史概述: 在SQL Server7.0中,微软成立了一个很小的开发团队开发SQL Server中一个非常低调的功能,该功能被称为DTS(数据转换服务),该功能一直被沿用到SQL2000. ...