AI 摘要

对于网络代理解决方案,Reality成为了备受关注的焦点。它被称为目前最安全的传输加密方案,可实现数倍甚至十几倍的性能提升。与Shadowtls类似,但又有显著区别,Reality并不是一种协议,而是通过tls库魔改而来的传输层加密。对于代理行为与访问目标网站相似,其服务端对外表现为端口转发,要求满足的最低要求包括支持TLSv1.3与H2的国外网站,并非跳转用域名。选取终点站时,IP相近且延迟低、Server Hello后的握手消息加密以及有OCSP Stapling等因素都是加分项。需注意国内cdn节点、域名跳转及Cloudflare的CDN等情况。此外,Reality在设计上注重安全等级,限制人的可控范围,降低人为因素的影响,避免客户端测的渗透。

前言

从ShadowSock到VMESS再到VLESS,各路高手层出不穷,八仙过海各显神通,最近Reality在各种流行的网络代理解决方案中脱颖而出,Reality的各种问题被炒很火,正好我也好久没有更新文章了,不妨顺便记录一下我对reality的理解。

Reality工作机制简述

Reality 是目前最安全的传输加密方案, 启用 Reality 并且配置合适的 XTLS Vision 流控模式, 可以 达到数倍甚至十几倍的性能提升。
Reality和Shadowtls有一点类似,但又有很大的区别,Reality本身并不是一种协议,而是由tls库魔改过来的传输层加密,拥有前向安全等高级安全特性,部署了Reality的服务端对外表现为端口转发,即 dest 指向的网站的某个反向代理节点。因此,Reality服务端始终是双向转发流量,同时在符合一些条件时才会对 Client Hello 进行验证,验证成功才会自己处理,除此之外的任何流量,Reality都会是转发给 dest 指向的网站。所以当我们使用Reality进行代理时的行为特征与在访问 dest 指向的目标网站相同(当然是正确配置Reality的条件下)相当于访问目标网站的一个反向代理节点。

DEST 选取


如何选取想要的终点(dest)呢?看起来很复杂,实际上,dest 配置只需要满足以下3点最低要求即可:

·国外网站,且支持 TLSv1.3 与 H2
·域名非跳转用(主域名可能被用于跳转到 www)
满足以上三点要求的网站域名,就可以作为Reality的 dest ,当然还有一些加分项:

·IP 相近(更像,且延迟低)
·Server Hello 后的握手消息一起加密
·有 OCSP Stapling

dest选取辅助工具:
可以使用 Reality - TLS - Scanner 来进行扫描,扫描结果会实时显示,如显示出支持TLSV1.3/H2,则该网站可以作为dest终点站。
通常,我们只需要找一些VPS所在IDC区域中运营或者与VPS地理位置接近的网站,可以使用DNS反查查询你VPS的IP段查找VPS所在域运行(曾经运行)的网站

需要注意的一点是,在选取国外网站时,一定要先检查该网站在国内有无cdn节点。

如果这个网站在国内有CDN,并且你将它作为Reality的 dest ,当你正常访问这个网站时,应该连接的是国内CDN的节点IP,然而实际上却连接着国外的IP(你VPS的IP),这显然不正常

如果这个网站设置了域名跳转,最好使用最后跳转的域名,域名跳转是不会用到过多流量的,如果一个用于跳转的域名出现了大量流量交互,是很明显不正常的情况,容易引起注意并被查封。

最好还要检查一下这个网站是否套用了Cloudflare的CDN(防止流量偷跑,具体等会说)

比如,之前有很多人将 dl.google.com,www.microsoft.com作为reality的dest,导致被封锁。

当然最好将 dest 指向自己搭建的网站,指向他人搭建的网站可能会导致很多问题(下面会讲到)

Reality优势

·在设计上就把安全等级拉满,限制人的可控范围,最大程度降低人为因素的影响
·默认采用客户端不可信的设计理念,仅信任服务端,避免客户端测的渗透
·服务端对客户端是有选择的,比如拒绝版本过低的 Xray-core 连接,防止过时的客户端实现不当害了服务端,比如指纹过时以后服务端还可以带信息给客户端,告知客户端有新版了/告知客户端版本过低,要求更新,否则多长时间后不再支持。
·我们可以看到,Reality解决了服务端TLS指纹的问题,完美消除了服务端特征,如果我们在使用reality的同时配置 utls 和xtls-rprx-vision流控可以做到近乎完美的代理行为,reality解决了服务端指纹的问题,utls解决了客户端指纹的问题,xtls-rprx-vision流控解决了 TLS嵌套(即TLS IN TLS)这几乎是是集当下许多代理协议的长处,又避免了它们本身的不足。可以说是目前的最优解。

一些局限性

上文我们提到了最好不要选择套有Cloudflare CDN网站的域名作为 Reality dest ,因为Reality服务端表现为端口转发,其他人可能将你的Reality节点作为一个免费的中转机,但我并不认为这是一个什么大问题,毕竟很多大网站都用的是Cloudflare CDN 的商业套餐,我们反代的是商业段的CDN节点,偷跑我们的流量的人的free套餐用不了。而且我们可以使用nginx等软件进行SNI分流,防止流量偷跑。

综合来看,Reality + xtls-rprx-vision + utls 已经是目前代理协议的最优解了,但是并不代表着它可以完美隐藏代理行为,通过钓鱼,大数据统计等办法,比如在 dest 指向一些大网站时,如果该ip确实是这些大网站的一个节点,那么访问量应该很多,而且访问的源ip应该来自全国各地,并且不会有太明显的时序特征,比如晚上睡觉时间还会有来自全国各地的许多访问,而不是少量IP大流量访问,如果是用于代理,那么源ip通常只有国内固定地区的某些ip,且访问量相对于正常的域名来说应当很低,通过各种统计总结出的行为特征是不能通过技术消除的,在拥有自建网站的情况下,建议将反代的Reality指向自己的网站,以提高真实性。

所以,需要明确的是,世界上没有完美的事物,很多宣称完美的东西,也只不过是相对而言,一旦将观察的层级提高,观察的范围拓宽,可能原本完美的事物也会变得漏洞百出,所以,在技术的更替中,我们始终需要心存敬畏,摒弃盲目自信,无知和弱小不是生存的障碍,傲慢才是。

Reality状态

目前基本平稳,但可能被降速抽查,详见Issue:Reality可能导致对单个IP的严重限速

站长在此
最后更新于 2024-01-14