AnyTLS 是什么?比 VLESS 好在哪,"TLS 套 TLS"一次讲清
不翻车编辑部 · 更新于

先说结论: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 干三件事
1. 按填充表重新安排开头几个包的长度
协议文档里有一张默认填充表:
stop=8:只管前 8 个包。- 第 0 个包是认证,后面固定加 30 字节填充。
- 第 2 个包通常就是你内层 TLS 的第一个握手包(ClientHello),会被拆成最多 5 段,每段 400 到 1000 字节随机。
原本长度很有规律的几个包,从外面看变成一串长短不一的包;数据不够长,就用无用的填充数据(cmdWaste)补齐。

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

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

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

作者自己写的弱点
AnyTLS 难得的地方,是作者在常见问题里专门写了一节“已知弱点”。挑几条:
- TLS 套 TLS 本身需要的握手来回,比普通网页(h2)请求多。
- 只处理了上行(你发出去的)包,没有处理下行流量。
- 连接一开始几乎同时发出三个以上的包,到达时间仍可能被拿来做统计。
- 不是 HTTP 服务器,仍可能存在主动探测问题。
作者的判断是,这些弱点目前不一定会引发被墙,但修复会导致协议不兼容,所以第一版没有处理。

和 VLESS Vision 有什么不同
同一个问题,VLESS 的 Vision 是另一种做法:先把内层握手那几个短包填长,之后的数据原样转发(原理见VLESS Reality 是什么)。AnyTLS 用一张能随时更换的填充表,打乱开头几个包。两个方向不一样,谁更难被认出要看实际的封锁规则,没有官方的对比数据。
哪些软件能用
- sing-box:v1.12.0 起,服务端和客户端都支持。
- mihomo(Clash Verge 这类软件用的内核):支持服务端和客户端。
- 苹果:小火箭(Shadowrocket)v2.2.65 以上;Stash、Loon 已跟进。


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

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

适合谁
- 客户端是 sing-box 或 mihomo 内核,想给节点换一种流量特征的,可以试试。
- 客户端不支持 AnyTLS 的,用不了。
- 已经在用 VLESS Reality、用得很稳的,没必要换。
资料来源
- AnyTLS 官方仓库:github.com/anytls/anytls-go(README、协议文档、常见问题)
- sing-box AnyTLS 出站文档
- mihomo AnyTLS 文档
