ShadowsocksR MudbJSON模式多用户一键脚本
系统要求
脚本版本
脚本特点
安装步骤
使用说明
文件位置
其他说明
ShadowsocksR目前支持的协议和混淆
如何转移用户数据信息?
使用阿里云/腾讯云等存着安全组或规则组一类外部防火墙的请注意
ShadowsocksR 端口限速中 单线程限速 和 端口总限速 的区别
------------限制设备连接数
------------限制端口速度
解决 可使用原版协议,但无法使用ShadowsocksR协议 的问题
提示 Media change: please insert the disc labeled‘Debian GNU/Linux 7.0.0 Wheezy — Official amd64 CD 等信息是 apt源 的问题,更换 apt源
ShadowsocksR启动失败,日志提示:Exception: libsodium not found 的错误
提示wget: unknown host 'doubiyunbackup.com' 之类的错误
定时重启

收集几个逗比根据地的SSR和SS一键管理脚本.感谢开发者.
Shadowsocks Go版 一键安装管理脚本

ShadowsocksR MudbJSON模式多用户一键脚本

脚本原文
手动安装

系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

推荐 Debian 8 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。并且最容易安装锐速(锐速不支持OpenVZ)

CentOS 7 自带防火墙问题(firewalld)自行解决,其他版本没有做测试。

脚本版本

Ver: 1.0.26

本脚本与另一个SSR脚本 『原创』CentOS/Debian/Ubuntu ShadowsocksR 单/多端口 一键管理脚本 的区别是什么?
ssrmu.sh 脚本是单服务器多用户脚本,使用的是 SSR服务端的MudbJSON模式,可以给每个用户(端口)设置不同的加密方式/协议/混淆/限制速度/设备数限制/可用总流量等功能。即实现单服务器多用户流量管理等功能。
而 ssr.sh 则是单服务器单用户脚本,使用的是 SSR服务端的单用户配置方式,即使实现了多端口,但是还算不算多用户,不支持每个用户(端口)不同的加密方式/协议/混淆等,并且无法管理流量使用。
如何选择这两个脚本?
根据你的需求选择,比如你仅仅是 一个或两个人使用,并且不需要流量管理功能,那么选择 ssr.sh 好了。而如果很多人使用,并且都需要限制流量来管理,那你适合使用 ssrmu.sh ,所以自己看着选,多试试(两个脚本不能共存)!

脚本特点

所有步骤都可以通过 Shell 脚本中文交互 操作。

  • 支持 限制 用户速度
  • 支持 限制 用户设备数
  • 支持 限制 用户总流量
  • 支持 定时 流量清零
  • 支持 显示 当前连接IP
  • 支持 显示 SS/SSR连接+二维码
  • 支持 自定义账号IP或域名
  • 支持 监控SSR服务端运行状态
  • 支持 一键安装 BBR
  • 支持 一键安装 锐速
  • 支持 一键安装 LotServer
  • 支持 一键封禁 垃圾邮件(SMAP)/BT/PT

安装步骤

本脚本需要Linux root账户权限才能正常安装运行,所以如果不是 root账号,请先切换为root,如果是 root账号,那么请跳过!

sudo su

输入上面代码回车后会提示你输入当前用户的密码,输入并回车后,没有报错就继续下面的步骤安装ShadowsocksR。


注意:如果你安装的有我的另一个 ssr.sh 脚本,请先卸载ShadowsocksR服务端,再安装这个脚本(不能共存)!

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh

下载运行后会提示你输入数字来选择要做什么。

输入 1 ,就会开始安装ShadowsocksR服务端,并且会提示你输入Shadowsocks的 端口/密码/加密方式/ 协议/混淆(混淆和协议是通过输入数字选择的) 等参数来添加第一个用户。

