——最后更新于2017.10.8 13:20.如因时间过久而失效,请留言指出!
前言:
之前一直在忙,没有认真写这个shadowsocks的流量管理。
最近看手头的VPS太多了,想分享出去,于是有了这个心得。经本人测试效果不错。
啰嗦几句。说实话,之前我不懂这个ss-bash是怎么运作的,不了解bash与shadowsocks之间如何协作。这就是不动手尝试的后果。
其实原理就是安装shadowsocks与ss-bash之后,shadowsocks不做配置,由ss-bash管理shadowsocks。包括配置的文件都在ss-bash这边。
ss-bash
Shadowsocks流量管理脚本
目前只支持python版Shadowsocks
目前只支持统计ipv4流量
系统要求
shadowsocks-python
Linux(推荐Debian 7,其它系统未测试)
以上为作者原话。本人用的是ubuntu 14,完美运行!
工作原理
不同的用户分配不同端口,使用iptables规则获取各端口的流量,脚本循环运行,在固定时间间隔根据iptables结果统计流量使用情况,并在流量超过限制时,添加对应端口的iptables reject规则以禁用端口。
使用说明
下载必要的软件
apt-get install unzip apt-get install bc
下载ss-bash
wget https://github.com/hellofwy/ss-bash/archive/master.zip
解压ss-bash:
unzip master.zip
进入ss-bash目录:
cd ss-bash-master/
首次运行时,要新建用户(如果shadowsocks正在运行,需要停止)
比如新用户端口为23333,密码为233,流量限制为10MB,执行:
./ssadmin.sh add 23333 233 10M
启动ssserver
./ssadmin.sh start
其它命令请查看帮助,执行命令:
./ssadmin.sh
或者查看作者的GitHub:https://github.com/hellofwy/ss-bash/blob/master/sshelp
本文最后也会附加上全部的命令。
自定义ssserver的配置
打开文件ssmlt.template,添加相关选项。
请注意每个选项后必需有逗号(’,’)
默认选项为:
"server": "0.0.0.0", "timeout": 60, "method": "aes-256-cfb",
比如添加fastopen和worker选项后:
"server": "0.0.0.0", "timeout": 60, "method": "aes-256-cfb", "fast_open": true, "workers": 5,
修改之后,如果ssserver正在运行,请执行下面命令,重新加载文件并启动:
./ssadmin.sh soft_restart
以上这个命令可以在不影响现有连接的情况下重启ss服务。用于ss服务参数修改,和手动直接修改配置文件后,重启ss服务。
相关链接:
修改流量统计间隔
默认的流量采样间隔为5分钟
流量间隔可根据实际需求调整,但最好不要太小,比如小于10秒。
以上为作者原话。个人感觉如果不考虑负载的话,1分钟左右就行了。你5分钟的话,够人家下载完一部电影了!因为我实际使用的时候发现它这个限制是根据采样的数据来的。等于你设置了5分钟就是5分钟之后才会检测、限制你。
打开文件sslib.sh,修改INTERVEL的值,单位为秒。比如设置流量间隔为1分钟:
nano ssmlt.template INTERVEL=60
修改ssserver文件位置
如果shadowsocks不是使用apt-get或者pip安装,无法自动找到ssserver文件时,请手动指定程序的具体位置。
打开文件sslib.sh,修改SSSERVER的值,比如ssserver的路径为/usr/local/bin/ssserver时,修改为
SSSERVER=/usr/local/bin/ssserver
文件夹中的相关文件
ssadmin.sh - 管理程序,所有命令通过该程序执行 sscounter.sh - 流量统计程序。由ssadmin.sh自动调用执行,注意:不要手动运行该程序 sslib.sh - 包含一些参数配置和流量统计函数。由ssadmin.sh自动调用执行,注意:不要手动运行该程序 ssmlt.template - ssserver的配置文件
程序运行后,会产生以下文件:
ssmlt.json - 根据用户列表和ssmlt.template生成的ssserver实际使用的配置文件 ssusers - 用户列表,包括端口、密码、流量限制参数。ssadmin.sh showpw 命令,显示该文件内容。 sstraffic - 用户流量使用情况,包括流量限制,已用流量,剩余流量等。ssadmin.sh show 命令,显示该文件内容。 traffic.log - 用户流量记录,供程序内部使用。 其它文件 - .tmp、.lock、.pid等文件、文件夹tmp及其中文件为程序内部使用文件,请不要手动删除。
全部命令:
用法: 显示版本: ssadmin.sh -v|v|version 显示帮助: ssadmin.sh [-h|h|help] 启动ss: ssadmin.sh start 停止ss: ssadmin.sh stop 查看ss状态: ssadmin.sh status 重启ss: ssadmin.sh restart 软重启ss: ssadmin.sh soft_restart 在不影响现有连接的情况下重启ss服务。用于ss服务参数修改, 和手动直接修改配置文件后,重启ss服务。 添加用户: ssadmin.sh add port passwd limit port:端口号, 0<port<=65535 passwd:密码, 不能有空格,引号等字符 limit:流量限制,可以用K/M/G/T、KB/MB/GB/TB等(不区 分大小写)。支持小数。比如10.5G、10.5GB等。 1KB=1024 bytes,以此类推。 示例: ssadmin.sh add 3333 abcde 10.5G 显示用户流量信息: ssadmin.sh show port 显示所有用户流量信息: ssadmin.sh show 显示用户密码信息: ssadmin.sh showpw port 显示所有用户密码信息: ssadmin.sh showpw 删除用户: ssadmin.sh del port 修改用户: ssadmin.sh change port passwd limit 修改用户密码: ssadmin.sh cpw port passwd 修改用户流量限制: ssadmin.sh clim port limit 修改所有用户流量限制: ssadmin.sh change_all_limit limit 用户流量使用量置零: ssadmin.sh rused limit 所有用户流量使用量置零: ssadmin.sh reset_all_used 用户流量限制置零: ssadmin.sh rlim port 全部用户流量限制置零: ssadmin.sh reset_all_limit 显示已添加的iptables规则: ssadmin.sh lrules
你这个统计流量没有用啊,使用数据多少一直不会变
有用的,只是5分钟才统计数据。你可以在配置里面修改时间。
额😓,和我用一样的主题,是typecho吧
我的主题不能评论,能不能发你的模板给我啊
我的是WP的DUX,正版,所以不能发你了
Hi.为什么我使用:用户流量使用量置零: 就一直卡住不动了 ? 我的是ubuntu16.4 sudo ./ssadmin.sh rused limit
kill@kill:~/ss-bash-master$ sudo ./ssadmin.sh rused limit
^C
kill@kill:~/ss-bash-master$
感觉这条命令缺少指定的端口?你试试
这条命令我没有试过
这些命令都是无法使用,LZ你用试过吗?ubuntu16不行,我换了ubuntu14也是一样。敲了之后一直卡着没反应,
修改用户流量限制:
ssadmin.sh clim port limit
修改所有用户流量限制:
ssadmin.sh change_all_limit limit
用户流量使用量置零:
ssadmin.sh rused limit
所有用户流量使用量置零:
ssadmin.sh reset_all_used
用户流量限制置零:
ssadmin.sh rlim port
全部用户流量限制置零:
ssadmin.sh reset_all_limit
都是可以用的,你再看看那个示例。命令前面要加./
我有加啊。
在kill@kill:~/ss-bash-master$ sudo ./ssadmin.sh rused limit 然后就卡住了。 请问你有试过吗?
这条命令似乎要指定一个端口?我没有尝试过
【续】前面那些添加用户、修改用户密码、更改用户流量和查看用户的信息都是可以的,就是最后那几条不行(除了查看当前的iptables chain)。谢谢你
在添加了用户之后,流量设置的30G,
但iptables规则里直接显示拒绝访问端口,关闭了防火墙之后才能顺利连上。
请问是哪里设置错误了吗
反复尝试多次,流量使用始终是0,也无报错,不过还是谢谢,挺好的。