Yima

剑未佩妥,出门已是江湖;酒尚余温,入口不识乾坤。

0%

yt不良林自搭VPS科学上网教程

视频链接

没有GFW时访问国外网站的步骤

DNS域名解析

首先先查询本地DNS缓存,然后是本地DNS配置文件,也就是hosts文件。

查询不到会向设置的DNS服务器发送访问包。

封装和解封装

封装

应用层产生一个有特殊目的的数据包

传输层有TCP和UDP协议,同时,会给数据包封装上源端口号和目的端口号。

网络层封装上源IP地址,目的IP地址。

数据链路层封装上源MAC地址,目的MAC地址

物理层通过网卡将数据包传输到其它设备。

解封装

多少层的设备就能够解封装到第几层,比如交换机,是一个两层设备,那么就可以读到mac地址头,路由是一个三层设备,(加了NAT功能的路由器有读到端口的功能,因为要建立NAT映射表),就可以读到IP地址层。

image-20230717181701936

GFW如何阻断我们和谷歌的连接

要想如何突破GFW的封锁,首先就是要知道GFW的工作原理,实际上,就是要学会如何做一个GFW。这个和世间所有的道理是相似的,你想行正义之事,那么首先的就是知道如何去做坏事;你想找到一个女朋友,那么首先就该想到的是,如何可以永远找不到一个女朋友。想知道怎么成功,首先就是要去知道怎么失败。这就是我认为的逆向思维。

DNS污染


不让你查到正确的域名IP。

image-20230717183120232

DNS污染的话,就使用修改host的方式避免进行DNS查询请求

TCP重置攻击


GFW冒充目标服务器,向我们发送一个拒绝连接的回应。这是因为http的话数据包是可以直接看到内容,可以看到你在寻求与目标服务器做一个连接,而这个目标服务器就在GFW的黑名单之上,所以就会进行一个冒充操作。而你根本不知道这是防火墙伪造给你的一个数据包。

image-20230717183706257

而SS的存在就是对数据包进行一个加密,来混淆进出GFW的流量,和在国外的一个VPS进行连接但如今GFW已经可以进行一个主动探测(重放攻击,用我的数据包再发送一次,叫做探测包,AEAD加密可以拦截这个攻击,因为可以认证了对方的身份,也就是有防重放攻击。),也就是可以知道linux到底有没有在运行ss服务。image-20230717185643151

购买VPS服务器


就像在淘宝上购物一样。比较大型的VPS商家有

Google cloud,amazon web services,Microsoft Azure ,甲骨文,

阿里云,腾讯云,刚开始学习不用使用那么贵的,使用vultr,线路比较烂,不适合用来当作主力,但是无限的IP提供。

使用plugin


由于运行的服务能被探测,可以使用plugin功能对数据流量进行伪装,伪装成http,websocket流量,寄希望于防火墙认为这个数据包是http时数据包时,不会往服务器发送探测包。

image-20230717191322332

SSR节点就是类似加了插件的ss节点。

SSR有混淆参数和协议参数(用于用户认证),已经逐渐被淘汰了。image-20230717191421327

使用shadowshock才有插件的功能,然后在v2ray上面开一个socks代理

image-20230717192653302

image-20230717192706681

image-20230717192545536

搭建ss是很简单的捏,如果是全部加密的无规则字节流,经过GFW时会被怀疑,就会被GFW发送探测包,但是如果你加入一个http头,让GFW能看懂,但是不知道你发这个是上什么网页(?是这样吗,我先这样理解),搭建裸奔的ss节点是不再推荐了,下节课讲用插件伪装成https

image-20230717193253725

TLS让ss流量变成https流量


image-20230717194233946

trojan天生就是用来将数据伪装成https流量来达到科学上网的目的。

image-20230717193933263

TLS原理


image-20230717195351719

必须先有证书。非对称加密算法

image-20230717201022927

服务器向CA机构申请认证域名和对应的公钥(私钥自己留着),然后我这边要使用https时,首先要先和服务器建立一个tls连接,服务器同意tls连接和发送证书给我。

然后双方根据公钥和私钥协商出一个对称加密的密钥对http数据内容进行加密。

sni:网址image-20230717201409354

image-20230717201422885

Trojan原理


模仿https的流量。

image-20230717201512136

image-20230717201621962

为什么trojan服务器要进行不属于trojan流量的跳转返回呢?因为防止防火墙的主动探测(发一个https的连接请求,但是trojan服务器能够识别不是来自该来的地方,所以会将一个无害的网址返回给服务器以欺骗服务器),将一个无害的网站数据返回。image-20230717214929949

