代理协议 · Clash文档

AnyTLS

Clash 生态 AnyTLS 出站配置参考,以当前 Mihomo 字段为准,核对 password、sni、客户端指纹、空闲会话检查与 TLS 校验,并提供最小 YAML 和常见握手错误。

  • password
  • TLS
  • SNI
  • 空闲会话
  • skip-cert-verify
代理协议

协议边界与最小配置

AnyTLS 是当前 Mihomo 内核提供的 TLS over TCP 出站类型,不使用 QUIC,也没有端口跳跃字段。最小节点由通用的名称、类型、服务器、端口和服务端密码组成。

password 应与服务端用户配置一致。udp 为 true 时,客户端通过 UDP over TCP 承载 UDP 请求,它不表示底层连接改为 UDP。

name必填
节点名称,在策略组和规则中用于识别该出站。
type: anytls必填
选择 Mihomo 的 AnyTLS 出站实现,原版 Clash 不识别该类型。
server / port必填
填写服务端主机与监听端口,端口为单个整数。
password认证
填写服务端为该用户设置的密码,空值只有在服务端明确允许时才可能工作。
udp可选
启用 UDP 请求支持,实际由 AnyTLS 连接内的 UDP over TCP 承载。

TLS、SNI 与证书校验

AnyTLS 始终建立 TLS 连接。未填写 sni 时,客户端使用 server 作为 TLS Server Name;如果 server 是 IP,通常需要按服务端证书填写域名形式的 SNI。

sniTLS
设置握手中的服务器名称;省略时回退到 server。
alpnTLS
填写服务端支持的 ALPN 列表,例如 h2 与 http/1.1,不能凭客户端偏好自行改动。
client-fingerprintTLS
选择客户端 TLS 指纹,例如 chrome;它与证书指纹校验不是同一个字段。
skip-cert-verify风险
为 true 时跳过常规证书校验,只应在明确理解风险时使用。
name-cert-verifyTLS
单独指定证书名称校验目标,不等同于改变连接地址。
fingerprintTLS
固定服务端证书指纹,用于证书钉扎。
certificate / private-keymTLS
服务端要求客户端证书时成对填写。
ech-opts可选
使用 ECH 隐藏 ClientHello 中的真实 SNI,具体字段遵循当前内核的通用 TLS 配置。

Reality 与安全封装的边界

AnyTLS 可以搭配 ECH、ShadowTLS、ResTLS 或 JLS 处理 TLS 暴露特征,但这些能力不是 Reality 的别名。

shadow-tls-opts封装
填写 ShadowTLS 的 version 与 password,必须与服务端一致。
restls-opts封装
填写 ResTLS 的 password,可按服务端提供 version-hint。
jls-opts封装
填写 JLS 的 username 与 password。
互斥规则重要
ShadowTLS、ResTLS 与 JLS 在当前实现中最多选择一种,同时填写会拒绝创建节点。

空闲会话参数

AnyTLS 会在一条或多条 TLS 连接上复用流。三个会话参数以秒为单位控制检查和回收,不是 QUIC 窗口,也不影响 TLS 证书校验。

idle-session-check-interval默认 30 秒
两次空闲会话检查之间的间隔。
idle-session-timeout默认 30 秒
检查时关闭空闲时间超过该值的会话。
min-idle-session默认 0
检查时至少保留的空闲会话数量;提高该值会保留更多连接。

最小可用示例

先使用服务端实际提供的密码、SNI 与 ALPN 建立连接,再按需要增加 ECH 或一种安全封装。会话字段已有默认值,通常无需重复填写。

YAML
proxies:
  - name: anytls-node
    type: anytls
    server: server.example.com
    port: 443
    password: replace-with-server-password
    udp: true
    sni: server.example.com
    client-fingerprint: chrome
    alpn:
      - h2
      - http/1.1

常见误配

配置能够被 YAML 解析,不代表协议参数可以互换。AnyTLS 连不上时应先收缩到最小配置。

  • 从 VLESS 节点复制 reality-opts,导致使用了当前内核明确不支持的组合。
  • server 填写 IP,却没有填写证书对应的 sni,造成证书名称校验失败。
  • 同时启用 ShadowTLS、ResTLS 与 JLS 中的两种或更多封装,节点会在创建阶段报错。
  • 把会话检查参数当作性能倍率盲目调大,反而保留更多空闲连接。