sing-box 的 AnyTLS 到底新在哪:和 VLESS、Hysteria2 该怎么选

sing-box 的 AnyTLS 到底新在哪:和 VLESS、Hysteria2 该怎么选

背景:先说清这三个词

如果你刚接触自建代理,先补三个概念,后面就不用反复查了。

sing-box 是一个开源的通用代理平台:同一套程序既能当客户端,也能当服务器,还支持几十种代理协议。很多图形客户端(比如基于 sing-box 内核的工具)底层用的都是它。

代理协议就是客户端和服务器之间约定的“暗号方式”:数据怎么加密、怎么伪装、服务器怎么认出这是自己人。协议选错,表现就是“能连但不稳”“换个网络就断”“速度忽快忽慢”。

AnyTLS 是 sing-box 团队维护的新一代协议。它的思路很直白:不发明一套全新的加密握手,而是把全部数据装进标准的 TLS 1.3 隧道里,再用可配置的填充(往数据包里掺无意义字节,打乱固定长度特征)和空闲会话保持来降低被流量特征识别的概率。认证方式也比 VLESS 简单:用户名加密码,不用折腾 UUID 格式。

前置知识:你有一台能装 sing-box 的服务器、一个已经解析到这台服务器的域名,会用命令行编辑 JSON 配置文件。下面所有敏感值都用占位符,换成你自己的。

一张表:四个主流协议怎么选

协议传输层最大的优点最明显的短板适合谁
VLESS + RealityTCP不用先准备域名和证书,抗封锁经验最丰富参数多,客户端和服务端版本、参数不一致容易出怪问题想长期稳定跑主力节点的人
Hysteria2UDP / QUIC丢包网络下速度上限高,弱网表现好依赖 UDP 畅通,有的网络会限 UDP 或限速网络丢包严重、追求速度的人
AnyTLSTCP标准 TLS 外壳,配置简单,TCP 普适性好客户端生态以 sing-box 内核工具为主,不如 VLESS 广想快速搭一个 TCP 节点、接受 sing-box 客户端的人
Trojan / ShadowsocksTCP老协议,客户端到处都有特征和生态都偏旧,新环境下不再是首选只做存量兼容、备用节点

结论先说:没有“最强协议”,只有“最适合你网络的协议”。 同一台服务器上多开两个协议、客户端自动选快的,往往比只押一个协议更省心。

AnyTLS 服务端:最小可用配置长这样

AnyTLS 的服务端配置核心只有三样:监听端口、用户账号、TLS。TLS 需要真实证书——域名解析到服务器后,用常规方式申请证书即可,证书路径填你自己的:

{
  "type": "anytls",
  "tag": "anytls-in",
  "listen": "::",
  "listen_port": 8443,
  "users": [
    {
      "name": "你的用户名",
      "password": "你的密码"
    }
  ],
  "tls": {
    "enabled": true,
    "certificate_path": "/etc/ssl/你的域名.crt",
    "key_path": "/etc/ssl/你的域名.key"
  }
}

注意三点:

  • 端口 8443 只是示例,换成你防火墙放行过的端口即可。
  • 密码用长随机串,别用生日、域名这类好猜的值;配置文件权限收紧,只让运行 sing-box 的用户可读。
  • 写完先校验再启动,配置 JSON 少个逗号、多层括号错位是新手最常见的翻车原因:
sing-box check -c /etc/sing-box/config.json

校验通过再重启服务,客户端连不上时先看服务端日志里是“TLS 握手失败”“认证失败”还是“端口没监听”,三类报错的排查方向完全不同。

客户端:对应的一段出站配置

客户端只要把服务端那三样原样对上:地址、端口、账号、TLS 的服务器名(填你的域名):

{
  "type": "anytls",
  "tag": "anytls-out",
  "server": "你的域名",
  "server_port": 8443,
  "password": "你的密码",
  "tls": {
    "enabled": true,
    "server_name": "你的域名"
  }
}

有些客户端还支持填充方案、空闲会话数等进阶项,默认不填也能跑;先跑通,再调优。调优时一次只改一个参数,改完测一轮再改下一个,否则出了问题不知道是哪次改动惹的祸。

三个实战判断:什么时候上 AnyTLS,什么时候别

第一,你的网络 UDP 不友好,优先试 AnyTLS 或 VLESS。 Hysteria2 再快也得 UDP 能跑满;如果测下来 UDP 丢包严重、速度被压得很低,TCP 协议反而更稳。先确认传输层瓶颈,再谈协议优劣。

第二,你用的客户端不支持 AnyTLS,就别硬上。 协议再新,客户端不支持等于零。AnyTLS 目前最稳的组合是 sing-box 本体及以它为内核的客户端;如果你全家桶都是另一个内核的工具,VLESS 的兼容性仍是更省事的选择。

第三,别把 AnyTLS 当成“隐身衣”。 标准 TLS 外壳加填充能降低流量特征识别的概率,但不等于绝对不可识别;证书、域名、端口、访问行为同样会留下痕迹。重要服务照旧做好备份和多节点冗余,别把全部流量押在一条新协议上。

升级与回退:给老用户的一条建议

已经跑着 VLESS 或 Hysteria2 的老节点,不用急着迁移。更稳妥的做法是:在同一台服务器上给 AnyTLS 另开一个端口,和老协议并行跑一两周,客户端里两个出站都留着,哪个稳用哪个。并行期间记下三个指标就够了:晚高峰能不能连上、视频会不会频繁缓冲、换 Wi-Fi 和移动网络后要不要手动重连。两周后数据会替你做决定。

如果你刚升级 sing-box 大版本、配置文件结构变了,先按本站旧配置迁移的排错思路把旧配置跑通,再加新协议——两个变动叠在一起,排错难度是翻倍的。

一句话总结

AnyTLS 的价值不在“更快”,而在“更简单、更像正常 TLS 流量”:TCP 普适、账号就是用户名加密码、服务端配置只有端口、用户和证书三件套。网络 UDP 受限、又愿意用 sing-box 系客户端的人,值得给它单独开一个端口并行试两周;已经跑得很稳的老节点,没必要为了追新而拆掉重来。