前言

服务端系统是CentOS 6/7 (建议用CentOS6)

具体调试,需要一点Linux基础,还有计算机网络知识。

免流包含参数指导。

资源来源于百度。

什么是免流漏洞?

三大运营商流量计费检测系统漏洞,有些客户会对此漏洞加以利用从而使用远远超出其套餐的流量,倘若漏洞扩大,会使运营商损失过大。

通俗地讲,就是将手机正常的上网的数据伪装成是使用运营商免流量服务的数据,从而欺骗运营商的流量计费系统,实现免流。

为什么会有免流漏洞?

运营商为了给客户提供方便,提供了一些优惠政策,如:接收彩信、登陆掌厅免除流量费以及免收取流量费的其他业务。
一些用户通过Squid+OpenVPN自身的HTTP代理自定义服务器http请求头信息为运营商网站,当系统检测到请求头属于访问运营商网站的数据,用户即可达到免费上网的目的。

运营商的计费系统为了区分用户使用的是免流量业务还是正常访问互联网会把这些免流服务的网址加入到白名单,这些白名单中的网址就是我们平常所说的免流IP了,当计费系统检测到用户访问的是白名单中的网址或接收彩信时就不会进行扣费。

问题就出在检测上了,各运营商、各地区的检测方式都不尽相同,而且并不完善,这就形成了免流的出现和不同的免流模式以及地区的限制。

那么计费系统是如何检测的呢?当用户访问互联网时,会向服务器发送一条请求信息(请求头),这个请求头中包含了网络服务器与用户的所有交互信息如:访问的网址、UA、网络协议、主机(host)、Cookie、来源地址、文件类型等很多信息。计费系统通过检测请求头来分辨用户访问的是不是白名单中的网址或者是接收彩信。但是计费系统检测的是用户发来的请求信息,这条信息是来自于用户的,也就是说通过自定义该信息可以达到欺骗计费检测以达到免流上网的目的.

漏洞种类

最开始的漏洞有两种:

一种是用户登陆运营商官网免流,利用这个免流漏洞,用脚本去伪造http请求头信息欺骗运营商现在进的网站是运营商的网站,达到免流效果。

一种是利用彩信联网下载彩信内容免流,利用这个漏洞,配置手机浏览器的代理服务器,模拟成彩信的代理端口,来欺骗运营商现在是在下载彩信,达到免流效果。

还有一种活的时间时间不太长的漏洞:类似于短信刷钻漏洞一样,针对早间运营商短信系统,扣费系统机制的不完善,通过短信欺骗开通大流量包,低价开通高价流量包,或者免费开通高价流量包。

漏洞经常的被和谐,新的漏洞不断的又被暴露。

发展到现在,漏洞基本都是针对运营商对某款APP,某个网站免流,然后去模拟欺骗运营商访问的网站是免流网站。

这一块技术发展的倒是蛮快的从开始诺基亚py脚本,到安卓搭建本地免流代理服务器,再到用服务器搭建VPN服务器,手机代理服务器,设置免流脚本达到商业化。

VPN免流时代,已经很商业化、工业化了,有专业的VPN免流搭建方案提供商,完整的流量计费系统,用户系统,APP源码…,购买方案后,即可自行搭建免流VPN服务器,再生成APP,提供给用户,收取用户费用。

免流软件的发行商搭建简单,维护简单,用户使用同样简单。两者都不需要进行繁杂的配置,就可达到想要的效果。

目前常见免流方法

早期各种躲避运营商流量计费的方法是传统的“免流”。

各大运营商也不是待宰的羔羊,也会通过技术手段进行过滤和屏蔽,这样就导致了极大一部分传统的“免流”技术只是在某些情况下可以使用,比如QQ微信聊天可以,但是优酷视频就不行。

然后现在又有了一种新的“免流”技术,称之为“云免流”。听起来很高大上,其实原理很简单。

以OpenVPN为例:

各大运营商为了方便用户进行流量查询、缴费等操作,设置了当用户浏览一部分运营商自己的网站时不需要耗费流量,而各大运营商识别用户访问的网址是否为这部分网址时,出现了问题,导致识别错误,主要是这个X-Online-Host字段上的问题。
当用户通过OpenVPN免流时,在你的VPS和移动设备之间打通一个隧道,你的所有网络请求都先经过OpenVPN传给VPS,然后VPS把你请求的东西拿到之后又通过OpenVPN传回来。免流的关键就在于,每次利用OpenVPN发起网络请求之前,都要对请求头进行伪装,加上X-Online-Host字段,让运营商认为你请求的是运营商自己的免流量网站。

