CentOS PPTP配置LNMP+PPTP+FreeRADIUS+DaloRADIUS+流量控制

折腾了好几天,查阅了很多资料,终于搞定了,泪牛满面,下面记录详细操作过程!注:测试环境为CENTOS5.8 x86

安装PPTP

直接使用赵蓉的PPTP一键安装包即可

 代码如下 复制代码
wget http://dl.zrblog.net/pptpd.sh;sh pptpd.sh; 

     
安装LNMP

本人使用的是AMH4.2,也是一键安装包

 代码如下 复制代码
wget http://amysql.com/file/AMH/4.2/amh.sh; chmod 775 amh.sh; ./amh.sh 2>&1 | tee amh.log;      

安装PEAR

AMH安装好后不带PEAR,而DaloRADIUS需要PEAR的DB插件

 代码如下 复制代码
wget http://pear.php.net/go-pear.phar;php go-pear.phar;      

一路回车即可

 代码如下 复制代码
/usr/local/php/bin/pear install DB     

安装好DB插件

添加虚拟主机

登录AMH后台,安装自带的AMChroot模块,然后新建虚拟主机,进AMChroot把刚刚新建的主机设为兼容模式。因为自带的权限管理很严,导致无法调用pear插件,折腾了好几晚上……

安装DaloRADIUS

 代码如下 复制代码
wget http://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz;tar xvzf daloradius-0.9-9.tar.gz;mv daloradius-0.9-9/* /home/wwwroot/换成刚刚建立虚拟主机的域名/web     

配置DaloRADIUS

用phpmyadmin新建一个数据库,然后导入./contrib/db/fr2-mysql-daloradius-and-freeradius.sql

编辑./library/daloradius.conf.php

 代码如下 复制代码
$configValues['CONFIG_DB_HOST'] = 'localhost'; 
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = '数据库用户名';
$configValues['CONFIG_DB_PASS'] = '数据库密码';
$configValues['CONFIG_DB_NAME'] = '数据库名称';
$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/home/wwwroot/换成刚刚建立虚拟主机的域名/web/var';    

 
安装FreeRADIUS(SERVER)

 代码如下 复制代码
yum install freeradius2 freeradius2-mysql freeradius2-utils  

   
安装CLIENT

 代码如下 复制代码
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      

 
配置FreeRADIUS

编辑usr/local/etc/radiusclient/servers,尾部添加

 代码如下 复制代码
127.0.0.1 XXVPN     

编辑/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改成XXVPN

编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#

编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段

编辑/etc/raddb/sites-enabled/default

 代码如下 复制代码
authorize段,关掉files、unix,打开sql
preacct段,关掉files
accounting段,打开sql,关掉unix
session段,打开sql
post-auth段,打开sql
pre-proxy段,关掉files   

  
配置PPTP

编辑/etc/ppp/options.pptpd,尾部添加

 代码如下 复制代码
plugin radius.so
plugin radattr.so
radius-config-file  /usr/local/etc/radiusclient/radiusclient.conf   

流量控制

编辑/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'"
}   

上面代码意思是按月进行统计,从数据库的radacct表中,根据用户名(%k)将所有入站和出站流量累加。
时间也是可以自定义的(months、weeks、days、hours),也可以指定具体值,如三天重置一次 "reset = 3 d"

编辑/etc/raddb/sites-enabled/default,在authorize区块的末尾添加“monthlytrafficcounter”

编辑/etc/raddb/dictionary,尾部添加

 代码如下 复制代码
ATTRIBUTE Max-Monthly-Traffic 3003 integer
ATTRIBUTE Monthly-Traffic-Limit 3004 integer     

进入phpmyadmin,执行SQL

 代码如下 复制代码
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Mikrotik-Rate-Limi',':=','512k/1M');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','300');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','1073741824');   

   
用户断线检测脚本

 代码如下 复制代码
#!/bin/bash 
MYSQL_PASS=XXXXXXXXXX
/usr/local/mysql/bin/mysql -uroot -p$MYSQL_PASS -e "UPDATE 数据库名称.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;"   

 
多线路限制

修改/etc/raddb/sites-enabled/defalut,在authorize区块中添加

 代码如下 复制代码