注意:用户名不支持中文,如果输入中文会一直保存下去!
如果安装过程中报错,请看 常见问题解决方法
    请输入要设置的用户 用户名(请勿重复, 用于区分, 不支持中文, 会报错 !)
    (默认: doubi):doubi
     
    ——————————————————————————————
        用户名 : doubi
    ——————————————————————————————
     
    请输入要设置的用户 端口(请勿重复, 用于区分)
    (默认: 2333):2333
     
    ——————————————————————————————
        端口 : 2333
    ——————————————————————————————
     
    请输入要设置的用户 密码
    (默认: doub.io):doub.io
     
    ——————————————————————————————
        密码 : doub.io
    ——————————————————————————————
     
    请选择要设置的用户 加密方式
      1. none
     [注意] 如果使用 auth_chain_* 系列协议,建议加密方式选择 none (该系列协议自带 RC4 加密),混淆随意
     
      2. rc4
      3. rc4-md5
      4. rc4-md5-6
     
      5. aes-128-ctr
      6. aes-192-ctr
      7. aes-256-ctr
     
      8. aes-128-cfb
      9. aes-192-cfb
     10. aes-256-cfb
     
     11. aes-128-cfb8
     12. aes-192-cfb8
     13. aes-256-cfb8
     
     14. salsa20
     15. chacha20
     16. chacha20-ietf
     [注意] salsa20/chacha20-*系列加密方式,需要额外安装依赖 libsodium ,否则会无法启动ShadowsocksR !
     
    (默认: 5. aes-128-ctr):5
     
    ——————————————————————————————
        加密 : aes-128-ctr
    ——————————————————————————————
     
    请选择要设置的用户 协议插件
     1. origin
     2. auth_sha1_v4
     3. auth_aes128_md5
     4. auth_aes128_sha1
     5. auth_chain_a
     6. auth_chain_b
     [注意] 如果使用 auth_chain_* 系列协议,建议加密方式选择 none (该系列协议自带 RC4 加密),混淆随意
     
    (默认: 2. auth_sha1_v4):3
     
    ——————————————————————————————
        协议 : auth_aes128_md5
    ——————————————————————————————
     
    请选择要设置的用户 混淆插件
     1. plain
     2. http_simple
     3. http_post
     4. random_head
     5. tls1.2_ticket_auth
     [注意] 如果使用 ShadowsocksR 代理游戏,建议选择 混淆兼容原版或 plain 混淆,然后客户端选择 plain,否则会增加延迟 !
     另外, 如果你选择了 tls1.2_ticket_auth,那么客户端可以选择 tls1.2_ticket_fastauth,这样即能伪装特征 又不会增加延迟 !
     
    (默认: 1. plain):1
     
    ——————————————————————————————
        混淆 : plain
    ——————————————————————————————
     
    请输入要设置的用户 欲限制的设备数 ( auth_* 系列协议 不兼容原版才有效 )
    [注意] 设备数限制:每个端口同一时间能链接的客户端数量(多端口模式,每个端口都是独立计算),建议最少 2个。
    (默认: 无限):5
     
    请输入要设置的用户 单线程 限速上限(单位:KB/S)
    [注意] 单线程限速:每个端口 单线程的限速上限,多线程即无效。
    (默认: 无限):666
     
    请输入要设置的用户 总速度 限速上限(单位:KB/S)
    [注意] 端口总限速:每个端口 总速度 限速上限,单个端口整体限速。
    (默认: 无限):2333
     
    请输入要设置的用户 可使用的总流量上限(单位: GB, 1-838868 GB)
    (默认: 无限):1
     
    请输入要设置的用户 禁止访问的端口
    [注意] 禁止的端口:例如不允许访问 25端口,用户就无法通过SSR代理访问 邮件端口25了,如果禁止了 80,443 那么用户将无法正常访问 http/https 网站。
    封禁单个端口格式: 25
    封禁多个端口格式: 23,465
    封禁 端口段格式: 233-266
    封禁多种格式端口: 25,465,233-666 (不带冒号:)
    (默认为空,无限制):
     
    ——————————————————————————————
        禁止的端口 : 无限制
    ——————————————————————————————