PS:客户端真正的访问地址是一个HTTP代理,由HTTP代理连接vpn,x-online-host只是连接http代理的http协议头中增加的一个字段,只是用于欺骗计费系统。

Open具体实现方法:在VPS上搭建OpenVPN实现移动联通电信三网免流

其他相关解释:

1、修改HTTP连接header:
这里需要了解运营商如何分辨手机走的流量是否为免流流量,目前采用的多是检查HTTP header,查看是否是指定的Host、UA等,具体免流方法为将手机流量中,每一个HTTP请求中,均加入能够免流的Host、UA、或者其他一些免流参数即可.

2、指定端口免流:
这个是比较早期的免流方法,目前在大多数地区均不可用,原理为使用ss、vpn等工具,通过指定的端口,如137/138/139等端口,即可免流.

本文使用的是SSR免流!!!

免流方式

菊花点穴手:
一些手机软件大神直接修改软件的请求信息,最早的就是菊花大神了。他编写了一个java的网络请求类(http.class),它负责发送能欺骗计费系统的网络请求头。菊花在请求头中把请求的网址(host)换成了免流的网址‘host:免流IP’,并在该信息后面添加了一条另一种表示网址的信息‘x-online-host:实际网址’。这样计费系统会检测到用户访问的是免流网址,但是网络服务器返回给用户的却是实际网址的网页,这是因为计费系统和网络服务器的不一致导致的。
菊花把http.class放到UC浏览器中,然后通过修改代码调用它,从此世界上就诞生了一个伟大的软件——菊花UC,后来人们把http.class提取出来,放到其他软件中并修改代码,这样其他Java软件也能免流了。安卓软件免流与这个类似。到2013年,运营商调整计费系统当出现这种情况时以x-online-host为准,从此世界上第一次出现了‘菊花和谐’这个词。

老虎会游泳:
老虎是一个PHP程序员,他用PHP开发了一个免流代理服务器系统,后来被别人修改并命名为XX免流系统。
PHP无法直接在安卓手机上运行,安装almp或anmpp后会把手机配置成一个PHP网站服务器。免流系统运行在网站的根目录(www文件夹)中,通过修改anmpp设置将网站接收的所有请求传给Proxy.php,这样就实现了把网站服务器变成代理服务器。这个代理服务器的IP就是127.0.0.1。我把它称之为本地代理。
通过修改APN把10.0.0.172改成127.0.0.1即可使数据走免流系统。但有些程序并不会去走这个代理,所以就出现了我们常说的跳点。
当用户通过本地代理上网时,用户发送的请求头会发给免流系统,免流系统接收到请求头后调用设置好的模式进行修改,之后再由免流系统把修改后的请求头发送给网络服务器达到免流上网的目的,俗称全局免流。

其他:
可以直接修改安卓系统,让安卓系统去修改网络请求信息。为什么老虎不这么做呢?因为他只会PHP。目前还没有民间的开发者能做得到。可能是未来免流的发展方向。

各免流模式的欺骗原理

菊花模式:
已和谐,这个的原理在上面讲过了,我这里想说的是在老虎开发的免流系统中,菊花模式的php文件后来被一些人修改成了好多种模式并以他网名来命名这种模式。

川免模式:
已和谐,在四川移动掌厅有一个免流下载的链接前缀,系统将请求头中的网址前面加上这个免流前缀实现免流量的目的,这种模式是前缀模式的一种,后来被修改成了华纳模式、错导模式等。

前缀免流比菊花免流出现的早,最初是用来免流下载。之后小毅(也是PHP程序员)的玖玩浏览器(压流网站)开创了通过前缀免流上网的时代。玖玩网是比较早的讨论免流的论坛了,现在听一个站长说已经被他网站合并了。现在玖玩浏览器扔然有人在用。

后缀模式:
已和谐,这个应该是联通的模式,某些地区的联通计费系统只要在请求的网址中检测到了wap.10010.com就认定为免流,所以免流系统在请求的网址后面加了个?wap.10010.com或&wap.10010.com达到免流目的。

