镜像域名: doub.bid 提供给无翻墙能力的人使用~ 有能力的建议访问主域名(注意把"点"改为".") doub点io
投稿文章 | 广告投放 | Telegram 群组 / 公告频道

ShadowsocksR 单服务器多用户 mudbjson模式使用教程 支持流量限制

Shadowsocks Toyo 34评论
文章目录
[显示]
本文最后更新于 2017年6月23日 14:33 可能会因为没有更新而失效。如已失效或需要修正,请留言!

最近好长一段时间没东西写,我昨天翻SSR的WIKI的时候,突然发现这个模式的教程我还没写过,那就写写喽。


ShadowsocksR服务端目前分单用户和多用户,而单用户又分 单端口/多端口/单端口多用户,多用户又分 数据库版多用户/本地JSON版多用户以及单端口多用户。

很多人购买VPS后搭建ShadowsocksR服务端,只是几个人分享使用(比如合租),想要限制使用流量,但是又不想搭建网站面板来管理(数据库版多用户),那么在服务器少的情况,可以使用 ShadowsocksR多用户的 mudbjson模式来建立本地数据库(就是数据记录在JSON文件中),同样可以实现简单的用户管理(限速 限流量),当然这个功能仅对当前服务器有效,不能多个服务器互联!

  1. ShadowsocksR单用户手动教程:https://doub.io/ss-jc11/
  2. ShadowsocksR多用户手动教程:https://doub.io/ss-jc14/
  3. ShadowsocksR单用户一键脚本:https://doub.io/ss-jc42/

如果你已经安装了ShadowsocksR服务端,那么可以跳过前面两个安装步骤,直接看 #初始化配置

基本依赖安装

Centos系统执行这个:

yum update
yum install git -y

Ubuntu/Debian系统执行这个(推荐这两个系统,对新手友好):

apt-get update
apt-get install git -y

如果要使用 salsa20 和 chacha20 加密方式,请安装 libsodium

如果曾经安装过旧版本,亦可重复用以上步骤更新到最新版,仅1.0.4或以上版本支持chacha20-ietf

获取源代码

git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git

执行完毕后此目录会新建一个shadowsocksr目录,其中根目录的是多用户版(即数据库版),子目录中的是单用户版。

子目录中的是单用户版(即 shadowsocksr/shadowsocks )。

以下是相对路径,比如你在 /root 目录下执行上面的代码,那你的SS根目录就是 /root/shadowsocksr

根目录即 shadowsocksr

子目录即 shadowsocksr/shadowsocks

初始化配置

cd shadowsocksr
# 进入ShadowsocksR根目录
bash initcfg.sh
# 初始化ShadowsocksR服务端

然后我们需要修改一下API接口和本服务器IP(用于生成SSR链接),默认是 sspanelv2 改为 mudbjson 即可。

下面第一行代码就是替换API模式,第二行代码则是生成SSR链接用的,需要服务器的外网IP,代码会自动检测并替换。

sed -i "s/API_INTERFACE = 'sspanelv2'/API_INTERFACE = 'mudbjson'/" userapiconfig.py
sed -i "s/SERVER_PUB_ADDR = '127.0.0.1'/SERVER_PUB_ADDR = '$(wget -qO- -t1 -T2 ipinfo.io/ip)'/" userapiconfig.py

mudbjson 使用方法

mujson_mgr.py 参数说明

使用说明: python mujson_manage.py -a|-d|-e|-c|-l [选项( -u|-p|-k|-m|-O|-o|-G|-g|-t|-f|-i|-s|-S )]

操作:
  -a ADD               添加 用户
  -d DELETE            删除 用户
  -e EDIT              编辑 用户
  -c CLEAR             清零 上传/下载 已使用流量
  -l LIST              显示用户信息 或 所有用户信息

选项:
  -u USER              用户名
  -p PORT              服务器 端口
  -k PASSWORD          服务器 密码
  -m METHOD            服务器 加密方式,默认: aes-128-ctr
  -O PROTOCOL          服务器 协议插件,默认: auth_aes128_md5
  -o OBFS              服务器 混淆插件,默认: tls1.2_ticket_auth_compatible
  -G PROTOCOL_PARAM    服务器 协议插件参数,可省略
  -g OBFS_PARAM        服务器 混淆插件参数,可省略
  -t TRANSFER          限制总使用流量,单位: GB,默认:838868GB(即 8PB/8192TB 可理解为无限)
  -f FORBID            设置禁止访问使用的端口
                       -- 例如:禁止25,465,233~266这些端口,那么这样写: -f "25,465,233-266"
  -i MUID              设置子ID显示(仅适用与 -l 操作)
  -s value             当前用户(端口)单线程限速,单位: KB/s(speed_limit_per_con)
  -S value             当前用户(端口)端口总限速,单位: KB/s(speed_limit_per_user)

