搭建SSR
--------关于
--------搭建SSR
--------卸载SSR
--------检查状态
--------使用命令
--------多用户配置示例
--------SSR客户端
搭建SS
--------使用python pip安装SS
----------------Windows
----------------Linux
--------使用脚本搭建SS
----------------关于
----------------搭建SS
----------------卸载SS
----------------使用命令
----------------SS客户端
SS&SSR客户端汇总
--------Windows
--------Mac
--------Android
--------Linux
使用BBR,锐速,Kcptun,Serverspeeder等软件加速
加密,协议,混淆
--------ShadowsocksR协议混淆基础
----------------概要
----------------混淆插件
----------------协议定义插件
----------------混淆特性
----------------协议特性
----------------混淆与协议配置建议
--------必看建议
----------------SS
----------------SSR
----------------混淆为什么不选tls
----------------加密这块到底是怎么回事
SS,SSR,VPN的区别

本文先记录搭建方法后总结SS与SSR相关的东西.

搭建SSR

主流方案都是采用大佬写好的一键脚本,这里使用秋水逸冰的SSR脚本,我的备份

关于

本脚本适用环境:
系统支持:CentOS,Debian,Ubuntu
内存要求:≥128M
日期:2018 年 02 月 07 日

关于本脚本:
一键安装 ShadowsocksR 服务端。
请下载与之配套的客户端程序来连接。
(以下客户端只有 Windows 客户端Python 版客户端可以使用 SSR 新特性,其他原版客户端只能以兼容的方式连接 SSR 服务器)

默认配置:
服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,默认为 aes-256-cfb)
协议(Protocol):自己设定(如不设定,默认为 origin)
混淆(obfs):自己设定(如不设定,默认为 plain)

搭建SSR

使用root用户登录,运行以下命令:

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
chmod +x shadowsocksR.sh
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log

安装完成后,脚本提示如下:

Congratulations, ShadowsocksR server install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Protocol         :your_protocol
Your obfs             :your_obfs
Your Encryption Method:your_encryption_method

Welcome to visit:https://shadowsocks.be/9.html
Enjoy it!

卸载SSR

使用 root 用户登录,运行以下命令:

./shadowsocksR.sh uninstall

检查状态

安装完成后即已后台启动 ShadowsocksR ,运行:

/etc/init.d/shadowsocks status

可以查看 ShadowsocksR 进程是否已经启动。
本脚本安装完成后,已将 ShadowsocksR 自动加入开机自启动。

使用命令

启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

配置文件路径:/etc/shadowsocks.json
日志文件路径:/var/log/shadowsocks.log
代码安装目录:/usr/local/shadowsocks

多用户配置示例

{
"server":"0.0.0.0",
"server_ipv6": "[::]",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
    "8989":"password1",
    "8990":"password2",
    "8991":"password3"
},
"timeout":300,
"method":"aes-256-cfb",
"protocol": "origin",
"protocol_param": "",
"obfs": "plain",
"obfs_param": "",
"redirect": "",
"dns_ipv6": false,
"fast_open": false,
"workers": 1
}

如果你想修改配置文件,请参考:
https://github.com/shadowsocksr-backup/shadowsocks-rss/wiki/Server-Setup
https://github.com/shadowsocksr-backup/shadowsocks-rss/blob/master/ssr.md
https://github.com/shadowsocksr-backup/shadowsocks-rss/wiki/config.json

SSR客户端

20190726更新SSR全平台客户端网盘汇总下载
个人网盘: https://drive.j000e.com/index.php/s/ssrclient
Onedrive: https://1drv.ms/u/s!AgUFmGMFdlKtqpkokW_CelTXFokvEg?e=XKqnVq
GoogleDrive: https://drive.google.com/drive/folders/1Eovk5P4yY6alNvgP_nteG-zOB7F4B44A?usp=sharing
客户端下载:
Github查看Shadowsocksrr
Github查看SHadowsocksX-NG
Windows
OS X
Linux
Android / iOS可以使用Shadowrocket(撰写本文的时候是18.9.7,国区的appstore还可以12元购买shadowrocket)
OpenWRT
SS-Tap,一个可以转发UDP的WindowsSS/SSR客户端,真全局软件也可以走代理,1.9.0.7旧版下载密码: 3ckx,最终版1.1.0.1下载,推荐使用1.0.9.7版本

搭建SS

最常用的方法仍然是使用脚本安装,也可以通过python pip安装,关于UI管理界面,除了ss-panel,推荐一个较为简单容易搭建的项目ss-manager,Github地址