伪彩模式:
上文中讲过的,接收彩信是不花流量的,计费系统是通过判断请求头中的文件类型信息来判断彩信的,免流系统把文件类型信息改成application/vnd.wap.mms-message,这就把所有流量都伪装成了彩信,所以会免流。

双H模式:
我现在用的模式,这种模式和菊花类似,只是把菊花模式的x-online-host换成了host,即两个host。

其他

防跳原理

禁网:
安全软件利用安卓系统内置的防火墙模块实现禁止应用连接互联网,因为跳点是不经过本地代理的,所以会连不上网。不跳点的软件是通过本地代理进行联网的,免流系统是运行于root之上,所以不会被禁网,这样免流的软件在禁网之后仍可以连接网络。

防跳脚本:
防跳脚本也是利用防火墙模块,所以会与禁网有冲突,不过防跳脚本不是单纯的禁网,它实现了智能化的防跳,脚本包含了设置防火墙的命令,它可以强制让不走本地代理的软件走代理即127.0.0.1,并且仍可以起到禁网的效果,对于那些免流系统不支持的协议如QQ,则可以进行排除以让其能够联网,实现半免。

WiFi托电脑免流

当全局免流的手机共享出WiFi热点,电脑连接后会与手机组成无线局域网,这时手机和电脑都会被分配一个局域网的IP,以192.168开头,手机的IP是192.168.43.1,因为手机被配置成了免流代理服务器,所以在电脑上设置代理为192.168.43.1就能走免流了,但必须开启手机防跳脚本或禁止电脑某些不走代理的软件联网,否则电脑也会跳点,手机禁网是没用的。


What is the SSR ?

讲SSR之前必须要了解一下SS。

Shadowsocks/SS: 作者是clowwindy,大约四年前,他自己为了翻墙,写了Shadowsocks,简称SS或者叫影梭。

他觉得这个东西非常好用,速度快,而且不会被封锁,就把源码共享在了github上。

后来被大伙儿所熟识和普遍应用,但听说火了之后作者被请去喝茶,删了代码,并且保证不再参与维护更新。现在好像是一个国外的大兄弟在维护。

dalao喝茶

ShadowsocksR/SSR: 在SS作者被喝茶之后,github上出现了一个叫breakwa11(破娃酱)的帐号,声称SS不够隐秘,容易被防火墙检测到。

所以在混淆和协议方面做了改进,更加不容易被防火墙检测到,而且兼容SS,改进后的项目叫Shadowsocks-R,简称SSR。

后来SS用户和SSR用户自然分成了两个派别,直到前阵子,破娃被人肉出来后无奈删除SSR的代码,并且解散了所有相关群组。

目前已经停止开发,客户端由志愿者维护。

其实SS和SSR它的原理都是一样的,就是socks5代理。socks代理只是简单的传递数据包,而不必关心是何种协议,所以socks代理比其他应用层代理要快的多。socks5代理是把你的网络数据请求通过一条连接你和代理服务器之间的通道,由服务器转发到目的地,这个过程中你是没有通过一条专用通道的,只是数据包的发出,然后被代理服务器收到,整个过程并没有额外的处理。通俗的说,现在你有一个代理服务器在香港,比如你现在想要访问google,你的电脑发出请求,流量通过socks5连接发到你在香港的服务器上,然后再由你在香港的服务器去访问google,再把访问结果传回你的电脑,这样就实现了翻墙。

why use the SSR ?

SSR免流和OPENVPN免流一样,都属于云免,都要用服务器搭建。

不同的是SSR免流暂时没有成熟的流控,所以不适用于商业化,适合自用,相对于OPENVPN免流来说更简单。

而且由于协议的不同,SSR相对OPENVPN更省电、速度更快、不会被墙,缺点是混淆模式较单一,免流效果不如OPENVPN。

SSR服务端搭建

脚本下载:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

复制上面的代码到VPS服务器里,按回车键,脚本会自动安装,以后只需要运行这个快捷命令就可以出现下图的界面进行设置,快捷管理命令为:bash ssr.sh

按” 1 “回车,进行安装服务端。
如果输入1后不能进入下一步,那么请重新连接vps服务器,然后输入快捷管理命令bash ssr.sh再尝试。