一般选项:
  -h, --help           显示此帮助消息并退出

多用户的本地JSON数据库文件位置:shadowsocksr/mudb.json

添加用户

假设添加一个用户为:doubi,要添加用户配置如下:

端口:2345
密码:doub.io
加密方式:chacha20
协议插件:auth_aes128_md5
混淆插件:tls1.2_ticket_auth_compatible(兼容原版)
单线程限速:100KB/s
端口总限速:300KB/s
总流量:100GB
禁止访问端口:25,465,233-666

那么添加代码如下:

python mujson_mgr.py -a -u doubi -p 2345 -k doub.io -m chacha20 -O auth_aes128_md5 -o tls1.2_ticket_auth_compatible -s 100 -S 300 -t 100 -f "25,465,233-266"

注意,添加用户的时候选项 -u 用户名 -p 端口 -k 密码 是必写的,其他账号参数都有默认值,可忽略。用户名和端口不可冲突添加(添加会提示错误)。

同时在下面其他的操作和示例中,如 编辑/删除/查看用户配置 等操作,必须指定 用户名或端口 其中一个(因为这两个是唯一的,所以用来区分用户)。

添加后会提醒如下:

点击展开 查看更多

编辑用户

比如我们修改用户 doubi密码、加密方式、总流量、单线程限速,可以这样写(端口无法修改)

python mujson_mgr.py -e -u doubi -k doubi233 -m aes-256-cfb -t 120 -s 200
# 或用端口来指定用户 python mujson_mgr.py -e -p 2345 -k doubi233 -m aes-256-cfb -t 120 -s 200

修改后会提醒如下:

点击展开 查看更多

删除用户

python mujson_mgr.py -d -u doubi
# 或用端口来指定用户 python mujson_mgr.py -d -p 2345

# 运行后会提示:delete user [doubi]

查看所有用户信息

python mujson_mgr.py -l

# 运行后会提示如下格式信息:
user [doubi] port 2345
user [doubi2] port 2346
user [doubi233] port 2333

查看单个用户信息(包括流量使用情况)

python mujson_mgr.py -l -u doubi
# 或用端口来指定用户 python mujson_mgr.py -l -p 2345

清零用户已使用流量

python mujson_mgr.py -c -u doubi
# 或用端口来指定用户 python mujson_mgr.py -c -p 2345

# 运行后会提示:clear user [doubi]

经过测试,添加/修改/删除用户配置或流量清零后,不需要重启ShadowsocksR服务端,服务端会自动读取最新用户配置(期间可能会断开链接几秒),效果如同 数据库版多用户,实时读取并写入数据到 本地JSON数据库中。

服务端运行与停止

脚本位于 shadowsocksr 根目录,如果你当前没有在这个目录,请先进入根目录: cd shadowsocksr

请分清楚,根目录 shadowsocksr 和子目录 shadowsocksr/shadowsocks ,不要进错目录!

赋予脚本执行权限(执行一次就好)

chmod +x *.sh

后台运行 但不记录日志(ssh窗口关闭后也继续运行)

./run.sh

后台运行 且 记录日志(ssh窗口关闭后也继续运行)

./logrun.sh

查看 SS日志(用 logrun.sh 脚本启动才会打开日志)

./tail.sh

停止运行

./stop.sh

日志文件位置:shadowsocksr/ssserver.log,可手动查看。

如果日志文件太大,需要清理,可以用下面这个命令 清空 日志文件。

cat /dev/null > ssserver.log

流量批量清零脚本

鉴于一部分逗友需要,所以我就写了个 ShadowsocksR mujson模式 用户流量批量清零脚本。简单设置一下就能实现每月指定日期自动清零所有用户的已使用流量。

脚本版本:v1.0.0

首先下载脚本:

wget -N --no-check-certificate https://softs.pw/Bash/ssr_mujson_clear.sh && chmod +x ssr_mujson_clear.sh

# 备用下载地址(上面的链接无法下载,就用这个):
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr_mujson_clear.sh && chmod +x ssr_mujson_clear.sh

然后打开脚本修改ShadowsocksR路径变量:

vi ssr_mujson_clear.sh
# 打开后,按 I键 进入编辑模式,修改后按 Esc键 退出编辑模式,并输入 :wq 保存并退出。

把脚本第11行 SSR_file="/usr/local/shadowsocksr" 引号中的路径改为你的ShadowsocksR根目录路径。

然后可以运行一下试试:

./ssr_mujson_clear.sh c

运行后正常情况会提示如下信息:

