记录、分享
一直在路上

shadowsocks流量管理脚本ss-bash

——最后更新于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服务。

 

相关链接:

服务端安装libsodium支持chacha20

 

修改流量统计间隔

默认的流量采样间隔为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

 

 

原文链接:https://github.com/hellofwy/ss-bash/wiki

打赏
欢迎转载,请注明出处:轻时代 » shadowsocks流量管理脚本ss-bash

评论 11

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    你这个统计流量没有用啊,使用数据多少一直不会变

    s'd'f's'd'f1个月前 (11-14)回复
    • 有用的,只是5分钟才统计数据。你可以在配置里面修改时间。

      hao1个月前 (11-14)回复
  2. #2

    额😓,和我用一样的主题,是typecho吧
    我的主题不能评论,能不能发你的模板给我啊

    金正恩3周前 (11-23)回复
    • 我的是WP的DUX,正版,所以不能发你了

      hao3周前 (11-23)回复
  3. #3

    Hi.为什么我使用:用户流量使用量置零: 就一直卡住不动了 ? 我的是ubuntu16.4 sudo ./ssadmin.sh rused limit
    kill@kill:~/ss-bash-master$ sudo ./ssadmin.sh rused limit
    ^C
    kill@kill:~/ss-bash-master$

    killerapear3周前 (11-28)回复
    • 感觉这条命令缺少指定的端口?你试试
      这条命令我没有试过

      hao3周前 (11-28)回复
  4. #4

    这些命令都是无法使用,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

    killerapear3天前回复
    • 都是可以用的,你再看看那个示例。命令前面要加./

      hao3天前回复
      • 我有加啊。
        在kill@kill:~/ss-bash-master$ sudo ./ssadmin.sh rused limit 然后就卡住了。 请问你有试过吗?

        killerapear2天前回复
        • 这条命令似乎要指定一个端口?我没有尝试过

          hao2天前回复
      • 【续】前面那些添加用户、修改用户密码、更改用户流量和查看用户的信息都是可以的,就是最后那几条不行(除了查看当前的iptables chain)。谢谢你

        killerapear2天前回复