部署


首先买一个VPS服务是不用说都要的了.

然后是在服务器上安装trojan-go服务:

image-20230717220334040

image-20230717220451146

linux编译,然后添加config文件,然后申请证书

使用ACME工具申请证书

image-20230717220521863

软链接的意思跟windows下快捷方式差不多

image-20230717220616148

image-20230717220638070

注册好,然后开放80端口,独立模式下acme会在80端口创建一个本地服务器。这个web服务器是由acme脚本自动完成的

image-20230717220911311

image-20230717220808723

在服务器上可以看到有token的出现,CA过来访问完之后,就会把服务器关掉。

image-20230717221007903

CA机构太忙了,使用命令切换其它的CA颁发机构。默认zerossl。image-20230717221222736

acme会给服务器发送一个token,若服务器

安装好证书即可,以下安装成功。image-20230717221422770

客户端


image-20230717221535091

image-20230717221653625

记得开服务器的防火墙

然后用真连接测试

伪装

服务器直接访问的话,会出现下面这个页面:

image-20230717221852084

image-20230717221817513

没有域名的话:服务器地址改成IP地址

自己做CA,自己给自己签,这种证书叫做自签证书。

image-20230717222151084

image-20230717222642547

给bing.com签一个证书,sni那里就要写bing.com

image-20230717222743507

image-20230717222618560

跳过证书验证,或者是添加到电脑的受信任颁发机构里面去.

image-20230717223009633

image-20230717223051887

让trojan可以后台运行

内容重定向到log那里,打印一些日志文件

image-20230717223327030

image-20230717223444201

纵观所有翻墙协议,最终都走向将流量伪装成正常的https才能最稳定的进行科学上网。最推荐的就是trojan。缺点是效率较低,需要两层TLS。有一个革命性的概念和技术。

image-20230717223936896

image-20230717224021160

Vmess协议

加密方式为何可以搞自动选择?

原因无他,乃是因为客户端将加密数据内容段的算法和密钥写在了报文头上。并据此对内容进行一个加密。image-20230718173722740

接着,Vmess会使用用户ID,用一种和服务器商量好的方式加密数据头,也就是所使用的算法和解密密钥。

为何和系统时间有关?

然后还会在头部加入一个认证信息image-20230718174127365

认证信息跟系统时间有关。

时间戳跟时区无关,从某一个时间一直加1,我们和美国取得的时间戳是一样的。image-20230718174252983

原因乃是因为vmess协议加密会使用到时间戳进行一个签名,范围在当前时间的上下30浮动。

服务器端也会根据当前可能的所有时间戳和用户ID用MD5来计算得到一串数字和客户端发来的一串数字做对比,若是相同,则能够确认身份。才会接受这些数据包,也就是说数据包是合法的。

确定是合法的,才会去掉认证头部,然后用用户ID用固定方式解密的到加密方式和密钥对数据包进行解密。

用户ID两端设置一样才能加解密。

额外ID应对短时间发送大量请求,会出现数据包重复,被GFW探测到。用户ID的可选越多,就会越难探测到。

存在漏洞,被重放攻击,实际上已经被淘汰。

引入AEAD加密方式。

image-20230718175728865

现在已经是强制开启AEAD

ss要确定加密协议,为什么这个不用?

搭建


image-20230718175847976

使用一键脚本安装

修改配置文件

image-20230718180836104

引入TLS保证传输安全:Vmess+TLS

证书申请和握手协商流程

加密方式选择ZERO乃是因为TLS会加密,这里就不使用vmess的加密方式了。

image-20230718181256160

none会进行消息认证,zero啥也不会做

Vmess协议头任何时候都会用AEAD进行加密

image-20230718181434872

TLS会对整个Vmess报文进行加密

将Vmess变成Vmess+TCP+TLS是V2Ray的功能

Vmess+ws+tls也是v2ray的功能。

承载和伪装的区别

应用层的协议要不就是TCP要不就是UDP来承载,比如说Vmess、TLS、HTTP到TCP。image-20230718182040361

当传输安全改成TLS之后,也就是需要伪装的时候,承载关系就会发生变化,TLS会承载VMESS数据包(实际上也就是将VMESS数据包放在TLS的内容部分),这是用TLS将VMESS伪装起来,再用TCP承载TLS的数据包

HTTP变成HTTPS

