ssr shadowsocksr 的配置

https://doub.io/ss-jc57/  服务器配置

https://doub.io/ss-jc10/  客户端下载

 

服务器

 

最近好长一段时间没东西写,我昨天翻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系统执行这个:

  1. yum update
  2. yum install git -y

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

  1. apt-get update
  2. apt-get install git -y

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

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

获取源代码

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

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

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

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

根目录即 shadowsocksr

子目录即 shadowsocksr/shadowsocks

初始化配置

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

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

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

  1. sed -i "s/API_INTERFACE = 'sspanelv2'/API_INTERFACE = 'mudbjson'/" userapiconfig.py
  2. 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 参数说明

  1. 使用说明: python mujson_manage.py -a|-d|-e|-c|-l [选项( -u|-p|-k|-m|-O|-o|-G|-g|-t|-f|-i|-s|-S )]
  2.  
  3. 操作:
  4. -a ADD 添加 用户
  5. -d DELETE 删除 用户
  6. -e EDIT 编辑 用户
  7. -c CLEAR 清零 上传/下载 已使用流量
  8. -l LIST 显示用户信息 所有用户信息
  9.  
  10. 选项:
  11. -u USER 用户名
  12. -p PORT 服务器 端口
  13. -k PASSWORD 服务器 密码
  14. -m METHOD 服务器 加密方式,默认: aes-128-ctr
  15. -O PROTOCOL 服务器 协议插件,默认: auth_aes128_md5
  16. -o OBFS 服务器 混淆插件,默认: tls1.2_ticket_auth_compatible
  17. -G PROTOCOL_PARAM 服务器 协议插件参数,可省略
  18. -g OBFS_PARAM 服务器 混淆插件参数,可省略
  19. -t TRANSFER 限制总使用流量,单位: GB,默认:838868GB(即 8PB/8192TB 可理解为无限)
  20. -f FORBID 设置禁止访问使用的端口
  21. -- 例如:禁止25,465,233~266这些端口,那么这样写: -f "25,465,233-266"
  22. -i MUID 设置子ID显示(仅适用与 -l 操作)
  23. -s value 当前用户(端口)单线程限速,单位: KB/s(speed_limit_per_con)
  24. -S value 当前用户(端口)端口总限速,单位: KB/s(speed_limit_per_user)
  25.  
  26. 一般选项:
  27. -h, --help 显示此帮助消息并退出

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

添加用户

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

  1. 端口:2345
  2. 密码:doub.io
  3. 加密方式:chacha20                                       #我用这个加密方式没有成功,用的aes-256-cfb
  4. 协议插件:auth_aes128_md5
  5. 混淆插件:tls1.2_ticket_auth_compatible(兼容原版)
  6. 单线程限速:100KB/s
  7. 端口总限速:300KB/s
  8. 总流量:100GB
  9. 禁止访问端口:25,465,233-666

那么添加代码如下:

  1. 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 密码 是必写的,其他账号参数都有默认值,可忽略。用户名和端口不可冲突添加(添加会提示错误)。

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

添加后会提醒如下:

点击展开 查看更多

 

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

 

编辑用户

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

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

修改后会提醒如下:

点击展开 查看更多

删除用户

  1. python mujson_mgr.py -d -u doubi
  2. # 或用端口来指定用户 python mujson_mgr.py -d -p 2345
  3.  
  4. # 运行后会提示:delete user [doubi]

查看所有用户信息

  1. python mujson_mgr.py -l
  2.  
  3. # 运行后会提示如下格式信息:
  4. user [doubi] port 2345
  5. user [doubi2] port 2346
  6. user [doubi233] port 2333

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

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

清零用户已使用流量

  1. python mujson_mgr.py -c -u doubi
  2. # 或用端口来指定用户 python mujson_mgr.py -c -p 2345
  3.  
  4. # 运行后会提示:clear user [doubi]

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

服务端运行与停止

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

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

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

  1. chmod +x *.sh

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

  1. ./run.sh

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

  1. ./logrun.sh

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

  1. ./tail.sh

停止运行

  1. ./stop.sh

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

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

  1. cat /dev/null > ssserver.log

流量批量清零脚本

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

脚本版本:v1.0.0

首先下载脚本:

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

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

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

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

然后可以运行一下试试:

  1. ./ssr_mujson_clear.sh c

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

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

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

  1. # CentOS系统:
  2. yum update && yum install crond -y
  3.  
  4. # Debian/Ubuntu系统:
  5. apt-get update && apt-get install cron -y

然后打开 crontab编辑功能:

  1. crontab -e

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

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

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

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

 

 

 

 

 

 


分享到: 微信 更多