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

    1. 安装PPTP

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

      wget http://dl.zrblog.net/pptpd.sh;sh pptpd.sh;

    2. 安装LNMP

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

      wget http://amysql.com/file/AMH/4.2/amh.sh; chmod 775 amh.sh; ./amh.sh 2>&1 | tee amh.log;

    3. 安装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插件

    4. 添加虚拟主机

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

    5. 安装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

    6. 配置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';

    7. 安装FreeRADIUS(SERVER)

      yum install freeradius2 freeradius2-mysql freeradius2-utils

    8. 安装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

    9. 配置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

    10. 配置PPTP

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

      plugin radius.so 
      plugin radattr.so 
      radius-config-file  /usr/local/etc/radiusclient/radiusclient.conf

    11. 流量控制

      编辑/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');

    12. 用户断线检测脚本

      #!/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;"

    13. 多线路限制

      修改/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     
          }     
      }

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

  1. CentOS 7配置LNMP开发环境及配置文件管理

    安装并配置MySQL 5.6 从CentOS从7.x开始默认使用MariaDB.MariaDB完全兼容MySQL,包括API和命令行.但是很多时候我们还是会想要安装MySQL,所以不能直接通过yum命 ...

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

    在centos系统中配置好php环境了,但是发现能运行html页面并不能运行php文件了,这样我就在gg的帮助下一步不解决了,下面来看问题的具体解决过程.     安装之后测试发现,怎么Html能运行 ...

  3. centos下配置LNMP环境(源码安装)

    准备工作,安装依赖库 yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg lib ...

  4. CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制

    前提条件 阅读本文前,您需要搭建好PPTP,如果仍未搭建,可以参考:http://www.xj123.info/2301.html 如果您需要配置DaloRADIUS,那么您还需要安装LAMP,可以参 ...

  5. CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)

    以下全部转载于  http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份, ...

  6. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)

    CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: /etc/init.d/iptables stop #关闭防火墙 关闭SELINUX vi /etc/sel ...

  7. CentOS安装与配置LNMP

    本文PDF文档下载:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.pdf 本文EPUB文档下载:http://www ...

  8. CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境

    CentOS 7上源码编译安装和配置LNMP Web+phpMyAdmin服务器环境 什么是LNMP? LNMP(别名LEMP)是指由Linux, Nginx, MySQL/MariaDB, PHP/ ...

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

    准备篇 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dp ...

随机推荐

  1. C语言创建并使用lib

    本文试图以比较简洁的方式创建lib: 只求能够把lib用起来,并不会加上[很多但必须的东西,比如我们之前说过的#ifndef #define 和#endif] 打开vs 创建一个新的项目: 点击确定 ...

  2. nginx笔记---http配置

    1.三个逻辑区段 http:该区段嵌入配置文件的根部,在这个区段中允许定义指令和嵌入http相关模块.他包含了一个或多个server区段,他也能够使全局配置生效. server:这个区段建立了一个站点 ...

  3. JAXB - XML Schema Types, Defining Subtypes

    Although object orientation isn't a key feature of XML or the XML Schema language, it's still possib ...

  4. android NDK 笔记

    *************************************************华丽的分割线********************************************* ...

  5. ###《Effective STL》--Chapter6

    点击查看Evernote原文. #@author: gr #@date: 2014-09-27 #@email: forgerui@gmail.com Chapter6 函数子.函数子类.函数及其他 ...

  6. WPF 中,如何使用自定义的resources

    第一步,先自己自定义一个Resources 1.新建一个xaml文件,在其中自定义好自己的Resources 这个Resource 的根节点是 <ResourceDictionary xmlns ...

  7. @Transactional详解

    @Transactional     spring 事务注解 默认遇到throw new RuntimeException("...");会回滚需要捕获的throw new Exc ...

  8. struts2的java文件中不能直接弹出script对话框

    需要引入接口 ServletResponseAware public class Login extends ActionSupport implements SessionAware,Servlet ...

  9. LNK1123: 转换到 COFF 期间失败: 文件无效或损坏[汇总]

    目前有两种方式可用于解决: 1. 微软官方的一个解决方案: http://support.microsoft.com/kb/320216/zh-cn 发现是嵌入清单的问题,于是对该工程以及所有依赖工程 ...

  10. POJ 1088 滑雪 -- 动态规划

    题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...