使用python pip安装SS

Windows

安装Python:
首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.7对应的64位安装程序32位安装程序,然后,运行下载的EXE安装包:
installpy
特别要注意勾上Add Python 3.7 to PATH,然后点“Install Now”即可完成安装。

运行Python
安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:
情况一:
pysuccess
看到上面的画面,就说明Python安装成功!

你看到提示符>>>就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)。

情况二:得到一个错误:
pyfail

‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选Add Python 3.7 to PATH,那就要手动把python.exe所在的路径添加到Path中。

[日志]python3.6在win10专业版安装时,即使在安装程序上勾选了add path...也无法成功在cmd输入python后成功进入,此时需要手动添加路径,这个事情在早先的日志中已有记载,重写备忘,在系统-高级-环境变量-系统变量-选中Path-编辑-新建-添加"C:\Program Files\Python36"保存即可.

如果你不知道怎么修改环境变量,建议把Python安装程序重新运行一遍,务必记得勾上Add Python 3.7 to PATH。

安装

pip install shadowsocks

然后创建一个文件,如:config.json

{
"server":"",     ##填写服务器外网ip地址
"server_port":8000,  ##代理端口
"local_address":"127.0.0.1",
"local_port":1080, ##本地监听端口
"password":"",   ##连接密码
"timeout":300,
"method":"aes-256-cfb", ##加密方式
"dast_open":false
}

填写完以后,在cmd里运行:

ssserver -c config.json

Linux

先安装Python再安装SS

Ubuntu

apt-get install  python-pip
apt-get install python-m2crypto
pip install  shadowsocks

CentOS

yum install epel-release
yum install python-pip
yum install python-setuptools m2crypto supervisor
pip install  shadowsocks

配置config文件

mkdir /etc/shadowsocks
vi /etc/shadowsocks/config.json (一定要在这个目录下)

写入:
单用户配置:

{
"server":"",  ##填写服务器外网ip地址,ip也可以写内网地址,只要能转发出来即可。
"server_port":8000,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false
}

多用户配置:

{
"server":"",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"8000":"123456",
"8001":"123456"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false
}

命令行启动关闭

#后台启动
ssserver -c /etc/shadowsocks/config.json -d start
#后台停止
ssserver -c /etc/shadowsocks/config.json -d stop

设置开机启动
将启动的命令加入到/etc/rc.local文件的最后(最新的Ubuntu18.04好像不再支持这种方式开机启动)

使用脚本搭建SS

使用秋水逸冰的SS四合一脚本,我的备份

关于

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
内存要求:≥128M
日期  :2018 年 06 月 01 日

关于本脚本
1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;
2、各版本的启动脚本及配置文件名不再重合;
3、每次运行可安装一种版本;
4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);
5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);

默认配置
服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb)
协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版)
混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版)
备注:脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可。

搭建SS

使用root用户登录,运行以下命令:

wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

安装完成后,脚本提示如下

Congratulations, your_shadowsocks_version install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)
 ss://your_encryption_method:[email protected]_server_ip:your_server_port
Your QR Code has been saved as a PNG file path:
 your_path.png

Welcome to visit:https://teddysun.com/486.html
Enjoy it!

卸载SS

若已安装多个版本,则卸载时也需多次运行(每次卸载一种)
使用root用户登录,运行以下命令:

./shadowsocks-all.sh uninstall

使用命令

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:

/etc/init.d/shadowsocks-python start | stop | restart | status

ShadowsocksR 版:

/etc/init.d/shadowsocks-r start | stop | restart | status

Shadowsocks-Go 版:

/etc/init.d/shadowsocks-go start | stop | restart | status

Shadowsocks-libev 版:

/etc/init.d/shadowsocks-libev start | stop | restart | status

各版本默认配置文件
Shadowsocks-Python 版:

/etc/shadowsocks-python/config.json

ShadowsocksR 版:

/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:

/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:

/etc/shadowsocks-libev/config.json

SS客户端

客户端下载
Github查看 Shadowsocks.org
常规版 Windows 客户端 ShadowsocksR 版 Windows 客户端
SS同样可以使用SS-Tap,1.9.0.7旧版下载密码: 3ckx,最终版1.1.0.1下载,推荐使用1.0.9.7版本
Mac版客户端
安卓客户端(Google Play) 安卓版客户端
IOS可以使用Shadowrocket

SS&SSR客户端汇总

此处摘自归纳了很多客户端信息的聪聪博客

Windows

