管理Shadowsocks时,会遇到无法监控和限制用户流量的问题。而ss panel以及ssmgr等的部署和配置都比较繁琐,资源占用也较大。而ss-bash流量管理脚本可以方便的管理用户流量并且资源占用非常少,除了只支持python版Shadowsocks和只支持统计ipv4流量之外,较好的解决了管理流量的问题。

安装ss和ss-bash

安装ss-python

Debian

  1. 更新apt-get
    apt-get update
  2. 安装pip
    apt-get python-pip
  3. 安装shadowsocks-Python

pip install shadowsocks

CentOS 6.6

安装shadowsocks-Python

sudo yum install python-setuptools && easy_install pip
sudo pip install shadowsocks

安装libsodium以开启chacha20等高级加密方式

Debian

apt-get install build-essential
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar zxf LATEST.tar.gz
cd libsodium*
./configure
make && make check
sudo make install
ldconfig

CentOS

yum -y groupinstall "Development Tools"
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar zxf LATEST.tar.gz
cd libsodium*
./configure
make && make check
sudo make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig

开启BBR

本部分使用秋水逸冰一键脚本

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M

安装

使用root用户登录,或 sudo -i,运行以下命令

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。

检测

重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者为:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

安装ss-bash

安装unzip和bc

apt-get install unzip
apt-get install bc

下载ss-bash

wget https://github.com/hellofwy/ss-bash/archive/master.zip
unzip master.zip

使用ss-bash

详情参阅ss-bash wiki

查看帮助

cd ss-bash-master
./ssadmin.sh h

自定义ss-server配置

打开文件ssmlt.template,修改相关参数。例如修改加密方式为 rc4-md5chacha20 等。

比如添加fastopen和worker选项、修改加密方式为chacha20

"server": "0.0.0.0",
"timeout": 60,
"method": "chacha20",
"fast_open": true,
"workers": 5,

修改之后,如果ssserver正在运行,请执行下面命令,重新加载文件并启动:

sudo ss-bash-master/ssadmin.sh soft_restart

首次运行时新建用户

例如新用户端口为8388,密码为passwd,流量限制为10GB,执行:

sudo ss-bash-master/ssadmin.sh add 8388 passwd 10G

添加完用户之后查看所有用户

sudo ss-bash-master/ssadmin.sh show

启动ssserver

sudo ss-bash-master/ssadmin.sh start

★解决ssserver启动失败问题@SES-xuelan

在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,会导致ssserver启动失败。

sscounter.sh已启动
ssserver启动中...
ssserver启动失败

解决办法:

  • 打开文件:vi /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py (该路径请根据自己的系统情况自行修改,如果不知道该文件在哪里的话,可以使用find命令查找文件位置)
  • 搜索一下cleanup
  • libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) 改为libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)【cleanup=>reset】
  • 再次搜索cleanup(全文件共2处,此处位于111行),将libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)【cleanup=>reset】
  • 保存并退出,问题解决

所有命令

参见:https://github.com/hellofwy/ss-bash/blob/master/sshelp

用法:
显示版本:

 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
Last modification:March 12th, 2020 at 10:15 am