update request {    
    Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}"    
}    
if (Group-Name && "%{sql:SELECT count(value) FROM radgroupcheck WHERE groupname='%{Group-Name}' AND attribute='NAS-IP-Address'}") {    
    if ("%{sql:SELECT count(value) FROM radgroupcheck WHERE groupname='%{Group-Name}' AND value='%{NAS-IP-Address}'}" < 1) {    
        reject    
    }    
}    

时间: 2024-12-26 22:19:59

CentOS PPTP配置LNMP+PPTP+FreeRADIUS+DaloRADIUS+流量控制的相关文章

CentOS中配置LNMP环境打开提示File not found

安装之后测试发现,怎么Html能运行,而php就不行,显示File Not Found,很是悲伤之下谷歌,发现了各种奇奇怪怪的说法,作为一个error_log看不懂的人只能一个个尝试,而且我将安装步骤仔细重复了一遍又一遍,保证按照教程来了,还是没发现问题,最后找到了一个类似的答案: 是配置的问题  location ~ .php$ {  root html; html是nginx默认的目录,需要改成网站实际的路径 然后我基本确定了在/etc/nginx/conf.d/default.conf下,

CentOS安装配置PPTP并结合freeradius验证

本帖的配置环境为CentOS5 32bit,配置安装PPTP的过程就不写了,如果不会请在本博客自行搜索,下面贴出整合freeradius需要进行的配置: pptp客户端配置部分  代码如下 复制代码 wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/radiusclient-0.3.2-0.2.el5.rf.i386.rpm rpm -i radiusclient-0.3.2-0.2.el5.rf.i386.rpm vim /etc/r

Centos 6.4安装pptp同时配置debian gnome桌面vpn客户端连接

 pptp vpn我相信很多的朋友都有听过吧,今天我就为各位介绍Centos 6.4安装pptp同时配置debian gnome桌面vpn客户端连接的例子,希望下文对各位有帮助.     以下是基于Linode VPS Centos 6.4下安装pptp服务,记住Linode VPS是Xen虚拟的,所以请看清楚环境配置. 快速安装,当然少不了yum: # rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-cu

CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)_Linux

准备篇 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙 备注:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败, 正确

CentOS安装配置OpenVPN并可以用证书或账号密码登录

OpenVPN是不同于PPTP.L2TP的另一种VPN软件包,基于SSL的VPN.OpenVPN使用需要客户端支持.这里系统为CentOS6.4. 一.检查OpenVPN所需环境 OpenVPN需要TUN设备支持,还需要iptables的nat模块支持. 1.检查TUN模块: modinfo tun 显示如下: 如果报错则不支持TUN设备. 2.在OpenVZ虚拟化的VPS上,需要管理员在母鸡上打开TUN/TAP设备. cat /dev/net/tun 如果返回: cat: /dev/net/t

CentOS/Ubuntu配置VPN代理服务器教程

CentOS配置VPN代理服务器 我这里使用的是CentOS 6.4,其他发行版本linux的配置基本一致. 1.首先确认VPS的PPP和TUN设备是否安装正确    代码如下 复制代码 ls /dev/ppp ls /dev/net/tun # 或 cat /dev/ppp cat /dev/net/tun 如果提示"No such file or directory"或"No such device or address"则表示未安装,一般来说可以直接向你的VP

CentOS6.7系统中配置LNMP环境_Linux

1:查看环境: [root@localhost ~]# cat /etc/redhat-release 2:关掉防火墙 #重启后生效开启 [root@localhost ~]# chkconfig iptables off or #即时生效,重启后失效开启 [root@localhost ~]# service iptables stop 关闭selinux #即时生效,重启后失效 [root@localhost ~]#setenforce 0 //将SELINUX=enforcing修改为di

CentOS6.5中利用yum安装配置lnmp环境步骤

准备篇 1.配置防火墙,开启80 和3306端口 [root@localhost ~]# vim /etc/sysconfig/iptables         -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT         -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT         -A INPUT -m state --sta

基于CentOS 7配置Nginx反向代理

Nginx作为反向代理服务器被广泛使用在各大互联网企业.它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器.该方式使的整个站点请求性能得以极大的提升.本文简要描述了Nginx几种不同情形的代理演示,供大家参考. 一.反向代理及演示环境描述 1.反向代理 在计算机网络中,反向代理是一种代理服务器,代表客户端从一个或多个服务器检索资源.然后将这些资源返回给客户机,就像它们源自Web服务器本身一样.与正向代理相反,正向代理是与其关联的客户端联