从零开始的ShadowsocksR服务器端部署指南

前言

  • SSR全名:ShadowsocksR
  • 官方介绍:

    A fast tunnel proxy that helps you bypass firewalls.

  • 开发者breakwa11
    遗憾的是,因为作者受到攻击,停止了维护。不过,感谢开源社区为我们带来的好处,该项目已经被“接盘”,命名为SSRR。
    有趣的是,SSR原先是SS的一个分支。基于此,我们不难猜测,SSRR的继任者名字将是SSRRR

  • 目前的开源项目地址:SSRR
  • 版本特点
  1. 全能代理,同一端口支持socks4/socks4a/socks5/http
  2. 节点统计,包括延迟、连接数、当前下载速度、最高速度、出错率等等
  3. 连接管理,随时断开指定节点的连接,或修改节点后自动断开
  4. 协议转换,把UDP包封装于TCP里发送
  5. 多重代理,通过设置前置socks5/http代理,可达到任意重代理
  6. 协议插件,支持自定义协议和协议混淆,详见ShadowsocksR插件文档 <<== 要了解插件的点这里看

前期准备

既然是服务器端部署,首先需要有一台服务器,为了达成使用SSR的目的,显然需要是海外服务器。笔者使用的是Vultr的云服务器(点击可访问),价格良心(最低每月2.5刀),支持支付宝。
本教程基于Ubuntu 17.10 x64,1Core,512M RAM的最低配Server。

登录服务器

下载Xshell

其它支持SSH的工具也可使用
下载Xshell,选择License Type:Home and School use,可供免费的非商业使用。


稍后你会在邮箱中收到Xshell的下载地址,安装并打开。

登录远程服务器

点击右上角新建按钮

在随后弹出的窗口中填入你服务器的基本信息

点击左栏中的用户身份验证,输入用户名(默认为root)和密码(见服务器页面)。

完成后,点击确定。在弹出的页面选择刚才新建的服务器,点击连接。

成功登录。

部署

Linux基本命令、技巧

Ubuntu是Linux的一个发行版。
登陆后默认进入的文件夹是/root,系统中等效于/~。而真正的根目录是/
ll 查看当前目录下文件及文件夹等(=ls -l,也可使用ls dir等)
cd 切换到指定目录
cd .. 回到上级目录
vi 一款基于命令行的编辑器
需要输入已知文件的全名时,可以先输入开头几个字母,按Tab键后系统会自动补全。

安装依赖

先后输入以下两句命令并按回车执行。

1
2
apt install git -y
apt install python -y

如果已经安装,系统会给出相应提示,则可直接向下。

获取SSR服务端

先放出项目地址供参考ShadowsocksR
执行命令

1
git clone -b akkariiin/master https://github.com/shadowsocksrr/shadowsocksr.git

初始化

进入根目录初始化配置(假设根目录在~/shadowsocksr,如果不是,命令需要适当调整):

1
2
cd ~/shadowsocksr
bash initcfg.sh

接下来修改userapiconfig.py文件:

1
vi userapiconfig.py

按一下键盘上的i进入编辑模式,随后就可以从心所欲地输入啦。绿色光标就是当前的位置。

修改完成后,先按ESC退出编辑模式,再输入:wq保存并退出。w为保存,q为退出。
输入:q!可以强制退出,丢弃修改。
当然,你也可以点击工具栏中的新建文件传输按钮。

找到userapiconfig.py文件用你更喜欢的编辑器打开编辑。
我们需要修改的内容是以下两行

1
2
API_INTERFACE = 'mudbjson' #修改接口类型
SERVER_PUB_ADDR = '这里填入服务器的IP' #修改生成链接对应的公网IP

配置

修改用户配置

直接修改mudb.json

shadowcocksr目录下的mudb.json就是服务器端多用户配置的文件。
先阐明各项的含义:

名称 含义
d 已用下载流量(B)
enable 1为开启
method 加密方法
obfs 混淆方法
passwd 密码
port 端口
protocol 协议
transfer_enable 流量上限(B)
u 已用上传流量(B)
user 用户名

执行:

1
vi mudb.json

配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
{
"d": 0,
"enable": 1,
"method": "aes-128-ctr",
"obfs": "tls1.2_ticket_auth",
"passwd": "m",
"port": 8080,
"protocol": "auth_aes128_md5",
"transfer_enable": 9007199254740992,
"u": 0,
"user": "SSR"
}
]

若要配置多个用户,请按照以下格式(配置内容同上,每个用户的配置可以不同):

1
2
3
4
5
6
7
8
9
10
11
[
{
#USER 1 配置
},
{
#USER 2 配置
},
{
#USER 3 配置
} #此处无逗号
]

使用脚本修改

命令格式:

1
python mujson_mgr.py -a|-d|-e|-c|-l [选项( -u|-p|-k|-m|-O|-o|-G|-g|-t|-f|-i|-s|-S )]

操作:
-a 添加用户
-d 删除用户
-e 编辑用户
-c 清零已使用流量
-l 显示用户信息

选项:
-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
-g OBFS_PARAM 服务器混淆插件参数,可省略
-t TRANSFER 限制总流量(GB),默认8PB
-f FORBID 设置禁止访问的端口,例如:-f “22,443,1000-1200”
-i MUID 设置子ID显示(仅适用于 -l 操作)
-s value 设置用户单线程限速,单位: KB/s
-S value 设置用户端口总限速,单位: KB/s

系统防火墙iptables设置

将以下命令中的[port]修改为你所使用的端口,并执行

1
2
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport [PORT] -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport [PORT] -j ACCEPT

协议与混淆插件官方说明

服务端运行与停止

后台运行(无log,ssh窗口关闭后也继续运行)
./run.sh
后台运行(输出log,ssh窗口关闭后也继续运行)
./logrun.sh
后台运行时查看运行情况
./tail.sh
停止运行
./stop.sh
注:通过脚本运行默认日志会保存在根目录的ssserver.log,可手动查看。

客户端使用

参考SSR新手指南
尽情享受互联网吧!

参考资料

请作者喝咖啡~