根据上图提示,依次输入自己想设置的端口和密码 (密码建议用复杂点的字母组合,端口号为40-65535之间的数字),回车键用于确认。

注:关于端口的设置,总的网络总端口有6万多个,理论上可以任意设置。
但是有的地区需要设置特殊的端口才有效,一些特殊的端口比如80、143、443、1433、3306、3389、8080。

常见的免流端口有移动(8080,80)电信(8080,80)联通(8080,80,53(空中卡),130,131,132,155,156,185,186,145,176)

53端口是DNS端口,适合空中卡使用,正常卡用会扣流量,就算你填写了可免的混淆参数也是会扣流量的。
所以,正常卡就不要用53端口,不管你是用SSR免流,还是其它形式的云免,都要记住,53端口只能空中卡用。

137和138端口是UDP端口,也是中国移动的直连免流端口。
只要是你使用的137/138端口代理会直接免流,不需要免流host。这是只是部分地区移动卡可免,具体情况自测。
137/138端口在联通网络中是无法联网的,所以,137/138端口的SSR不合适联通卡使用,电信卡任意。

加密方式 选10 回车确认,接下来是选择协议插件。

选择并确认后,会出现上图的界面,提示你是否选择兼容原版,这里的原版指的是SS客户端(SS客户端没有协议和混淆的选项),可以根据需求进行选择,演示选择y

之后进行混淆插件的设置。 能用plain没问题就用plain,当在plain情况下你察觉到网络有异样,且你了解http_simple混淆参数的用途,再酌情使用http_simple。

注意:如果协议是origin,那么混淆也必须是plain;如果协议不是origin,那么混淆可以是任意的。有的地区需要把混淆设置成plain才好用。因为混淆不总是有效果,要看各地区的策略,有时候不混淆(plain)让其看起来像随机数据更好。(特别注意:tls 1.2_ticket_auth容易受到干扰!请选择除tls开头以外的其它混淆!!!)

进行混淆插件的设置后,会依次提示你对设备数、单线程限速和端口总限速进行设置,默认值是不进行限制,个人使用的话,选择默认即可,即直接敲回车键。

注意:关于限制设备数,这个协议必须是非原版且不兼容原版才有效,也就是必须使用SSR协议的情况下,才有效!

之后代码就正式自动部署了,到下图所示的位置,提示你下载文件,输入:y

根据上图就可以看到自己设置的SSR账号信息,包括IP、端口、密码、加密方式、协议插件、混淆插件,这些信息需要填入你的SSR客户端。如果之后想修改账号信息,直接输入快捷管理命令:bash ssr.sh 进入管理界面,选择相应的数字来进行一键修改。

此脚本是开机自动启动,部署一次即可。最后可以重启服务器确保部署生效(一般情况不重启也可以)。重启需要在命令栏里输入reboot ,输入命令后稍微等待一会服务器就会自动重启,一般重启过程需要2~5分钟,重启直接重连即可。

SSR 常用命令

启动:/etc/init.d/shadowsocks start

停止:/etc/init.d/shadowsocks stop

重启:/etc/init.d/shadowsocks restart

状态:/etc/init.d/shadowsocks status

总结:

加密方式(method)选择aes-256-cfb;混淆方式(obfs)选择http_simple;协议(protocol)选择auth_sha1_v4。

bash ssr.sh 进入管理界面。

混淆与协议配置

协议定义与混淆插件含义

资料来源于ShadowsocksR 协议插件文档

里面包含配置建议,该有的都有,不看你可能看不懂下面讲的。

以下部位为个人作业。建议直接去看开发者文档。

混淆插件

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

  • plain:表示不混淆,直接使用协议加密后的结果发送数据包。
  • http_simple:并非完全按照http1.1标准实现,仅仅做了一个头部的GET请求和一个简单的回应,之后依然为原协议流。
  • http_post:与http_simple绝大部分相同,区别是使用POST方式发送数据,符合http规范,欺骗性更好,但只有POST请求这种行为容易被统计分析出异常。
  • random_head(不建议使用):开始通讯前发送一个几乎为随机的数据包,目标是让首个数据包根本不存在任何有效信息。
  • tls1.2_ticket_auth(强烈推荐):模拟TLS1.2在客户端有session ticket的情况下的握手连接。目前为完整模拟实现,经抓包软件测试完美伪装为TLS1.2。