同时最后也会提示是否设置 混淆 兼容原版(也就是使用原版SS也能链接),不懂 直接回车 或 输入 y 。(协议不在兼容原版)

注意:关于限制设备数,这个协议必须是非原版并且不兼容原版才有效,也就是必须SSR客户端使用协议的情况下,才有效!

不输入一路回车就是 默认参数:

    用户 : doubi
    端口 : 2333
    密码 : doub.io
    加密 : aes-128-ctr
    协议 : auth_aes128_md5
    混淆 : plain
    设备数限制: 0(无限)
    单线程限速: 0 KB/S (不限速)
    端口总限速: 0 KB/S (不限速)
    禁止的端口 : 无限制
    用户总流量 : 819.21 TB

如果安装过程没有出错,那么最后就会提示:

    ############################################################
     用户 [doubi] 的配置信息:
     
     I P     : xxx.xxx.xxx.xxx
     端口     : 2333 
     密码     : doub.io
     加密     : aes-128-ctr
     协议     : auth_aes128_md5
     混淆     : plain 
     设备数限制: 5
     单线程限速: 666 KB/S 
     端口总限速: 2333 KB/S 
     禁止的端口 : 无限制
     
     已使用流量 : 上传: XXX KB + 下载: XXX MB = XXX MB
     剩余的流量 : 980 MB 
     用户总流量 : 1 GB
     
     SS链接: ss://xxxxxxxxxxxxx
     SS二维码: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ss://xxxxxxxxxxxxx
     SSR链接: ssr://xxxxxxxxxxxxx
     SSR二维码: http://pan.baidu.com/share/qrcode?w=300&h=300&url=ssr://xxxxxxxxxxxxx
     
     提示: 
     在浏览器中,打开二维码链接,就可以看到二维码图片。
     协议和混淆后面的[ _compatible ],指的是 兼容原版协议/混淆。
     
    ############################################################

使用说明

运行脚本,

    bash ssrmu.sh
     
    # 还有一个 运行参数,是用于所有用户流量清零的
    bash ssrmu.sh clearall
    # 不过不需要管这个,可以通过脚本自动化的设置 crontab 定时运行脚本

输入对应的数字来执行相应的命令。

      ShadowsocksR MuJSON一键管理脚本 [vX.X.X]
      ---- Toyo | doub.io/ss-jc60 ----
     
      1. 安装 ShadowsocksR
      2. 更新 ShadowsocksR
      3. 卸载 ShadowsocksR
      4. 安装 libsodium(chacha20)
    ————————————
      5. 查看 账号信息
      6. 显示 连接信息
      7. 设置 用户配置
      8. 手动 修改配置
      9. 配置 流量清零
    ————————————
     10. 启动 ShadowsocksR
     11. 停止 ShadowsocksR
     12. 重启 ShadowsocksR
     13. 查看 ShadowsocksR 日志
    ————————————
     14. 其他功能
     15. 升级脚本
     
     当前状态: 已安装 并 已启动
     
    请输入数字 [1-15]:
注意:添加/删除/修改 用户配置后,无需重启ShadowsocksR服务端,ShadowsocksR服务端会定时读取数据库文件内的信息,不过修改 用户配置后,可能要等个十几秒才能应用最新的配置(因为ShadowsocksR不是实时读取数据库的,所以有间隔时间)。

文件位置

安装目录:/usr/local/shadowsocksr

日志位置:/usr/local/shadowsocksr/ssserver.log

配置文件:/usr/local/shadowsocksr/user-config.json

数据文件:/usr/local/shadowsocksr/mudb.json

注意:如果要转移用户数据,只需要转移 mudb.json 文件或其内容即可。
注意:ShadowsocksR服务端不会实时的把流量数据写入 数据库文件,所以脚本读取流量信息也不是实时的!