Shadowsocks
Shadowsocks 2.3.1(XP 系统可用)
simple-obfs
ShadowsocksR
ShadowsocksRR
SSRR
ShadowsocksD
Outline
electron-ssr
flora
SScap
SSTap
SocksCap

Mac

Surge for Mac $49.99/$69.99/$99.99
ShadowsocksX Free
ShadowsocksX-NG Free
ShadowsocksX-NG-R Free
A.BIG.T ¥30.00
ShadowTunnel Free
Reborn Free
Outline Free
electron-ssr Free
ClashX Free
shadowsocks Browser! ¥18.00
SsrConnectPro ¥3.00
GoAgentX Free
非官方GoAgentX Free
Flora Free
Postern 下架
SpechtLite Free
Buff

Android

Shadowsocks 影梭
请输入链接描述Shadowsocks 影梭 Google Play
simple-obfs-android
ShadowsocksR
ShadowsocksRR
Outline
Surfboard(Surfboard 支持导入Surge配置)
NetPatch
Postern(Postern 支持导入Surge配置)
BifrostV

Linux

Shadowsocks-qt5
ShadowsocksR
Outline
Avege
flora
electron-ssr
OpenWRT-Shadowsocks

使用BBR,锐速,Kcptun,Serverspeeder等软件加速

参考文章


对于Kcptun等的安装Google有很多

加密,协议,混淆

参考自ShadowsocksBackup神代綺凜的博客

ShadowsocksR协议混淆基础

概要

用于方便地产生各种协议接口。实现为在原来的协议外套一层编码和解码接口,不但可以伪装成其它协议流量,还可以把原协议转换为其它协议进行兼容或完善(但目前接口功能还没有写完,目前还在测试完善中),需要服务端与客户端配置相同的协议插件。插件共分为两类,包括混淆插件和协议定义插件。

混淆插件

此类型的插件用于定义加密后的通信协议,通常用于协议伪装,部分插件能兼容原协议。

plain:表示不混淆,直接使用协议加密后的结果发送数据包