## 示例 ##
root@ubuntu:~/bash# ./ssr_mujson_clear.sh c
[信息] 端口[2345] 流量已清零 !
[信息] 端口[2346] 流量已清零 !
[信息] 所有端口(用户)流量已清零 !
## 示例 ##

没问题了,我们就要设置定时运行脚本功能了,首先安装 crontab:

# CentOS系统:
yum update && yum install crond -y

# Debian/Ubuntu系统:
apt-get update && apt-get install cron -y

然后打开 crontab编辑功能:

crontab -e

并添加定时代码,假设你的脚本在 /root 目录中,那么:

0 0 1 * * /bin/bash /root/ssr_mujson_clear.sh c
# 这一句的意思是 每月1日凌晨0点0分 执行一次脚本
# * * * * * 分别对应 分钟 小时 日份 月份 星期

添加后,如果用的是vim文件编辑器,则依然是 Esc键 退出编辑模式,并输入 :wq 保存并退出,然后执行 crontab -l 能看到你添加的代码即可。

参考资料:https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup(manyuser-with-mudbjson)

转载请超链接注明:逗比根据地 » ShadowsocksR 单服务器多用户 mudbjson模式使用教程 支持流量限制
责任声明:本站一切资源均原创或收集自互联网,仅作交流学习之用,请勿用作商业!如造成任何后果,本站概不负责!

