本文转载于不良林博客。
视频教程
youtube播放地址:https://youtu.be/FT-O4Xd9gTw
专线机场推荐:https://b.880805.xyz
GIA线路VPS推荐:https://bwg.880805.xyz
相关链接
fastly:https://www.fastly.com
fastly前置域:https://fofa.info/result?qbase64=Y2xvdWRfbmFtZT0iZmFzdGx5Ig%3D%3D
VCL脚本:
gcore:https://www.gcore.com
gcore前置域:
gcore.com
speedtest.gcore.com
hk2-speedtest.tools.gcore.com
la2-speedtest.tools.gcore.com
jp1-speedtest.tools.gcore.com
kal-speedtest.tools.gcore.com
kx-speedtest.tools.gcore.com
lgs-speedtest.tools.gcore.com
min4-speedtest.tools.gcore.com
ny2-speedtest.tools.gcore.com
pa5-speedtest.tools.gcore.com
pl1-speedtest.tools.gcore.com
sg1-speedtest.tools.gcore.com
sp3-speedtest.tools.gcore.com
sy4-speedtest.tools.gcore.com
teg-speedtest.tools.gcore.com
ww-speedtest.tools.gcore.com
搭配CDN优选工具
最佳的CDN节点优选IP工具:https://bulianglin.com/archives/cdn.html
nodesCatch节点测速工具:https://bulianglin.com/archives/nodescatch.html
视频文稿(忽略)
上期视频给大家介绍了v2ray新出的meek协议,通过域前置可以实现节点永不被墙,也讲解了域前置的原理,感兴趣的朋友可以回看,虽然meek可以套用任意cdn ,但代价是必须传输标准的http数据,而http必须先由客户端发起请求,服务端才能推送数据,这种半双工的传输方式效率很低,速度有限,只能当作应急备用方案,无法作为日常科学上网使用,而今天要讲的websocket就不一样了,通过在HTTP协议头部插入Upgrade字段升级成websocket协议,一旦升级完成,WebSocket就会接管连接,然后就没HTTP啥事了,虽说是通过http升级来的,但他们是两个完全不同的协议,WebSocket并不是基于http,而是基于tcp,基于tcp的WebSocket可以实现全双工的双向通信,对比基于http的半双工meek,ws的传输效率和速度都会有很大的提升
接下来简单介绍一下ws的通信过程,如果你对这部分内容不感兴趣,可以直接点击时间轴跳转到搭建部分
以这个vmess+ws配置为例,假设我们已经套好了cdn,当我们通过浏览器访问谷歌的时候,由于配置了代理,浏览器会将请求发送到本机的v2ray客户端,v2ray拿到请求后,根据配置,将数据封装成vmess的格式,默认情况下vmess会对数据进行aes加密,并且由于底层传输方式为ws,v2ray会先发起一个http请求,内容是请求升级为ws协议,数据来到cdn服务器,如果cdn支持转发websocket,那么这条请求将会转发给host域名对应的ip地址,也就是你的vps,你的vps收到数据后,会回复一个101响应,表示协议升级成功,接下来就能使用websocket的帧格式发送数据了,你的vmess数据会封装在ws帧中,cdn会将数据转交给你的节点,节点收到数据后会一层层解封装,拿到客户端的意图,然后帮你访问对应的网站,这就是ws的基本通信过程,此时你会发现一个问题,v2ray必须先发起一个http请求将其升级为ws,并且需要等待服务器的回复,然后才能开始发送vmess数据,这样的话ws对比裸tcp就多了一个rtt的延迟,所以ws节点对比tcp要稍微慢一点,但是tcp没法套cdn,总之各有各的优势,
另外xray的ws可以实现0rtt,当你在ws路径后面加上?ed=2048的时候,客户端在发送http升级ws的请求中,会加入一个sec-websocket-protocol的子协议字段,里面会放入应该在升级之后才会开始发送的数据,也就是说在请求升级ws阶段就携带了vmess数据,从而实现0rtt,但并不是所有客户端都支持这种方式,总之在不清楚是否支持的情况下,你可以在路径后面加入?ed=2048,支持的话就会实现0rtt,不支持的话也不会报错
最后再说一下v2ray近期更新的httpUpgrade的传输协议,它主要就是升级成ws协议,但是里面不传输ws的帧格式,首先升级ws的步骤还是一样的,服务器会回复一个101响应表示升级成功,但接下来就不太一样了,在这条已经建立好的连接中传输的直接就是vmess数据,并不会再封装成ws帧,对于客户端和服务器而言都会减轻一点压力,提升性能,但cdn可能不会接受非标准的ws帧数据,感兴趣的朋友可以自行测试 ,另外httpUpgrade也有升级ws这个步骤,所以cdn也必须要支持转发websocket才行,而websocket并不是所有cdn都支持,这也是meek还能存在的原因,本期主要演示比较成熟的ws传输协议
接下来就是纯搭建步骤,为了让操作看上去很简单,所以不会讲解任何原理,如果其中有涉及到不太理解的部分,可以在我的频道搜索cdn,相关的原理都能在过去的视频中找到答案,看完应该就能理解了。
首先你需要一个ws的节点,vmess或者vless都可以,建议使用vmess,因为vless在没套tls的时候发送的是明文数据,这个以前讲过,如果你不知道怎么搭建vmess+ws的节点,可以回看这期视频
我使用的端口是18880,将节点导入到v2rayN中,先来测试一下真链接延迟,有延迟说明可以正常使用,接下来就可以套用域前置cdn了,先以上期介绍过的fastly为例,相关网址链接我会放在视频下方的说明栏,注册非常简单,只需要邮箱即可,如果你和我一样出现错误的提示信息,需要换个节点再重新尝试注册,接着就会收到激活邮件,然后登陆即可,跟着视频演示创建cdn,在这里随便填写一个域名,为了加深大家的印象,我填入woshiwoshiyansebuyiyangdeyanhuo.com,点击添加,接着填写这个域名对应的ip,也就是填入我们节点的ip地址,默认情况下是使用80端口回源,点击这里进行修改,在这里输入我们节点的端口,也就是18880,点击更新,接着来到websocket这里,他家的ws回源并不是免费的,只能试用一个月,不过他家的注册很简单,你甚至可以使用临时邮箱,点击试用,接着开启服务,光启动了服务还没用,还需要添加一段vcl脚本,跟着视频演示创建一个vcl片段,名称写ws,复制这段内容,粘贴到这里,点击创建,最后点击右上角的部署,这样fastly的配置就算是完成了,需要等个一两分钟才会生效,接下来给节点套上fastly的cdn,伪装域名这里填写我们刚才设置的woshiwoshiyansebuyiyangdeyanhuo.com,地址这里填写fastly家的ip,或者挂在fastly上的域名,按照上期讲过的方法随便找一个,端口改成80,测试真链接,无法正常使用,这个方式找到的域名并不是百分之百可以使用,可能已经过期了,你可以多换几个试试,我这里就直接输入英国政府的官网,这个网站挂在fastly上,有延迟说明可以正常使用,这样我们就成功的实现了域前置cdn,域名不是我们的,ip也不是我们的,从中间人的角度来看,你是通过fastly的cdn访问woshiwoshiyansebuyiyangdeyanhuo.com这个网站,这样就能做到你vps的IP绝对不会被墙,但这还不是域前置的完全体,完全体需要套tls,复制一个节点出来,将端口改成443,开启tls,sni同样填写gov.uk,点击确定,尝试测真链接,同样可以正常使用,使用这个节点进行科学上网,从中间人的角度来看,你就是在访问gov.uk这个网站,连你自定义的域名都隐藏了,当你还在偷别人证书的时候,域前置已经在用别人的证书了。
接着再来演示gcore,注册同样很简单,只需要一个邮箱即可,进入你邮箱中收到的激活链接,会自动登陆到gcore,点击这里将语言调整为中文,接着创建cdn,选择免费计划,免费计划每个月有1tb流量,账单地址随便输入,激活服务需要几分钟,耐心等待一下,自动跳转到这个页面后,点击创建cdn资源,随便输入一个域名,为了加深大家的印象,我就输入的和fastly一样,点击确认,点击添加dns记录,在ipv4地址这里填入你节点的ip地址,点击确认,他这里虽然要求我们修改域名的ns记录,但我实测发现,即使不改也可以正常使用,所以gcore也是不会验证域名所有者的,再次点击确认,打开资源设置,点击编辑此组,取消勾选使用默认端口,在这里输入你的节点端口,我的是18880,保存更改,这样gcore也配置好了,接着我们再来配置套用gcore的节点,先复制一个原始节点出来,地址改成gcore.com,端口改成80,伪装域名填写刚才设置的woshiwoshiyansebuyiyangdeyanhuo.com,点击确定,测试真链接,无法链接,因为他家的生效时间有点长,可能需要等待10-20分钟才会生效,所以需要耐心等待一下,经过漫长的等待,目前终于是通了,从中间人的角度来看,我是通过gcore的cdn访问woshiwoshiyansebuyiyangdeyanhuo.com这个网站,复制一个出来,同样的可以给他套上tls,实现完全体域前置,将端口改成443,他家的域前置有限制,并不是所有挂在他家的网站都能拿来当前置域,只能用他们的域名,我这里收集了一些子域名,随便选择一个,当然你也可以直接用gcore.com这个主域,但不建议这么做,将地址替换掉,开启tls,sni同样输入这个域名,这样我们的节点就套上了tls了,使用这个节点进行科学上网,从中间人的角度来看,你就是在访问这个jp1的网站,
套了cdn之后,你还可以进行优选ip,搭配我之前的工具可以进行快速优选,复制fastly的节点,粘贴到这里,cdn提供商选择fastly,这个工具的详细使用教程可以回看我之前的视频,点击提取节点,下方会提取出1000个他家ip的节点,再配合我之前做的全自动测速软件使用,点击这里下载,下载解压之后打开主程序,将刚才生成的1000个节点复制粘贴到工具列表,也可以同时复制gcore套了tls的节点,cdn提供商选择gcore,点击提取,同样复制到工具列表中,建议改成xray内核,这个软件的详细使用教程也可以回看之前的内容,点击一件自动测速,软件会自动进行真链接延迟测试,然后会自动进行下载速度测试,这样就可以获取到一批速度还不错的优选ip节点了,并且每个节点都是套了域前置的,不用担心你的vps被墙