http_simple:并非完全按照http1.1标准实现,仅仅做了一个头部的GET请求和一个简单的回应,之后依然为原协议流。使用这个混淆后,已在部分地区观察到似乎欺骗了QoS的结果。对于这种混淆,它并非为了减少特征,相反的是提供一种强特征,试图欺骗GFW的协议检测。要注意的是应用范围变大以后因特征明显有可能会被封锁。此插件可以兼容原协议(需要在服务端配置为http_simple_compatible),延迟与原协议几乎无异(在存在QoS的地区甚至可能更快),除了头部数据包外没有冗余数据包,客户端支持自定义参数,参数为http请求的host,例如设置为cloudfront.com伪装为云服务器请求,可以使用逗号分割多个host如a.com,b.net,c.org,这时会随机使用。注意,错误设置此参数可能导致连接被断开甚至IP被封锁,如不清楚如何设置那么请留空。服务端也支持自定义参数,意义为客户端仅能填写的参数列表,以逗号分割。
本插件的高级设置(C#版、python版及ssr-libev版均支持):本插件可以自定义几乎完整的http header,其中前两行的GET和host不能修改,可自定义从第三行开始的内容。例子:
baidu.com#User-Agent: abc\nAccept: text/html\nConnection: keep-alive
这是填于混淆参数的内容,在#号前面的是上文所说的host,后面即为自定义header,所有的换行使用\n表示(写于配置文件时也可直接使用\n而不必写成\n,换行符亦会转换),如遇到需要使用单独的\号,可写为\\,最末尾不需要写\n,程序会自动加入连续的两个换行。

http_post:与http_simple绝大部分相同,区别是使用POST方式发送数据,符合http规范,欺骗性更好,但只有POST请求这种行为容易被统计分析出异常。此插件可以兼容http_simple,同时也可兼容原协议(需要在服务端配置为http_post_compatible),参数设置等内容参见http_simple,密切注意如果使用自定义http header,请务必填写boundary。

random_head(不建议使用):开始通讯前发送一个几乎为随机的数据包(目前末尾4字节为CRC32,会成为特征,以后会有改进版本),之后为原协议流。目标是让首个数据包根本不存在任何有效信息,让统计学习机制见鬼去吧。此插件可以兼容原协议(需要在服务端配置为random_head_compatible),比原协议多一次握手导致连接时间会长一些,除了握手过程之后没有冗余数据包,不支持自定义参数。

tls1.2_ticket_auth(强烈推荐):模拟TLS1.2在客户端有session ticket的情况下的握手连接。目前为完整模拟实现,经抓包软件测试完美伪装为TLS1.2。因为有ticket所以没有发送证书等复杂步骤,因而防火墙无法根据证书做判断。同时自带一定的抗重放攻击的能力,以及包长度混淆能力。如遇到重放攻击则会在服务端log里搜索到,可以通过grep "replay attack"搜索,可以用此插件发现你所在地区线路有没有针对TLS的干扰。防火墙对TLS比较无能为力,抗封锁能力应该会较其它插件强,但遇到的干扰也可能不少,不过协议本身会检查出任何干扰,遇到干扰便断开连接,避免长时间等待,让客户端或浏览器自行重连。此插件可以兼容原协议(需要在服务端配置为tls1.2_ticket_auth_compatible),比原协议多一次握手导致连接时间会长一些,使用C#客户端开启自动重连时比其它插件表现更好。客户端支持自定义参数,参数为SNI,即发送host名称的字段,此功能与TOR的meek插件十分相似,例如设置为cloudfront.net伪装为云服务器请求,可以使用逗号分割多个host如a.com,b.net,c.org,这时会随机使用。注意,错误设置此参数可能导致连接被断开甚至IP被封锁,如不清楚如何设置那么请留空。推荐自定义参数设置为cloudflare.comcloudfront.net。服务端暂不支持自定义参数。

协议定义插件

此类型的插件用于定义加密前的协议,通常用于长度混淆及增强安全性和隐蔽性,部分插件能兼容原协议。

origin:表示使用原始SS协议,此配置速度最快效率最高,适用于限制少或审查宽松的环境。否则不建议使用。

verify_deflate(不建议):对每一个包都进行deflate压缩,数据格式为:包长度(2字节)|压缩数据流|原数据流Adler-32,此格式省略了0x78,0x9C两字节的头部。另外,对于已经压缩过或加密过的数据将难以压缩(可能增加1~20字节),而对于未加密的html文本会有不错的压缩效果。因为压缩及解压缩较占CPU,不建议较多用户同时使用此混淆插件。此插件不能兼容原协议,千万不要添加_compatible的后缀。

verify_sha1(即原版OTA协议,已废弃):对每一个包都进行SHA-1校验,具体协议描述参阅One Time Auth,握手数据包增加10字节,其它数据包增加12字节。此插件能兼容原协议(需要在服务端配置为verify_sha1_compatible)。

auth_sha1(已废弃):对首个包进行SHA-1校验,同时会发送由客户端生成的随机客户端id(4byte)、连接id(4byte)、unix时间戳(4byte),之后的通讯使用Adler-32作为效验码。此插件提供了能抵抗一般的重放攻击的认证,默认同一端口最多支持64个客户端同时使用,可通过修改此值限制客户端数量,使用此插件的服务器与客户机的UTC时间差不能超过1小时,通常只需要客户机校对本地时间并正确设置时区就可以了。此插件与原协议握手延迟相同,能兼容原协议(需要在服务端配置为auth_sha1_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_sha1_v2(已废弃):与auth_sha1相似,去除时间验证,以避免部分设备由于时间导致无法连接的问题,增长客户端ID为8字节,使用较大的长度混淆。能兼容原协议(需要在服务端配置为auth_sha1_v2_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_sha1_v4(不建议):与auth_sha1对首个包进行SHA-1校验,同时会发送由客户端生成的随机客户端id(4byte)、连接id(4byte)、unix时间戳(4byte),之后的通讯使用Adler-32作为效验码,对包长度单独校验,以抵抗抓包重放检测,使用较大的长度混淆,使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可。能兼容原协议(需要在服务端配置为auth_sha1_v4_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_aes128_md5auth_aes128_sha1(均推荐):对首个包的认证部分进行使用Encrypt-then-MAC模式以真正免疫认证包的CCA攻击,预防各种探测和重防攻击,同时此协议支持单端口多用户,具体设置方法参见breakwa11的博客。使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可,针对UDP部分也有做简单的校验。此插件不能兼容原协议,支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_chain_a(强烈推荐):对首个包的认证部分进行使用Encrypt-then-MAC模式以真正免疫认证包的CCA攻击,预防各种探测和重防攻击,数据流自带RC4加密,同时此协议支持单端口多用户,不同用户之间无法解密数据,每次加密密钥均不相同,具体设置方法参见breakwa11的博客。使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可,针对UDP部分也有加密及长度混淆。使用此插件建议加密使用none。此插件不能兼容原协议,支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数,最小值支持直接设置为1,此插件能实时响应实际的客户端数量(你的客户端至少有一个连接没有断开才能保证你占用了一个客户端数,否则设置为1时其它客户端一连接别的就一定连不上)。

推荐使用auth_chain_a插件,在以上插件里混淆能力较高,而抗检测能力最高,即使多人使用也难以识别封锁。同时如果要发布公开代理,以上auth插件均可严格限制使用客户端数(要注意的是若为auth_sha1_v4_compatible,那么用户只要使用原协议就没有限制效果),而auth_chain_a协议的限制最为精确。

混淆特性

name RTT encode speed bandwith anti replay attack cheat QoS anti analysis
plain 0 100% 100% No 0 /
http_simple 0 20%/100% 20%/100% No 90 70
http_post 0 20%/100% 20%/100% No 100 70
random_head(X) 1 100% 85%/100% No 0 10
tls1.2_ticket_auth 1 98% 75%/95% Yes 100 90

说明:

  • 20%/100%表示首包为20%,其余为100%速度(或带宽),其它的 RTT 大于0的混淆,前面的表示在浏览普通网页的情况下平均有效利用带宽的估计值,后一个表示去除握手响应以后的值,适用于大文件下载时。
  • RTT 表示此混淆是否会产生附加的延迟,1个RTT表示通讯数据一次来回所需要的时间。
  • RTT 不为0且没有 anti replay attack 能力的混淆,不论协议是什么,都存在被主动探测的风险,即不建议使用random_head。 RTT 为0的,只要协议不是 origin,就没有被主动探测的风险。当然由于原协议本身也存在被主动探测的风险,在目前没有观察到主动探测行为的情况下,暂时不需要太担心。
  • cheat QoS 表示欺骗路由器 QoS 的能力,100表示能完美欺骗,0表示没有任何作用,50分左右表示较为严格的路由能识别出来。
  • anti analysis 表示抗协议分析能力,plain 的时候依赖于协议,其它的基于网友反馈而给出的分值。值为100表示完美伪装。

协议特性

假设 method = "aes-256-cfb"
以下所有协议与均 anti CPA

name RTT encode speed bandwidth anti CCA anti replay attack anti MITM detect anti packet length analysis
origin 0 100% 99% No No No 0
verify_deflate 0 30% 97%~110% No No No 6
verify_sha1 (X) 0 85% 98%/99% No No No 0
auth_sha1 (X) 0 95% 97% No Yes No 4
auth_sha1_v2 (X) 0 94% 80%/97% No Yes No 10
auth_sha1_v4 0 90% 85%/98% No Yes No 10
auth_aes128_md5 0 80% 70%/98% Yes Yes Yes 10
auth_aes128_sha1 0 70% 70%/98% Yes Yes Yes 10
auth_chain_a 0 70% 75%/98% Yes Yes Yes 15

说明:

  • 以上为浏览普通网页(非下载非看视频)的平均测试结果,浏览不同的网页会有不同的偏差
  • encode speed仅用于提供相对速度的参考,不同环境下代码执行速度不同
  • verify_deflate的bandwidth(有效带宽)上限110%仅为估值,若数据经过压缩或加密,那么压缩效果会很差
  • verify_sha1的bandwidth意为上传平均有效带宽98%,下载99%
  • auth_aes128_md5的bandwidth在浏览普通网页时较低(为了较强的长度混淆,但单个数据包尺寸会保持在 TCP MSS 以内,所以其实对网速影响很小),而看视频或下载时有效数据比率比auth_sha1要高,可达97%,所以不用担心下载时的速度。auth_chain_a及auth_aes128_md5类似
  • 如果同时使用了其它的混淆插件,会令bandwidth的值降低,具体由所使用的混淆插件及所浏览的网页共同决定
  • 对于抗包长度分析一列,满分为100,即0为完全无效果,5以下为效果轻微,具体分析方法可参阅方校长等人论文
  • 对于抗包时序分析一列,方校长的论文表示虽然可利用,但利用难度大(也即他们还没能达到实用级),目前对此也不做处理

混淆与协议配置建议

  • 协议推荐:协议用auth_chain_a最佳,此时推荐不使用加密(设置为none),混淆随意
  • 加密选择:若协议用auth_chain_a,那加密用none(但不代表密码可以不写或两边不匹配),若协议不是auth_aes128_md5或auth_aes128_sha1,那么不能使用rc4加密(可用rc4-md5)。这时加密可以在rc4-md5、salsa20、chacha20-ietf三个里面选择(rc4-md5可换为aes系列,salsa20可换为chacha20或bf-cfb),如果使用SSR还可特别选择rc4-md5-6。
  • 混淆推荐:如果QoS在你的地区明显,混淆建议在http_simple与tls1.2_ticket_auth中选择,具体选择可以通过自己的试验得出。如果选择混淆后反而变慢,那么混淆请选择plain。如果你不在乎QoS,但担心你的个人vps能不能持久使用,那么混淆选择plain或tls1.2_ticket_auth,协议选择auth_chain_a或auth_aes128_md5或auth_aes128_sha1
  • 如果你用于玩游戏,或对连接延迟有要求的情况下,建议不要使用tls1.2_ticket_auth混淆,用其它混淆或plain
  • 服务端里,http_simple与http_post是相互兼容的,没有使用上的区别
  • 如果你在公司,或学校,或某些环境下,发现原版SS协议不可用,建议你启用http_simple、http_post或tls1.2_ticket_auth混淆,同时端口相应使用80或443,通常能解决问题。同时能躲避你所在环境下的网络封锁(如禁止访问网盘禁止上传等等)
  • 如果使用tls1.2_ticket_auth混淆或不开启混淆,那么协议最好不要使用origin或verify_sha1
  • 如果使用二重代理,一般你只需要考虑越过防火墙的那一段使用混淆或加强协议,除非为了匿名

必看建议

此处参考神代綺凜的博客

SS

1.加密推荐使用 AEAD 加密,包括以下几个:

aes-128-gcm
aes-192-gcm
aes-256-gcm
chacha20-ietf-poly1305
xchacha20-ietf-poly1305

对于移动设备来说,ARM v8 以后的 CPU 使用aes-gcm的效率要高于chacha20,因此更推荐使用aes-256-gcm
2.混淆推荐使用plain,即不使用混淆插件,或者使用http_simple

SSR

1.加密推荐使用none
2.协议推荐使用chain_a
3.混淆推荐使用plain或者http_simple
能用plain没问题就用plain,当在plain情况下你察觉到网络有异样*,且你了解http_simple混淆参数的用途,再酌情使用http_simple

混淆为什么不选`tls`

前段时间我与其他人讨论的时候,就发现了一个共同点,那就是被Q的人大多数都使用了tls1.2_ticket_auth混淆;而一些混淆plain的人,即使还在使用老旧甚至过时的协议,却安然无恙
很有理由猜测 GFW 已经掌握了 tls 混淆的特征
让我更确信了我的猜测的是,后来询问我被Q相关问题的人,大多数都用的是搬瓦工后台自带酸酸乳,因为我从没有用过搬瓦工,我询问了他们后才知道,搬瓦工的酸酸乳是强制tls1.2_ticket_auth混淆,嗯,真不愧是 GFW 最佳合作伙伴(而且搬瓦工自带酸酸居然没有 AEAD 加密)
后来,推特上也有人指出

酸酸乳的tls凭据复用已经成为安全问题 不要用了

而且,就 tls 混淆原本的用途来说,tls 混淆只是为了突破部分地区的网络环境才有的 QoS 限制,一般情况下根本不需要使用
破娃酱也在文档里说的很明白,一切因使用混淆而产生的看似是网络加速了的效果都是因为绕过了限制,混淆实际上会减慢你的网络速度
并且,如果你并不明白http(s)协议的具体细节,没有这方面的计算机网络知识,那么也不要轻易使用http_simple之类的混淆;如果没有必要,也不要使用80443端口,这些在 GFW 眼里很可能会成为一种明显的特征

加密这块到底是怎么回事

简单的来说,我们若干年前使用的非 AEAD 加密,都存在被主动探测到的风险(这一块如果感兴趣想了解,可以自行谷歌 AEAD 加密的相关科普博文)

因此,如果是酸酸,强烈推荐使用之前提到的那5种 AEAD 加密,为了防止今后(可能的)来自 GFW 的主动探测(虽然实际上基本不会有这种可能)

而酸酸乳,虽然目前并没有使用到 AEAD 加密,但是破娃酱在设计协议的时候已经考虑到了主动探测问题并且针对这块进行了设计,因此目前来说还是相对安全的,前提是你使用的是chain_aauth_aes128_md5auth_aes128_sha1协议

对于酸酸乳,chain_a是目前最佳的协议;chain_b虽然说更难以被识别,但是仍是一个测试版协议,并且实际使用发现丢包现象莫名十分严重,并不能用;至于酸酸乳乳那些chain_c/d/e/f,可以看看这里

之前提到的推荐配置中,酸酸乳的加密为none的原因是,auth_chain系列协议已经自带了RC4加密,针对 UDP 部分也有加密及长度混淆,因此一般情况下不需要再进行额外的加密;如果你觉得RC4加密有安全隐患,再套一层其他加密也可

SS,SSR,VPN的区别

个人见解:首先VPN是原来老一代科学上网的必备工具,VPN的主要功能是保证数据的安全,重在加密,被国人当作科学上网工具,VPN对速度影响比较大,而且现在看来已经被封杀的得差不多了,不是很稳定,流量特征明显,很容易被检测出来,SS的话是Cloudwindy开发的自用专门科学上网的工具,后来开源,其诞生的目的就是科学上网,重在混淆流量,让被代理转发的流量不具有特征,好比越狱的罪犯换了身衣服混进了人群中,让警察根本发现不了,想找到也是大海捞针,以此达到科学上网的目的,当然其也带了加密的设置,后来作者被请喝茶,SSR是breakwa11破娃在SS基础上开发改进的,增加了更多混淆和加密算法和参数,是SS的升级版,我更倾向于SSR,因为更加安全,难以被发现,需要注意的是,加密和混淆不是越强越好,对网络速度有很大影响.破娃因为前期闭源,违法了什么开源协议,被人肉出来,之后SSR开源,并停止开发维护,虽然两三年过去了,但是SSR至今仍是最广泛的科学上网方式.更多他人简介和介绍请继续往下看.
摘自DeepOnion

Vpn与ss/ssr的区别

一、什么是vpn
vpn在很多人心目中就是用来翻墙的工具,其实不是。vpn最主要的功能,并不是用来翻墙,只是它可以达到翻墙的目的。vpn--虚拟专用网络,它的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网络和高校的网络中应用很广泛。你接入vpn,其实就是接入了一个专有网络,你的网络访问都从这个出口出去,你和vpn之间的通信是否加密,取决于你连接vpn的方式或者协议。
二、什么是ss/ssr
ss:ss作者是clowwindy,大约两年前,他自己为了翻墙写了shadowsocks,简称ss或者叫影梭,后来他觉得这个东西非常好用,速度快,而且不会被封锁,他就把源码共享在了github上,然后就火了,但是后来作者被请去喝茶,删了代码,并且保证不再参与维护更新。现在这个好像是一个国外的大兄弟在维护。
ssr:在ss作者被喝茶之后,github上出现了一个叫breakwa11(破娃)的帐号,声称ss容易被防火墙检测到,所以在混淆和协议方面做了改进,更加不容易被检测到,而且兼容ss,改进后的项目叫shadowsocks-R,简称ssr,然后ss用户和ssr用户自然分成了两个派别,互相撕逼,直到前阵子,破娃被人肉出来,无奈之下删除了ssr的代码,并且解散了所有相关群组。
ss和ssr它的原理都是一样的,就是socks5代理,。socks代理只是简单的传递数据包,而不必关心是何种协议,所以socks代理比其他应用层代理要快的多。socks5代理是把你的网络数据请求通过一条连接你和代理服务器之间的通道,由服务器转发到目的地,这个过程中你是没有通过一条专用通道的,只是数据包的发出,然后被代理服务器收到,整个过程并没有额外的处理。通俗的说,现在你有一个代理服务器在香港,比如你现在想要访问google,你的电脑发出请求,流量通过socks5连接发到你在香港的服务器上,然后再由你在香港的服务器去访问google,再把访问结果传回你的电脑,这样就实现了翻墙。
直连模式就是流量不走代理 ,PAC模式简单说就是国内地址不走代理,国外走代理,全局模式就是不管国内国外,所有流量通过代理服务器访问
三、vpn和ss/ssr的区别和优缺点
通过上面的介绍,其实基本已经能看出vpn和ss/ssr的区别了,那么他们到底孰优孰劣。
因为vpn是走的专用通道,它是用来给企业传输加密数据用的,所以vpn的流量特征很明显,以openvpn为例,更详细的在这里不说了,流量特征明显,防火墙直接分析你的流量,如果特征匹配,直接封掉。目前就翻墙来说,PPTP类型的vpn基本死的差不多了,L2TP大部分地区干扰严重很不稳定。
ss/ssr的目的就是用来翻墙的,而vpn的目的是用来加密企业数据的,对于vpn来说安全是第一位的,而对于ss/ssr来说穿透防火墙是第一位,抗干扰性强,而且对流量做了混淆,所有流量在通过防火墙的时候,基本上都被识别为普通流量,也就是说你翻墙了,但是政府是检测不到你在翻墙的。两者的出发点和着重点就不同,ss/ssr更注重流量的混淆加密。如果要安全匿名上网,可以用vpn+tor或者ss/ssr+tor。
而安全性方面还要补充的一点就是,国内vpn服务商,政府是很容易拿到他们的服务器日志的,如果他们真的这样做了,你翻墙做了什么,一览无余

参考逗比根据地:小白常见各种问题

参考科普:SSR和SS的区别

科普:SSR和SS的区别

SS简介

科普:SSR和SS的区别
SS的全称是shadow-socks,这是一款跨域网络加速的开源方案,一般来说我们了解的同类型产品就是了,但是随着长城的日渐升级已经逐渐无法满足大家的需求,因此早期有大神开发出了这款神器来满足无辜的吃瓜群众。
早期的软件其实是状态栏有个小飞机的图标,因此很多人将ss账号其称之为“机票”,但是现在基本上都直接用的接口,所以连接之后也只是显示的图标,也没之前那么明显。
优点
而ss的最大特点就是搭建简单,成本较低,只需要有台VPS即可畅快的使用了,而且流量也多,现在逐渐成为科学上网的主流方式之一。
但是ss的逐渐兴起也引发了相关的关注,原始作者被请去喝茶后便不再维护,github的代码也转向master分支,由其他的人进行维护,发展到现在已经是具有十分强大的生命力,无论是win,mac还是安卓linux,甚至在路由器都有相应的客户端软件,现在已经发展的十分巨大。
普及形势
而且由于ss-panel的开源使用,导致建立一个ss站点也不是那么困难,大量的商家涌入这个行业一度导致免费ss站点盛行,但是俗话说天下没有免费的午餐,大家都是一个套路,注册送5G然后签到送个几百M什么的,这样的站点到处都是。。。
但是就青梅个人的态度来说,免费的东西有他的优势,但是为了那么点流量每天累死累活的签到真的没有必要,现如今的站点基本上都很实惠了,低速高价基本上也活不过多久,当然如果你能找到大佬的免费站,那就好好珍惜吧,他们大都是玩玩而已,但是质量却能秒杀大部分收费站。
SSR详情

科普:SSR和SS的区别
至于SSR则是SS的一个发展分支,由@breakwa11 也就是推上人们所说的“破娃”来维护的。但SSR与SS有着巨大的分歧,这个却无法弥合。
事情起因是因为破娃使用了ss的开源代码,开发了ssr后却没有依据开源协议将ssr也开源,这引起了巨大的争议,但是也没有将其商业化,尽管一段时间后也将其开源,不过一些人认为破娃动机不纯从而不屑于使用ssr或者拒绝开发ssr的客户端。
不过破娃本人倒是积极开发新的功能比如混淆与协议,对于一些QOS限速的地区有着不错的效果,同时兼容原版的配置,也就是不断更新着win端的ss软件,这逐渐获得了大批的人的支持。
争议
但是同期的一件事情却引发了巨大的讨论,那就是免流。破娃本人设计的混淆理论上是为了将上网流量伪装为正常的流量比如百度搜索等等,但是一些人却发现商机将其伪装为通信运营商的免费流量,比如说移动营业厅等等。尽管这项技术自古就有并不是ssr的首创,但是ssr的使用更加方便也导致了大量商家的采用。
这也让一些不明真相的群众认为混淆就是拿来免流的,这也加剧了原版党对于SSR党的误解,但是像破娃的一些大佬却是坚决打击这类行为,基本上不允许在大群讨论这些话题,同时由于运营商自身的大力整顿,ssr免流也逐渐失效,但是还是有很多人一听到ssr就认为是免流的代名词。
发展
尽管sspanel不支持ssr的协议与混淆,但是另一位大佬开发的全新面板却集合了众多的功能,同时他也是SSR的推动者之一,这也导致了在SS站点这一块基本上大家都同时支持原版与SSR,用户有着自由选择的权利。
SS与SSR的优劣科普:SSR和SS的区别其实这个并没有什么硬性的要求,你觉得哪个好用就用哪个呗,没必要搞得像宗教一样大喊着“XX大法好”,个人觉得SSR相对来说要好一点,支持的特性更多,加密强度也高,目前还有不少朋友用SSR做免流。


版权声明:本文为原创文章,版权归Joe所有,转载请注明出处.

本文链接:https://www.j000e.com/linux/setupssr.html
知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

Last modification:January 17th, 2020 at 08:14 pm
If you think my article is useful to you, please feel free to appreciate