跳到正文
不翻车专注 VPN 软件评测

AnyTLS 是什么?比 VLESS 好在哪,"TLS 套 TLS"一次讲清

不翻车编辑部 · 更新于

AnyTLS 科普封面:节点里多了个 AnyTLS,它是什么

先说结论:AnyTLS 是 2025 年 2 月才出现的代理协议,只盯着一个问题:“TLS 套 TLS”容易被认出来。它的办法是把连接开头那几个包,按一张“填充表”切碎、填充,这张表还能由服务器随时换。它不会让线路变快,支持它的客户端也没有 VLESS 多。下面的内容都来自 AnyTLS 官方仓库(anytls/anytls-go)的说明、协议文档和常见问题,以及 sing-box、mihomo 文档,核对日期 2026 年 10 月 11 日。

这篇有视频版:YouTube 上看《节点里多了个AnyTLS?它到底在防什么》。

先认识 TLS

浏览器地址栏那把小锁就是 TLS:网页内容加密后再传。很多代理协议,比如 Trojan、VLESS + TLS,也是把你的数据包在一层 TLS 里送到服务器,从外面看像在访问一个普通的加密网站。

什么是“TLS 套 TLS”

你打开的网站本身也是 https。这时候,代理的 TLS 里面,又装着一层你和网站之间的 TLS,这就叫 TLS 套 TLS(TLS in TLS)。

内层那一层在握手(双方打招呼、交换密钥)的几个来回,包的长度和先后顺序很有规律。外层加密藏得住内容,藏不住长度和时机。外面的人只看包有多长、什么时候到,就有可能猜出:这条连接里面正在进行一次 TLS 握手。

AnyTLS 的 GitHub 首页第一句话就写着:一个试图缓解“嵌套的 TLS 握手指纹”问题的代理协议。注意,说的是缓解,不是解决。

AnyTLS GitHub 首页:一个试图缓解嵌套的 TLS 握手指纹(TLS in TLS)问题的代理协议

AnyTLS 干三件事

1. 按填充表重新安排开头几个包的长度

协议文档里有一张默认填充表:

  • stop=8:只管前 8 个包。
  • 第 0 个包是认证,后面固定加 30 字节填充。
  • 第 2 个包通常就是你内层 TLS 的第一个握手包(ClientHello),会被拆成最多 5 段,每段 400 到 1000 字节随机。

原本长度很有规律的几个包,从外面看变成一串长短不一的包;数据不够长,就用无用的填充数据(cmdWaste)补齐。

AnyTLS 协议文档里的默认填充表:stop=8,0=30-30,2=400-500,c,500-1000…

2. 服务器能随时下发新表

客户端每次连上,会把自己手里这张表的校验值(padding-md5)报给服务器;服务器发现不一样,就下发一张新表,下一次连接就按新表来。

AnyTLS 协议文档:服务器收到的 padding-md5 和自己不同时,发送 cmdUpdatePaddingScheme

作者在常见问题里写得很直白:项目无法确保默认参数不会被墙,所以设计了更新参数、改变流量特征的机制。

AnyTLS 常见问题:本项目无法确保默认参数不会被墙,因此设计了更新参数改变流量特征的机制

3. 连接复用

打开一个网页往往要同时发很多个请求。AnyTLS 让这些请求共用一条已经握好手的 TLS 连接,少握手,延迟低一些;闲置的连接过一段时间会被关掉。

AnyTLS 协议文档:客户端必须实现会话层复用功能,TCP Proxy -> Stream -> Session -> TLS -> TCP

作者自己写的弱点

AnyTLS 难得的地方,是作者在常见问题里专门写了一节“已知弱点”。挑几条:

  • TLS 套 TLS 本身需要的握手来回,比普通网页(h2)请求多。
  • 只处理了上行(你发出去的)包,没有处理下行流量。
  • 连接一开始几乎同时发出三个以上的包,到达时间仍可能被拿来做统计。
  • 不是 HTTP 服务器,仍可能存在主动探测问题。

作者的判断是,这些弱点目前不一定会引发被墙,但修复会导致协议不兼容,所以第一版没有处理。

AnyTLS 常见问题里的“已知弱点”一节

和 VLESS Vision 有什么不同

同一个问题,VLESS 的 Vision 是另一种做法:先把内层握手那几个短包填长,之后的数据原样转发(原理见VLESS Reality 是什么)。AnyTLS 用一张能随时更换的填充表,打乱开头几个包。两个方向不一样,谁更难被认出要看实际的封锁规则,没有官方的对比数据。

哪些软件能用

  • sing-box:v1.12.0 起,服务端和客户端都支持。
  • mihomo(Clash Verge 这类软件用的内核):支持服务端和客户端。
  • 苹果:小火箭(Shadowrocket)v2.2.65 以上;Stash、Loon 已跟进。

AnyTLS README 的第三方兼容软件:sing-box、mihomo、Shadowrocket 2.2.65+、Stash、Loon

sing-box 文档:AnyTLS 出站,自 sing-box 1.12.0 起

要注意:mihomo 文档写明不支持 AnyTLS + Reality 的组合,以后也不会支持。想用 Reality,就继续用 VLESS。

mihomo 文档:Mihomo 不支持 AnyTLS+Reality 的组合(未来也不会支持)

会更快吗

不会。作者在常见问题里说:速度和线路质量有关,请不要拿它跟 Hysteria 这类 UDP/QUIC 协议比,它们的拥塞控制和运营商的限速策略都不一样。AnyTLS 走的是 TCP,线路本身慢,换它也不会变快。

AnyTLS 常见问题:请勿与 Hysteria 这类 udp/quic 协议做对比

适合谁

  • 客户端是 sing-box 或 mihomo 内核,想给节点换一种流量特征的,可以试试。
  • 客户端不支持 AnyTLS 的,用不了。
  • 已经在用 VLESS Reality、用得很稳的,没必要换。

资料来源