AMH 社区首页
AMH社区 - 开放自由有价值的社区
[求助帖] [Amh4.2]CentOS 5下给PP_TP v_pn添加流量控制功能 |
|
---|---|
:wq |
:wq 发表于 2014-12-02 21:19:56
本帖最后由 :wq 于 2014-12-2 21:43 编辑
引用: 首先感谢论坛里的一些好心人提醒和帮助,最后成功结合amh面板实现pp_tp的流量控制功能,其实还是比较简单的! 教程开始: 通过PP_TP一键安装包安装pp_tp 代码如下 wget http://dl.zrblog.net/pp_tpd.sh;sh pp_tpd.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(下面这个链接被dz论坛阉割了,查看链接地址请点击右键-复制) 代码如下 wget http://downloads.sourceforge.net ... us-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 XXV_PN 编辑/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改成XXV_PN 编辑/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 配置PP_TP 编辑/etc/ppp/options.pp_tpd,尾部添加 代码如下 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 [size=15px]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 } } [/size] 教程结束,流量控制搞定!
点赞,加油! (3分)
2014-12-02 21:19:56 1
|
dawnvi |
顶 我需要一键包 等待官方开发。。
回复
2014-12-03 19:11:59 2
|
yuanxin |
怎么导入数据库?那个文件呢?
回复
2015-03-02 16:56:06 3
|
icebin |
可以搞限速吗 。。流量无所谓
回复
2015-03-07 11:19:06 4
|
godservant |
不管用不用,这位兄弟的行为太伟大了,说干就干,干了还共享方法,顶一下 支持
回复
2015-03-22 14:29:25 5
|
林逸 |
可以搞个一键的吗。。。 支持
回复
2015-03-22 18:58:32 6
|
godservant |
本帖最后由 godservant 于 2015-3-22 22:33 编辑
编辑./library/daloradius.conf.php 为什么有2个文件,都需要改吗? yum install freeradius2 freeradius2-mysql freeradius2-utils No package freeradius2 available. No package freeradius2-mysql available. No package freeradius2-utils available. wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz; 也登不上啊
回复
2015-03-22 22:00:32 7
|
hykb |
期待官方开发一键包,最好是pp_tp V_PN里面加强上流量控制的功能
回复
2015-04-02 17:22:49 8
|
wincn |
期待官方开发一键包,最好是pp_tp V_PN里面加强上流量控制的功能
回复
2015-04-09 18:38:05 9
|
hykb |
等不到官方一键包,今天按这个方法装上了,不错
回复
2015-04-09 22:26:08 10
|