翻墙入口,Telegram上最大的免费科学上网解决方案提供者,
致力于维护互联网世界普世自由价值、建立翻墙行业新秩序。

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

本文最后更新于 2018年9月20日 20:02 可能会因为没有更新而失效。如已失效或需要修正,请留言!

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


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

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

  1. ShadowsocksR单用户手动教程:https://fanqiangdang.com/blog/ss-jc11/
  2. ShadowsocksR多用户手动教程:https://fanqiangdang.com/blog/ss-jc14/
  3. ShadowsocksR单用户一键脚本:https://fanqiangdang.com/blog/ss-jc42/
  4. ShadowsocksR多用户一键脚本:https://fanqiangdang.com/blog/ss-jc60/

如果你已经安装了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/ToyoDAdoubiBackup/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_mgr.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 5 代表限制5个   -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 密码:fanqiangdang.com 加密方式:chacha20 协议插件:auth_aes128_md5 协议参数:5 (同一时间链接设备数) 混淆插件:tls1.2_ticket_auth_compatible(兼容原版) 单线程限速:100KB/s 端口总限速:300KB/s 总流量:100GB 禁止访问端口:25,465,233-266 

那么添加代码如下:

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

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

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

添加后会提醒如下:

### add user info     user : doubi     port : 2345     method : chacha20     passwd : fanqiangdang.com     protocol : auth_aes128_md5     protocol_param : 5     obfs : tls1.2_ticket_auth_compatible     transfer_enable : 100.0  G Bytes     # 这个账号(端口)可使用的总流量     u : 0                                # 这个账号(端口) 已使用的上传流量,单位: K     d : 0                                # 这个账号(端口) 已使用的下载流量,单位: K     forbidden_port : 25,465,233-266      # 禁止访问使用的端口     speed_limit_per_con : 100            # 单线程限速 100KB/s     speed_limit_per_user : 300           # 端口总限速 300KB/s     ssr://XX.XX.XX.XX:2345:auth_aes128_md5:chacha20:tls1.2_ticket_auth:ZG91Yi5pbw     ssr://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

编辑用户

比如我们修改用户 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 

修改后会提醒如下:

edit user [doubi] ### new user info     user : doubi     port : 2345     method : aes-256-cfb     passwd : doub233     protocol : auth_aes128_md5     obfs : tls1.2_ticket_auth_compatible     transfer_enable : 120.0  G Bytes     u : 0     d : 0     forbidden_port : 25,465,233-266     speed_limit_per_con : 200     speed_limit_per_user : 300     ssr://XX.XX.XX.XX:2345:auth_aes128_md5:aes-256-cfb:tls1.2_ticket_auth:ZG91YjIzMwo     ssr://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

删除用户

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

注意:ShadowsocksR MudbJSON模式计算的流量不是实时写入 数据库文件的!

清零用户已使用流量

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.1

首先下载脚本:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/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 

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

## 示例 ## [email protected]:~/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模式使用教程 支持流量限制
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞(0)
未经允许不得转载:翻墙党 » ShadowsocksR 单服务器多用户 mudbjson模式使用教程 支持流量限制
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址