其他说明

ShadowsocksR 安装后,自动设置为 系统服务,所以支持使用服务来启动/停止等操作,同时支持开机启动。

  • 启动 ShadowsocksR:/etc/init.d/ssrmu start
  • 停止 ShadowsocksR:/etc/init.d/ssrmu stop
  • 重启 ShadowsocksR:/etc/init.d/ssrmu restart
  • 查看 ShadowsocksR状态:/etc/init.d/ssrmu status

ShadowsocksR 默认支持UDP转发,服务端无需任何设置。

本脚本已经集成了 安装/卸载 锐速(ServerSpeeder)/Lotserver,但是是否支持请查看 Linux支持内核列表 。(锐速、LotServer不支持OpenVZ)

注意:本脚本中的 显示链接信息中的 获取IP归属地功能使用的是 IPIP.NET 的免费API接口,因为限速所以每秒只能检测一次,同时 IPIP.NET 的免费API接口并不会保证稳定性,可能什么时候就突然暂时失效了,这是本人不可控的,有条件可以自建API接口。

ShadowsocksR目前支持的协议和混淆

协议(Protocol):origin,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,auth_chain_a,auth_chain_b

混淆(Obfs):plain,http_simple,http_post,random_head,tls1.2_ticket_auth,tls1.2_ticket_fastauth(这个是客户端用的,而服务端需要选择tls1.2_ticket_auth)

如果你想要使用 tls1.2_ticket_fastauth 混淆插件,那么服务端选择 tls1.2_ticket_auth,客户端选择 tls1.2_ticket_fastauth 即可。

如果服务端 设置混淆参数为:tls1.2_ticket_auth_compatible (兼容原版)

那么客户端 可使用的混淆为:plain / tls1.2_ticket_auth / tls1.2_ticket_fastauth

tls1.2_ticket_auth 与 tls1.2_ticket_fastauth 的区别为,后者不会等待服务器回应,所以不会增加延迟。适合于,因为混淆插件增加延迟的原因不得不选择原版混淆 plain,但是又因为QOS等因素而处于延迟与干扰/限速等之间抉择的时候,可以选择 tls1.2_ticket_fastauth 客户端混淆插件!

如何转移用户数据信息?

SSR服务端的所有用户数据都存在 /usr/local/shadowsocksr/mudb.json 文件中。

所以只需要转移该文件或者或者复制内容粘贴到另一个服务器上即可(先安装SSR服务端后再覆盖mudb.json,然后重启SSR服务端)。

使用阿里云/腾讯云等存着安全组或规则组一类外部防火墙的请注意

因为阿里云/腾讯云的服务器还有一个外部的防火墙也就是叫 安全组或规则组。

一般来说默认是只开放 22(SSH)端口,所以一些人在搭建ShadowsocksR服务端后,会出现无法访问的情况,ShadowsocksR客户端的统计窗口显示超时。

同时ShadowsocksR服务端开启详细日志模式(其他功能中)后,ShadowsocksR客户端访问ShadowsocksR账号无日志输出。

ShadowsocksR 端口限速中 单线程限速 和 端口总限速 的区别

使用最新ssr服务端

首先要说的是,限制设备数和限速功能,全都是依赖于 协议插件,这意味着:

  • 如果你服务端 协议设置(protocol) 的是 原版(origin) 时,设备数限制、限速无效。
  • 如果你服务端 协议设置(protocol) 的是 协议兼容原版 ,那么当用户使用 原版协议(origin) 连接账号时,设备数限制、限速无效。

限制设备连接数

限制设备连接数的这个功能,很早就有了,就是修改协议参数:protocol_param

打开你的配置文件,假设你在 /root 文件夹中安装的ShadowsocksR服务端,那么就是:

vi /root/shadowsocksr/user-config.json

找到协议参数(参数为空 "" 时,默认限制 64个设备数)