协议定义插件

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

  • origin:表示使用原始SS协议,此配置速度最快效率最高,适用于限制少或审查宽松的环境。否则不建议使用。
  • verify_deflate(不建议):对每一个包都进行deflate压缩,数据格式为:包长度(2字节)|压缩数据流|原数据流Adler-32,此格式省略了0x78,0x9C两字节的头部。
  • auth_sha1(已废弃) auth_sha1_v2(已废弃)
  • auth_sha1_v4(不建议):与auth_sha1对首个包进行SHA-1校验,同时会发送由客户端生成的随机客户端id(4byte)、连接id(4byte)、unix时间戳(4byte),之后的通讯使用Adler-32作为效验码,对包长度单独校验,以抵抗抓包重放检测,使用较大的长度混淆,使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可。能兼容原协议(需要在服务端配置为auth_sha1_v4_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。
  • auth_chain_a(推荐):对首个包的认证部分进行使用Encrypt-then-MAC模式以真正免疫认证包的CCA攻击,预防各种探测和重防攻击,数据流自带RC4加密,同时此协议支持单端口多用户,不同用户之间无法解密数据,每次加密密钥均不相同

混淆与协议配置建议

最初设计混淆的时候只是想着伪装为看起来像正常的流量,减少被注意到的可能性而已,但实际上流量混淆衍生出了不少的黑科技用法。

软件和协议运营商检测到的类型显示地址
SStcp 业务显示服务器 ip
ss + http_simple(80端口)上网(web 方式 get)显示混淆域名
ssrtcp 业务显示服务器 ip
ssr + http_simple上网(web 方式 get)显示混淆域名
ssr + tls(443)安全类网页浏览(https vpn)流量 https 链接显示混淆域名
ssr + tls(非443)网络连接(网页)https 链接显示混淆域名
ipsec vpnudp 业务显示服务器 ip
v2raytcp 业务显示服务器 ip
v2ray + tlshttps 网络连接显示证书域名
nghttpx + tlshttps 网络连接显示证书域名
kcptunudp 业务显示服务器 ip

关于混淆的选择

混淆参数可根据你的设定,伪装为对任意host的访问,但破娃酱不建议填写此参数,但建议服务端节点带有域名及正确的解析,这样不需要填写参数,客户端将直接使用节点的域名作为参数。

因为运营商已经在少数地区布置了dns验证系统『有可能是故意针对ssr』,如果发出的 http/tls 请求里的域名解析出的ip地址列表,与所连接的实际ip不一致,多次请求后就可能会把此ip加入临时黑名单。所以,如果节点有域名,那么参数不写其实是最好的,很多人都习惯写一个大公司网站的域名,其实这反而留下了一个可被检测的地方。

虽然不建议加参数,但各地区情况不一样,大部分情况下加了参数速度更快,用的更长久,其应用主要包括以下几类:

  1. 遇到运营商qos,使用混淆能提速。
  2. 所在网络有严格限制,仅能使用 80 或 443 端口,不认识的协议根本不能用的(如学校、公司、政府办公网络)。
  3. 对自己的隐私有要求的,希望在运营商的连接记录里留下看起来正常的访问记录。
  4. 试图绕过学校或运营商的计费系统,即免流『该部分应用较普遍,配合抓包大法可以爽歪歪』。
  5. 其它黑科技用途

http_simple

xinhuaapp-img.img.aliyuncs.com

混淆含义:审查方将看到你正用ios 10.2.1的微信内置浏览器,在浏览某个来自国内某『和谐的』新闻客户端的多媒体内容,且该内容已cdn到国外

mmbiz.qpic.cn#user-agent: mozilla/5.0 (linux; android 5.0.1; samsung gt-i9502 build/lrx22c) applewebkit/537.36 (khtml, like gecko) samsungbrowser/2.1 chrome/34.0.1847.76 mobile safari/537.36naccept: /nconnection: keep-alive

混淆含义:审查方将看到你正用s4的默认浏览器在浏览微信的多媒体内容,且该内容已cdn到国外

tls1.2_ticket_auth

这个协议对应的参数就简单了,填自己希望伪装的网址,如:

www.icloud.com,img.alicdn.com,apps.bdimg.com

多个域名之间用英文 , 区隔,客户端会随机选择一个进行混淆伪装。

混淆常用Host

国外域名混淆

因为节点均为非大陆ip,所以合理性来说用国外混淆才是最好的伪装

1 tse1.mm.bing.net
2 cloudfront.com
3 cloudflare.com
4 itunes.apple.com
5 www.icloud.com
6 ajax.microsoft.com
7 apps.bdimg.com
8 www.bing.com

国内域名混淆

平常访问以下站点那个多就用那个,或定期更换。

部分地区运营商会取消部分免流host,具体哪个免流host适用你当地使用要自己测试。

1 static.youku.com  #优酷
2 static.hdslb.com #b站
3 item.taobao.com #淘宝
4 m.10010.com #联通
5 uac.10010.com #联通
6 wap.10086.cn #移动
7 dl.music.189.cn #电信
8 cdn.4g.play.cn #电信

移动和谐的比较多,联通、电信由于各种免流业务存在,SSR免流比移动容易N倍。

免流混淆参数获取

需要注意的是,不通的互联网套餐卡的免流参数不一样,并且可能会变。

也就是说,你要有免流卡才能抓到免流参数。(免流参数可以买,渠道自己找。)

抓包软件有两个,一个是wi.cap,一个是packet capture,但是wi.cap需要root,要求较高,所以只介绍不用root也不用框架的packet capture。

packet capture抓包教程

  1. 首先安装packet capture

  2. 关闭所有联网软件,打开手机流量(net和wap都可以试下)

  3. 打开packet capture

  4. 点击上方绿色三角形按钮

  5. 打开要抓包的软件(免流量软件,比如掌厅、咪咕、沃TV等),这里要根据你的套餐的免流机制来选择,例如测试卡为阿里鱼卡,优酷免流量,则选择优酷视频来抓取免流混淆参数。
    打开优酷,随便选择一个视频打开看10分钟(注意这里必须要用手机流量而不是WiFi)

  6. 返回packet capture可以看到多了很多抓包记录,点击右上角停止抓包,在每一条抓包记录(TCP记录)中找到免流混淆参数。

  7. 其中,免流混淆参数就是Host对应的字样的信息。

注意:不是每一条TCP都有Host,只有Host后面的才是免流混淆参数,并且优先尝试这种有软件名称的混淆参数,例如:youku.com。

根据你的SSR服务器的信息填好基本信息后,可以在SSR客户端中设置免流参数,例如:palylog.youku.com,记得还要将路由改成全局。

免流测试记得关闭网络,开关几次飞行模式,然后再用数据上网。

记住,SSR软件一定要保留在后台运行,不然会扣流量。

混淆的正确写法

大部分情况下用最简单的写法,即一个host,就可以了。

但有时候配合User-Agent和Accept等信息会有奇效,尤其是现在越来越多的定向卡需要验证手机(卡)信息的情况下。

要想达到像tiny那样可以被运营商系统逐行识别的效果,必须这样写:

  1. 灰色版SSR混淆写法(即1\r\n2\r\n3)

    mmsc.monternet.com\r\n
    Accept: */*, application/vnd.wap.mms-message, application/vnd.wap.sic\r\n
    Content-Type: application/vnd.wap.mms-message\r\n
    User-Agent: Android-Mms/2.0\nmmsc.monternet.com
  2. 粉色版SSR混淆写法(即1#2\n3):

    mmsc.monternet.com#
    Accept: */*, application/vnd.wap.mms-message, application/vnd.wap.sic\n
    Content-Type: application/vnd.wap.mms-message\n
    User-Agent: Android-Mms/2.0\nmmsc.monternet.com

抓到混淆参数,打开SSR软件填到混淆参数的输入框中,让SSR软件保留在后台。

百度输入“ip”回车,如果显示的是你的服务器IP即证明配置成功。


SS配置

加密请使用 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
混淆请使用plain,或者使用http_simple

SSR配置

加密请使用none
协议请使用chain_a
混淆请使用plain或者http_simple

混淆问题:为什么不用tls

国外的VPS不太建议使用tls1.2_ticket_auth混淆(即便协议插件文档强里烈建议使用tls混淆),这样可能会被墙。
PS:大部分被墙的都是用了tls混淆,猜测GFW可能已经掌握了tls混淆的特征。

而且 tls 混淆原本的用途只是为了突破部分地区的网络环境才有的 QoS 限制,一般情况下根本不需要使用。
破娃酱也在文档里说的很明白,一切因使用混淆而产生的看似是网络加速了的效果都是因为绕过了限制,混淆实际上会减慢你的网络速度。

加密问题:为什么用none

如果是在N年前,你用非 AEAD 加密,都存在被主动探测到的风险,但SSR里破娃酱在设计协议的时候已经考虑到了主动探测问题并且针对这块进行了设计。
因此目前来说还是相对安全的,前提是你使用的是chain_a或auth_aes128_md5或auth_aes128_sha1协议。

就目前来说chain_a是目前最佳的协议。

auth_chain系列协议已经自带了RC4加密,针对 UDP 部分也有加密及长度混淆,因此一般情况下是不需要再进行额外的加密。
如果你觉得RC4加密有安全隐患,可以再套一层其他加密。


常见问题解决方案——参考

  • 用了一段时间后发现SSR账号用不了了。

这种情况一般是国外的VPS才会发生,先ping以下IP,ping不通就是被墙了,这种情况一般SSH也连不上,解决方法就是重新部署一个新的服务器。
PS:一般的vps服务商可能会提供免费更换1次ip的服务。

  • 刚搭建好的SSR账号,IP能ping通,但是还是用不了。

首选排除杀毒软件的干扰,尤其是国产杀毒软件,比如360安全卫生、360杀毒软件、腾讯管家、金山卫生等。
这些东西很容易干扰翻墙上网,如果你的电脑安装了这样的东西,建议至少翻墙时别用,最好卸载。
其次,检查下SSR信息是否填写正确。浏览器的代理方式是否是ssr代理,即(HTTP)127.0.0.1和1080。
如果以上条件都排除,还是用不了,那么可以更换端口、加密方式、协议、混淆,或者更换服务器位置。
另外,如果你的vps服务器配置的是SSR账号,即有协议和混淆且没有兼容原版(SS版),那么你必须使用SSSR客户端来使用账号,因为SS客户端没有填写协议和混淆的选项。

有的地区需要把混淆参数设置成plain才好用。因为混淆不总是有效果,要看各地区的策略,有时候不混淆(plain)让其看起来像随机数据更好。

  • 电脑能用但手机用不了。

如果你的手机用的是SS客户端,SS客户端没有填协议和混淆的地方,如果你部署的协议和混淆的时候没有选择兼容原版(SS版),因此手机是用不了的。这个时候你把协议弄成兼容原版、混淆也设置成兼容原版即可。或者直接将协议设置成origin且混淆设置成plain。

  • SSR账号连不上。

vps的服务器操作系统不要用的太高,太高可能会因为系统的防火墙问题导致搭建的SSR账号连不上,如果你用的centos系统,建议用centos6。

如果你跟我用的操作系统一样是CentOS 7,建议你关掉防火墙。
顺带提一句,如果你是阿里云用户,先去安全组放行端口。

  • 关于流量计算

VPS流量计算分为单向和双向,单向流量计算对于用户来说更实惠。
因为在vps服务器上部署SSR服务端后,SSR服务端就相当于中转,比如我们看一个视频,必然会产生流量。
假设消耗流量80M,那么VPS服务器会产生上传80M和下载80M流量,如果是单向计算,只需要80M流量,如果是双向计算流量,那么会计算为160M流量。

国内的,像阿里云是单向计费,其他的服务商不清楚。

国外的VPS服务商,比如vultr服务商提供的vps服务器是单向流量计算,而且vultr服务器每月有流量限制,超过限制后服务器不会被停止运行,但是超出的流量会被额外收费。

北美和西欧地区的服务器超出流量后,多出的部分收费为0.01美元/G。新加坡和日本东京(日本)为0.025美元/G,悉尼(澳大利亚)为0.05美元/G。把vultr服务器删掉,开通新的服务器,流量会从0开始重新计算。

如果要退款,直接在后台点击support,选择open ticket新开一个工单,选择billing question财务问题,简单的在文本框输入你的退款理由。
比如:Please refund all the balance in my account。工单提交以后一般很快就可以给你确认退款,若干个工作日后就会退回你的支付方式。(全额退款结束后,账号可能会被删除)
如果英语水平不好,还是想和客服进行交流,可以用百度在线翻译,自动中文转英文和英文转中文。

  • 账号使用相关

如果你想把搭建的账号给多人使用,不用额外设置端口,因为一个账号就可以多人使用。

如果想实现支持每个用户(端口)不同的加密方式/协议/混淆等,并且管理流量使用,可以参考多用户配置脚本:

wget -N --no-check-certificate https://softs.fun/Bash/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh 

备用脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssrmu.sh && chmod +x ssrmu.sh && bash ssrmu.sh

安装后管理命令为:bash ssrmu.sh
注意:这个多用户配置脚本和教程内容的脚本无法共存!要想用这个脚本,把之前的脚本卸载,输入管理命令bash ssr.sh ,选择3,卸载ShadowsocksR即可卸载原脚本。

  • 其他需求

路由器也可以配置ss/ssr账号,详见百度。

电脑想用搭建的ss/ssr账号玩游戏,即实现类似VPN全局代理,可以用SSTAP,详见百度。

SSR加速方案

加速方案推荐BBR加速。参考自锐速与BBR的原理简单解析

简略的说就是,锐速可能会加大流量消耗,而BBR相对来说绿色环保。

方案一:锐速加速(仅支持KVM,Xen,vmare架构)

锐速对内核要求严格,要想在自己的VPS安装锐速,首先内核必须要匹配锐速版本。如果内核不支持安装锐速,请先更换内核。

因为Centos 7小问题比较多,锐速针对centos 7的版版本较少,肯定要降级使用。
个人推荐在CentOS 6中安装,但是这里提供的版本比较老。
所以想要新版本的自己去查锐速支持列表,下载对应的内核版本就行了。

更换内核

Centos6 ×64(逐步运行):

rpm -ivh http://wget.ca/Kernel/kernel-firmware-2.6.32-504.3.3.el6.noarch.rpm

rpm -ivh http://wget.ca/Kernel/kernel-2.6.32-504.3.3.el6.x86_64.rpm –force

reboot

uname -r(如出现2.6.32-504.3.3.el6即证明更换内核成功)

Centos7 ×64(逐步运行):

rpm -ivh http://wget.ca/Kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm –force

reboot

uname -r(如出现3.10.0-229.1.2.el7.x86_64即证明更换内核成功)

安装锐速

(centos6 64位)

wget http://wget.ca/Sh/Serverspeeder/rscentos&&sh rscentos

(centos7 64位)

wget http://wget.ca/Sh/Serverspeeder/rscentos7&&sh rscentos7

锐速常用命令

启动:/serverspeeder/bin/serverSpeeder.sh start

停止:/serverspeeder/bin/serverSpeeder.sh stop

状态:service serverSpeeder status

检查是否有appex0模块:lsmod

方案二:BBR加速(仅支持KVM,Xen,vmare架构,且不可与锐速共存)

BBR是Google开源的一套内核加速算法,相对于锐速,BBR优化的更多的是TCP的丢包。

个别服务商的VPS安装BBR可能会卡。

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh

chmod +x bbr.sh

./bbr.sh

装完后需要重启系统,输入y即可立即重启服务器,如果输入y提示command not found ,接着输入reboot来重启服务器,确保加速生效,bbr加速脚本是开机自动启动,装一次就可以了。

服务器重启成功并重新连接服务器后,输入命令lsmod | grep bbr ,如果出现tcp_bbr字样表示bbr已安装并启动成功。

或者输入sysctl net.ipv4.tcp_available_congestion_control,如果返回值为:net.ipv4.tcp_available_congestion_control = bbr cubic reno 只要后面有bbr,则表示启动成功。

其余方案

(具体方法,自行百度or谷歌。)

  1. NetSpeed(支持KVM、OVZ)
  2. KCPTun
  3. FinalSpeed(仅支持电脑,不支持手机)

参考文章

详解全局免流原理(转载)
靠手机软件免流是真的吗?什么原理?
2019最新ssr免流必备抓包方法及混淆写法
正确的翻墙姿势-SS&SSR
SSR混淆及混淆协议参数的设置