image-20230718182342983

http->TLS->TCP->IP

配置成Vmess+ws+tls

WS是基于TCP的。为什么要加ws呢

VMESS->WS->TLS->TCP

伪装

给vmess包加上一些头,伪装成http,但是不是用http来承载。

搭建web网站来伪装

目标:WS+TLS+VMESS

为什么要使用WS?

WS可以套一个路径在头部,可以配合nginx,到达伪装效果,没有这个路径的流量直接重定向到一个正常的网站,而有这个路径的流量定向到服务器段的VMESS代理。

image-20230718205206529

image-20230718205251512

重定向,也是一些镜像站的搭建方式,只有访问那个指定的目录,才会重定向错误,所以只要保证目录不被人知道的话,就能够保证伪装的成功。

image-20230718205326699

Vmess的地位:稳定,很多服务商针对这个做了很多定制,生态支持最好,自己搭建的话,可以使用更高效的选择,追求极致的性能体验。

下节课教Vless。

通过web服务器来接受不是vmess的流量,并对其进行分流进行伪装。

Vless

image-20230719180637373

image-20230719180711842

XTLS

image-20230719180811944

使用X-Ray

Vless+xtls+回落(意思就是转发)


image-20230719182028138

两层回落

image-20230719190234756

回落的功能就是复用同一个端口,搭建不同的节点,实现流量的转发。

image-20230719190241729

为什么XTLS容易被精准识别?

XTLS不重复加密数据内容,数据内容部分可能是使用TLS1.2进行加密,而XTLS是使用TLS1.3对头部数据进行加密,这种不重复加密提高了效率,但是也会造成TLS1.3的数据包中含有TLS1.2的特征,让防火墙容易识别。image-20230719191908479

考虑到服务器端的处理:

我们访问的网站有可能是使用TLS1.2(大部分)进行加密的,也就是发回来的数据包中,有可能有TLS1.2的流量特征。

配置


image-20230719193619952

你的节点为什么这么慢?


直连

自治系统全互联

image-20230719194814556

BGP边界网关协议

image-20230719194915092

image-20230719195022440

阿里云也是一步一步发展起来的。

自己建了一个自治系统。

海底光缆是最重要的物理基础

IXP:互联网交换中心:性能贼强的交换机

连到交换机实现互联

image-20230719201524733

出口节点带宽是有限的。

回程走不走CN2很重要,也就是联通的优质网络,服务于有钱人的网络。

image-20230719202326810

image-20230719202403033

中转

image-20230719202938211

测试

如何不花钱提高节点速度


image-20230719204043941

vless+ws+tls+web+cdn节点组合搭建


X-UI图形界面,配置配置文件。

image-20230719204826486

内容分布网络(CDN)

image-20230719205437207

缓存内容,内容分发,网络加速。

CDN为什么是一个减速器?

  • 国内要用CDN域名一定要备案,实名制。只能去套国外链路,跟直接代理没什么区别。

  • 我们现在套的CDN都是免费的,CF家的CDN的IP段已经被CFW重点关照。

套CF的CDN可以改变路由情况,左上那个是CF的CDN的话

image-20230719210735650

拓扑图image-20230719210758666

CDN扮演一个中转的角色,但是只有http数据才会接受,这就是为什么要使用ws方式包装一下数据包。也可以用来破下墙,隐藏被墙的服务器。这就是用来预防被墙。这也叫做反向代理(不太明白)。

切换CDN服务器

image-20230719211522900

引出优选IP:选出最好的CDN的IP地址

image-20230719211543733

image-20230719211905076

image-20230719211958563

image-20230719212007607

image-20230719211258568

BBR拥塞控制算法


image-20230719214358011

比基于丢包的算法带宽高

image-20230719214450235

由谷歌研发的。

额外的工作


为了能够使用一款能够批量下载youtube视频的工具,不但支持了乌克兰,还被迫安装了.net的一个环境。

image-20230717170249263

image-20230717170148514

成功安装,不得不说,国内这些盗取github上面开源的码然后制作app牟利的行为令人不齿,不就是赚的一个墙的信息差和钱吗,果然,那句话哪里有法律,哪里就意味着有钱赚。。。

此程序Github地址

image-20230717170635671

成功下载中image-20230717171241931

或许未来可以做一期视频,关于如何利用github寻找你需要的工具。

因为github实在是一个宝库,有很多简单的功能实现之后,你就不用去寻找那些臃肿的APP来下载了。