"protocol_param": "",

在协议参数中设置你要限制 每个端口最大设备连接数(建议最少2个),比如 限制最大 5个设备同时链接,那么改为:

"protocol_param": "5",

注意:协议参数仅在服务端 协议设置(protocol)为 非原版(origin)协议并不兼容原版(_compatible) 时才有效!

另外注意:目前只有 auth_chain_* 系列协议可以实时计算设备数,其他的 协议插件 则都是5分钟计算一次,所以可能并不准确。

如果你服务端 协议设置(protocol) 的是 原版(origin) 时,设备数限制无效。

如果你服务端 协议设置(protocol) 的是 协议兼容原版 ,那么当用户使用 原版协议(origin) 连接账号时,设备数限制无效。

限制端口速度

限制端口速度这个功能,是 2017年2月15日凌晨 才更新新添加的功能,我的一键ShadowsocksR管理脚本已经支持了这个设置。
打开你的配置文件,假设你在 /root 文件夹中安装的ShadowsocksR服务端,那么就是:

vi /root/shadowsocksr/user-config.json

新增的两个参数分别是(参数为 0 时,默认代表不限速):

    "speed_limit_per_con": 0,
    "speed_limit_per_user": 0,

单位是KB/S ,也就是我们平时下载文件的速度单位,我们家庭宽带100兆就是: 100Mbps / 8 = 12.5MB/S * 1024 =12800KB/S

比如我们要设置 单线程限速 1MB/S ,端口总限速 3MB/S ,那么就这样写:

    "speed_limit_per_con": 1024,
    "speed_limit_per_user": 3072,

speed_limit_per_con 指的是,单线程限速。
当你使用这个端口 下载某个文件时,单线程下载限速 100KB/S ,多线程下载(比如5个线程)就是 500KB/S 了,Youtube是单线程。
speed_limit_per_user 指的是,端口总限速。
使用这个端口的总速度被限制为 100KB/S
举例子说明:
假设设置,单线程限速 100KB/S ,端口总限速不限制,那么:

  • 你单线程下载文件速度为 100KB/S ,你多线程 5个线程就是 500KB/S 。

假设设置,单线程限速 100KB/S ,端口总限速 300KB/S ,那么:

  • 你单线程下载文件速度为 100KB/S ,你多线程最多 300KB/S 。

假设设置,单线程限速不限制,端口总限速 800KB/S ,那么:

  • 你单线程下载文件速度为 800KB/S ,你多线程最多也是 800KB/S 。
注意:单线程限速和端口总限速是独立的,当然在限速的时候不可能精确到100%,所以速度可能会上下波动 10% 左右。

如果你服务端 协议设置(protocol) 的是 原版(origin) 时,限速无效。

如果你服务端 协议设置(protocol) 的是 协议兼容原版 ,那么当用户使用 原版协议(origin) 连接账号时,限速无效。

解决 可使用原版协议,但无法使用ShadowsocksR协议 的问题

如果发现Shadowsocks原版协议/混淆可以使用,而ShadowsocksR的协议/混淆无法使用,那么多半是 VPS时区问题

这个命令,我的ShadowsocksR脚本在安装的时候已经执行了,如果你发现没有执行,那你可以手动执行。

我们可以通过下面这个命令,把VPS的时区调整为北京时区,这样就避免了ShadowsocksR 协议/混淆 因为时差太大造成的无法验证。

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

注意,部分VPS会提示你是否覆盖文件,输入 y 然后回车。

如果你遇到,crontab设定的定时任务不按更换时区后的VPS时间执行,那么请看下面:

crontab设定的定时任务不按VPS的时间执行,那是因为你更换VPS时区后还需要重启crontab。
CentOS 系统:

/etc/init.d/crond restart

Debian/Ubuntu 系统:

/etc/init.d/cron restart