赞 (28)or打赏
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(34)个小伙伴在吐槽
  1. 禁止访问端口:25,465,233-666下面写成266了
    Shameful2017-06-23 16:21 (3天前)回复
  2. 打错了“但是之前连上的3个ip”改为2个ip
    卡卡2017-06-22 17:39 (4天前)回复
  3. 这个mujson版本有没有端口限制连接数参数啊?我貌似没有看见,不知道是否可以自己加,另外我在网上看的:“限制端口并发数,IPTABLES就能搞定,假设你要限制端口8388的IP最大连接数为5,两句话命令: iptables -I INPUT -p tcp --dport 8388 -m connlimit --connlimit-above 5 -j DROP iptables -I OUTPUT -p tcp --dport 8388 -m connlimit --connlimit-above 5 -j DROP ”这个是可以限制,但是感觉不是很理想,比如我限制最大2个连接,当第三的ip连接的时候正常的应该是连接不上才对,而这个可以连接,但是之前连上的3个ip有个会被挤掉!不知道是否哪里有问题,请大神指点。
    卡卡2017-06-22 17:38 (4天前)回复
    • 这个限制的是TCP连接数,而不是设备数或IP数,你SSR客户端的链接统计窗口中的“链接列”可以看到当前创建的TCP+UDP连接数。这个限制的是这个连接数。而不能精准的限制设备数或IP数。
      Toyo2017-06-23 08:32 (4天前)回复
      • 哦 明白了 谢谢您的解答!!那我限制总的流量就好了。哈哈,反正也是玩。
        卡卡2017-06-23 09:49 (4天前)回复
  4. 大大,给一个怎么查看用户的使用了流量信息啊?
    卡卡2017-06-22 00:43 (5天前)回复
    • python mujson_mgr.py -l -u doubi
      # 或用端口来指定用户 python mujson_mgr.py -l -p 2345
      # doubi 是示例用户名
      
      Toyo2017-06-22 10:47 (5天前)回复
      • 我昨晚上就发现-u查看只显示一个用户名出来,没有详细信息;指定-p就可以详细详细信息,自然包括已经使用的流量等信息。二者有区别哦。。
        卡卡2017-06-22 11:34 (4天前)回复
        • 不清楚你的怎么回事,但是我这边测试没这种情况,而且我在写教程前升级了一下ShadowsocksR服务端,确保服务端是最新版本。
          root@ubuntu:/usr/local/shadowsocksr# python mujson_mgr.py -l -u doubi
          loaded collections.OrderedDict
          ### user [doubi] info 
              user : doubi
              port : 2345
              method : aes-128-ctr
              passwd : doub.io
              protocol : auth_aes128_md5
              obfs : tls1.2_ticket_auth_compatible
              transfer_enable : 120.0  G Bytes
              u : 288.908203125  K Bytes
              d : 7.33311653137  M Bytes
              forbidden_port : 25,456
              speed_limit_per_con : 200
              speed_limit_per_user : 400
              ssr://XXX
              ssr://XXX
          root@ubuntu:/usr/local/shadowsocksr# python mujson_mgr.py -l -p 2345
          loaded collections.OrderedDict
          ### user [doubi] info 
              user : doubi
              port : 2345
              method : aes-128-ctr
              passwd : doub.io
              protocol : auth_aes128_md5
              obfs : tls1.2_ticket_auth_compatible
              transfer_enable : 120.0  G Bytes
              u : 288.908203125  K Bytes
              d : 7.33311653137  M Bytes
              forbidden_port : 25,456
              speed_limit_per_con : 200
              speed_limit_per_user : 400
              ssr://XXX
              ssr://XXX
          root@ubuntu:/usr/local/shadowsocksr# 
          
          Toyo2017-06-23 08:25 (4天前)回复
          • 我的怎么-u就不行,奇怪了。。不过指点端口也无所谓了。
            卡卡2017-06-23 09:50 (4天前)回复
      • 另外老大能不能给一个Conrad里面自动一个月某日自动清一次用户流量啊,我不确定自己写的对不对。
        卡卡2017-06-22 11:36 (4天前)回复
        • 这个晚上有空写个脚本好了,也没几句代码。
          Toyo2017-06-23 08:52 (4天前)回复
          • 嗯嗯。。谢谢。
            卡卡2017-06-23 09:50 (4天前)回复
        • 文章里已经更新了流量批量清零脚本和使用方法。
          Toyo2017-06-23 14:34 (3天前)回复
          • 非常感谢老大!!! :smile:
            卡卡2017-06-23 18:34 (3天前)回复
  5. 爽,之前自己研究了下,没完全搞明白!大神这教程是我渴望已久的,以至于命令看了2遍能默写了!!!哈哈。。求鼓励!! :cool:
    卡卡2017-06-22 00:05 (5天前)回复
  6. 楼主这个教程很强大!! 另外还可以加一个收尾,就是自启动脚本。 https://github.com/breakwa11/shadowsocks-rss/wiki/System-startup-script 我是CentOS7, 用了脚本后比较遗憾的就是log被归到/var/log/message里去了,不能单独一个文件。
    Long2017-06-17 16:18 回复
  7. 请问流量清空的话,是手动清空 还是一个月后自动从零计算。
    三叔2017-06-17 00:32 回复
    • 没有测试过,估计不能自动清零。
      Toyo2017-06-17 00:35 回复
  8. 好像不能设置倍率也
    siam2017-06-16 07:09 回复
  9. 赶紧更新脚本吧楼主
    lang2017-06-14 07:58 回复
  10. 无聊试试了脚本成功了!假设添加用户用的是doubi,添加代码里用的ceshi这个用户改为一致好以免有人蒙圈。添加用户成功后ssr二维码没有头部链接打不开吧http://doub.pw/qr/qr.php?text=
    lang2017-06-12 11:02 回复
    • 嗯,手误已经修复了。“http://doub.pw/qr/qr.php?text=”这个是我自建的JS 二维码解析API,后面加上任何字符都会生成二维码图片。普通的 ssr:// 链接也可以直接添加到ShadowsocksR客户端中。
      Toyo2017-06-12 14:14 回复
  11. mujson 模式的SSR脚本几个月前我写好了,有兴趣的朋友可以来看看~ http://www.hostloc.com/thread-356225-1-1.html Github: https://github.com/FunctionClub/SSR-Bash-Python
    雨落无声2017-06-11 16:47 回复
  12. 期待一键脚本
    大小方圆高矮2017-06-11 16:27 回复
  13. Toyo,怎樣新增成為系統服務 ? 要打什麼指令
    Lobert2017-06-11 09:01 回复
    • Debian系統
      Lobert2017-06-11 09:02 回复
    • 需要写一个服务脚本(不带 .sh 后缀,假设脚本名为 ssr ),然后放到 /etc/init.d/ 目录下,然后
      # 赋予脚本执行全新
      chmod +x /etc/init.d/ssr
      # Debian/Ubuntu 加入系统服务
      update-rc.d -f ssr defaults
      Toyo2017-06-11 11:21 回复
  14. 期待大佬早出 mudbjson 模式的ShadowsocksR一键脚本 :roll:
    就爱高清2017-06-10 23:45 回复
  15. 问题来了,客户端怎么用 :lol:
    kurokitomoko2017-06-10 19:00 回复
    • ShadowsocksR客户端怎么用?和本文章有什么关系,本文章只是SSR服务端的配置教程,客户端有什么区别?自己去看小白教程:https://doub.io/ss-jc10/
      Toyo2017-06-11 00:54 回复
      • 不是不是,客户端怎么用mudbjson。。。
        kurokitomoko2017-06-11 13:11 回复
      • 准确来说是连上设置了mudbjson的服务器
        kurokitomoko2017-06-11 13:12 回复
        • 什么玩意?mudbjson是服务端的一个多用户模式,用于单服务器管理多个用户,客户端该怎么链接就怎么链接啊,有什么区别?
          Toyo2017-06-11 13:24 回复