说明:
Shadowsocks原作者被喝茶 放弃此项目,由ShadowsocksR作者接手,所以以后只能转成SSR的服务端和客户端了。
此教程为单用户版,适合个人用户。如果你是站长,请查看多用户版教程:多用户版教程
一键脚本:『原创』Debian/Ubuntu ShadowsocksR一键单端口/多端口管理脚本(集成锐速)
本教程转自github,由ShadowsocksR作者编写!
本教程录制的有视频教程:https://doub.io/ss-jc41/
不会链接VPS的,你需要看着个:Linux SSH链接工具 Putty 新手详细使用教程
更多的Shadowsocks安装教程/一键脚本请看这里:Shadowsocks指导篇
小白易错点:漏步骤
很多小白出现的问题(评论里最少一半都是)都是因为安装过程不仔细导致出错,一般都是 漏掉某些步骤 导致的。所以请认真看教程并按顺序执行!实在不行就看视频教程!
为了应对不同情况,我把依赖基本库安装和SSR安装的步骤分成两种,这样一种用不了也没事,地球是圆的,我们换个方向走。
git 方式安装 SSR服务端
zip 方式安装 SSR服务端
zip 方式的话,本文章最下面的 SSR服务端升级代码就不可用了,当然现在SSR也停止更新了,所以不重要,主要是很多人 git安装 因为依赖的问题老是安装失败,所以特地加上 zip 方式安装。如果git 安装没问题,那还是用 git 方式安装吧,另外我也懒得因为这点重新做视频教程了。
服务端配置
进入根目录:
cd shadowsocksr
初始化配置:
bash initcfg.sh
通过配置文件运行
打开并修改配置文件,根据下下面的各选项说明来修改各个参数。
vi user-config.json
文件内容大概如下:
注意:新版ShadowsocksR服务端的 默认加密方式从aes-256-cfb
改为aes-128-ctr
了,大家注意一下。
{
"server": "0.0.0.0",
"server_ipv6": "::",
"server_port": 8388,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "m",
"timeout": 120,
"udp_timeout": 60,
"method": "aes-128-ctr",
"protocol": "auth_aes128_md5",
"protocol_param": "",
"obfs": "tls1.2_ticket_auth_compatible",
"obfs_param": "",
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}
注意:ShadowsocksR服务端 auth_aes128_*
及以后的所有协议不支持兼容原版(compatible),混淆依然支持,影响解释看着个。
小白易错点:目录分不清!
以上操作都是在 根目录 shadowsocksr/
下操作。
以下操作都是在 子目录 shadowsocksr/shadowsocks/
下操作。
进入子目录:
假设ShadowsocksR安装在 /root
目录,那么这时候我们是在 /root/shadowsocksr/shadowsocks
文件夹了。
cd shadowsocks
前台运行(调试专用,断开SSH后就自动关闭):
python server.py
赋予脚本执行权限
chmod +x *.sh
启动服务:
./logrun.sh
停止服务:
./stop.sh
查看日志:
./tail.sh
开机启动
一些人可能需要开机启动,我就一起写上吧。
首先设置开机启动文件的权限,并打开该文件。
Cent OS 系统:
chmod +x /etc/rc.d/rc.local vi /etc/rc.d/rc.local
Ubuntu/Debian 系统:
chmod +x /etc/rc.local vi /etc/rc.local
然后在 exit 0
这一句代码(只有ubuntu/debian有这个 exit 0)的前面加上 下面这句代码(如果你的Shadowsocks文件夹不在root目录下,请自行修改路径)。
/bin/bash /root/shadowsocksr/shadowsocks/logrun.sh
然后按 ESC键
退出vi编辑模式,然后输入 :wq
保存并退出该文件,就完成了。
端口限速和设置设备数
请查看这个文章:ShadowsocksR服务端 限制设备连接数 和 限制端口速度 的方法
多端口配置
如果不会,推荐我写的一键脚本:『原创』Debian/Ubuntu ShadowsocksR一键单端口/多端口管理脚本(集成锐速)
如果要多个用户一起使用的话,请写入以下配置:
注意:JSON的格式是最后一个参数不加 逗号"," (不包括{}),所以请注意格式。
{ "server": "0.0.0.0", "server_ipv6": "::", "local_address": "127.0.0.1", "local_port": 1080, "port_password":{ "8888":"password1", "9999":"password2", "2333":"password3" }, "timeout": 120, "udp_timeout": 60, "method": "aes-128-ctr", "protocol": "auth_aes128_md5", "protocol_param": "", "obfs": "tls1.2_ticket_auth_compatible", "obfs_param": "", "speed_limit_per_con": 0, "speed_limit_per_user": 0, "dns_ipv6": false, "connect_verbose_info": 0, "redirect": "", "fast_open": false }
主要就是修改这部分,按照格式修改端口和密码:
"port_password":{ "8888":"password1", "9999":"password2", "2333":"password3" },
如果要为每个端口配置不同的混淆协议,请写入以下配置:
{ "server":"0.0.0.0", "server_ipv6":"::", "local_address":"127.0.0.1", "local_port":1080, "port_password":{ "8388":{"protocol":"auth_simple", "password":"abcde", "obfs":"http_simple", "obfs_param":""}, "8389":{"protocol":"origin", "password":"abcde"} }, "timeout":300, "method":"aes-128-ctr", "protocol": "auth_aes128_md5", "protocol_param": "", "obfs": "tls1.2_ticket_auth_compatible", "obfs_param": "", "speed_limit_per_con": 0, "speed_limit_per_user": 0, "redirect": "", "dns_ipv6": false, "fast_open": false, "workers": 1 }
按格式修改端口、密码以及混淆协议。也可以和以前的格式混合使用,如果某个端口不配置混淆协议,则会使用下面的默认"obfs"配置。
各选项说明:
Name | Explanation | 中文说明 |
---|---|---|
server | the address your server listens | 监听地址 |
server_ipv6 | the ipv6 address your server listens | ipv6地址 |
server_port | server port | 监听端口 |
local_address | the address your local listens | 本地地址 |
local_port | local port | 本地端口 |
password | password used for encryption | 密码 |
timeout | in seconds | 超时时间 |
method | default: "aes-128-cft" | 加密方式 |
protocol_param | default:"" | 协议插件参数,可设置每个端口的链接设备数,比如"5"就是一个端口最大5个设备连接 |
protocol | default:"auth_aes128_md5" | 协议插件,默认"auth_aes128_md5" |
obfs | default:"tls1.2_ticket_auth_compatible" | 混淆插件,默认"tls1.2_ticket_auth_compatible" |
obfs_param | default:"" | 混淆插件参数,默认"" |
speed_limit_per_con | default:0 | 单线程限速,默认 0,单位KB/S,说明看这里 |
speed_limit_per_user | default:0 | 端口总限速,默认 0,单位 KB/S,说明看这里 |
redirect | default:"" | 重定向参数,默认"" |
dns_ipv6 | default:false | 是否优先使用IPv6地址,有IPv6时可开启 |
fast_open | use TCP_FASTOPEN, true / false | 快速打开(仅限linux客户端) |
workers | number of workers, available on Unix/Linux | 线程(仅限linux客户端) |
其中protocol有如下四种取值:
12月30日以后的ShadowsocksR服务端,协议 都不在支持兼容原版!
protocol | 说明 |
---|---|
"origin" | 原版协议 |
"verify_deflate" | 带压缩的协议 |
"auth_sha1_v4" | 支持兼容原版,类似"auth_sha1",提供更好的长度混淆特性 |
"auth_aes128_md5" | 推荐!但不支持兼容原版 |
"auth_aes128_sha1" | 推荐!但不支持兼容原版 |
"auth_chain_a" | 推荐!但不支持兼容原版 |
"auth_chain_b" | 推荐!但不支持兼容原版 |
其中obfs有如下四种取值:
obfs | 说明 |
---|---|
"plain" | 不混淆 |
"http_simple" | 伪装为http协议 |
"tls_simple" | 伪装为tls协议(不建议使用) |
"random_head" | 发送一个随机包再通讯的协议 |
"tls1.2_ticket_auth" | 伪装为tls ticket握手协议(强烈推荐),同时能抗重放攻击 |
如果你想要使用 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 客户端混淆插件!
注意:tls1.2_ticket_fastauth 需要 2017/06/04 后更新的服务端方可使用!
各混淆插件的说明请点击这里查看:混淆插件说明
注:客户端的protocol和obfs配置必须与服务端的一致。
redirect参数说明:
值为空字符串或一个列表,若为列表示例如
"redirect":["bing.com", "cloudflare.com:443"],
作用是在连接方的数据不正确的时候,把数据重定向到列表中的其中一个地址和端口(不写端口则视为80),以伪装为目标服务器。
dns_ipv6参数说明:
为true则指定服务器优先使用IPv6地址。仅当服务器能访问IPv6地址时可以用,否则会导致有IPv6地址的网站无法打开。
一般情况下,只需要修改以下五项即可:
"server_port":8388, //端口 "password":"password", //密码 "protocol":"origin", //协议插件 "obfs":"http_simple", //混淆插件 "method":"aes-128-ctr", //加密方式
更新源代码
如果代码有更新可用本命令更新代码
进入shadowsocks目录
cd shadowsocksr
执行
git pull
成功后重启ss服务
其它异常
如果你的服务端python版本在2.6以下,那么必须更新python到 2.7.x 版本
更多的Shadowsocks安装教程/一键脚本请看这里:Shadowsocks指导篇
一键脚本:『原创』Debian/Ubuntu ShadowsocksR一键单端口/多端口管理脚本(集成锐速)
转载自ShadowsocksR官方Github文档:https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup
转载请超链接注明:逗比根据地 » ShadowsocksR 单用户版服务端安装教程
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!
shadowsocksr/shadowsocks/
子目录,那么日志文件就是shadowsocksr/shadowsocks/ssserver.log
。如果你是用的多用户也就是
shadowsocksr/
根目录,那么日志文件就是shadowsocksr/ssserver.log
。默认ShadowsocksR服务端日志输出模式是只输出错误日志,如果你需要详细一点的日志(记录访问者IP、端口、访问的IP或域名+端口等简单信息),那么需要修改配置文件中的选项:
dns_ipv6″: false的意思,本文章写了:https://doub.io/ss-jc11/#各选项说明:
单用户指的是 单端口单密码单配置,最多可以改成多端口多密码同配置(加密方式等全都一样),适合少数人简单管理,本文写了。
内存是否够,自己测试。
bash initcfg.sh
步骤,所以没有该文件,你运行这个命令就会新建一个文件。python -V
看一看是不是没有安装Python,如果提示命令不存在,那么请安装Python: 如果正常显示Python版本,那么大概知道是哪里的问题了,删除ShadowsocksR服务端文件夹,然后重新安装应该就没事了(我修改了Github服务端中的启动/停止脚本)。shadowsocksr/
运行的,你进错目录自然会找不到文件。你这种问题说到底就是没有认真看教程,没有仔细按教程做,漏这漏那的自然会出错。视频教程
/root/shadowsocksr
文件夹,那么rm -rf /root/shadowsocksr
即可。然后假设你安装ShadowsocksR服务端的位置是 /root/shadowsocksr ,那么就:
大部分Linux系统都内置了Python,你的竟然没有,奇葩。。。
尝试用下面的命令安装,不行的话,就去谷歌搜索 Linux安装Python 2.7
speed_limit_per_con、speed_limit_per_user、protocol_param、obfs_param 在单用户和多用户配置文件中都是生效的。
配置方法无差别。
你的路由器固件中的ShadowsocksR客户端,也是有人维护的,需要他们去添加才行,除非你会自己写。
python server.py -d start
。Shadowsocks无法使用的排除方法。
Centos7的自带防火墙是一个坑爹的地方,你需要注意一下,具体的centos我基本不用也不熟悉,建议经常看我教程的话,请使用debian系统。
yum install -y unzip / apt-get install -y unzip
,然后下载压缩包到VPSwget --no-check-certificate https://softs.host/shadowsocksr_12_30.zip
,然后unzip shadowsocksr_12_30.zip
,然后就可以跳过获取源代码等步骤,按教程里的 服务端配置 继续安装了。“还有比如有些vps想重装系统,换掉自带的,又该怎么办?”你这句话是什么意思,我没有理解。
ls -a
查看当前文件夹内的所有文件,看一看user-config.json
文件是否存在,你这个错误似乎是文件被占用或者没有权限操作造成的。之所以再复制一个 user-config.json 文件,是因为升级ShadowsocksR服务端的话会覆盖 config.json 文件。
至于你的不认的情况,我不清楚,因为ShadowsocksR作者也是这样建议的,我也是一直这样做的,我写的SSR一键脚本也是这样做的,都没问题。
/root/shadowsocksr/shadowsocks/ 子目录是单用户目录,提示【ERROR: found an error in config.json: No JSON object could be decoded】代表config.json文件存着,但是配置内容错误,无法解析JSON。