提示 Media change: please insert the disc labeled‘Debian GNU/Linux 7.0.0 Wheezy — Official amd64 CD 等信息是 apt源 的问题,更换 apt源

我发现有一些人的VPS的 apt源有问题,导致安装失败,所以我这里写上如何更换 apt源。

本步骤仅适合 Debian 系统,Ubuntu系统自行搜索 apt源。

下面的手动改的方法一些人可能嫌麻烦,所以你们可以这样字更换apt源。

依次输入就可以更换apt源了,下面的代码是以 us美国 为例,你可以自己去这里选一个近一些合适的,然后替换下面代码中 us.sources.list 的 us 。

wget -N --no-check-certificate -P /etc/apt https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/sources/us.sources.list
rm -rf /etc/apt/sources.list
cp /etc/apt/us.sources.list /etc/apt/sources.list

手动更换(上面的命令执行完毕就不要重复执行这个了)

打开你的apt源文件,

vi /etc/apt/sources.list

然后按 I 键 进入编辑模式,如果你没有安装vim,也无法通过 apt-get install vim -y 安装,那么你就只能通过SFTP下载这个文件本地编辑了。

把下面的内容复制过去,注意下面示例是美国的apt源,想要其他地区的apt源,请看:Debian全球镜像站(替换下面的 ftp.us.debian.org 中的 us )

deb http://ftp.us.debian.org/debian/ jessie main
deb-src http://ftp.us.debian.org/debian/ jessie main
 
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
 
# jessie-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.us.debian.org/debian/ jessie-updates main contrib

修改完毕之后,按 ESC 键 退出编辑模式,然后输入 :wq 保存并退出,然后再试一试 apt-get update 是否正常。

ShadowsocksR启动失败,日志提示:Exception: libsodium not found 的错误

这是你使用了 chacha20 系列加密方式,但是却没有安装 libsodium支持库,导致ShadowsocksR无法启动,运行脚本选择选项 4 安装 libsodium支持库即可,如果安装失败,请选择其他的加密方式,对速度影响不大。

提示wget: unknown host 'doubiyunbackup.com' 之类的错误

这是无法解析我的域名,多半是DNS的问题,请更换DNS为谷歌DNS。

echo "nameserver 8.8.8.8
nameserver 8.8.4.4" > /etc/resolv.conf
# 两行一起复制一直执行

定时重启

    crontab -l > "crontab.bak"
    sed -i "/ssrmu restart/d" "crontab.bak"
    echo -e "\n10 3 * * * /etc/init.d/ssrmu restart" >> "crontab.bak"
    crontab "crontab.bak"
    rm -r "crontab.bak"

 
# 下面的只是让你对照理解用于修改上面第三行的定时间隔,只需要执行上面的代码即可。
# 如果你需要修改定时时间,那么重复执行上面代码就行了(记得修改第三行的定时间隔)。
# 如果你要删除定时重启任务,那么还是重复上面的代码,但是要跳过第三行代码。
# 下面代码前面的 * * * * * 分别对应:分钟 小时 日 月 星期
 
10 3 * * * /etc/init.d/ssrmu restart
# 这个代表 每天3点10分重启一次 ShadowsocksR
 
10 2 */2 * * /etc/init.d/ssrmu restart
# 这个代表 每隔2天的2点10分重启一次 ShadowsocksR
 
10 */4 * * * /etc/init.d/ssrmu restart
# 这个代表 每隔4小时的第10分重启一次 ShadowsocksR
THE END
最后修改:2020 年 01 月 16 日 20 : 53
本文链接:https://www.j000e.com/gfw/ssrmanagementscrip.html
版权声明:本文『SSR/SS多功能管理脚本收集』为『Joe』原创。著作权归作者所有。
转载说明:SSR/SS多功能管理脚本收集 || Joe's Blog』转载许可类型见文末右下角标识。允许规范转载时,转载文章需注明原文出处及地址。
Last modification:January 16, 2020