AnyTLS — sing-box
AnyTLS 是一种 TLS 形态隧道,借助 padding 技巧伪装流量形状。sing-box 是首个稳定实现;同时支持入站与出站,并提供带会话池的客户端。
入站
type: "anytls":
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
users | []AnyTLSUser | [] | [AnyTLSUser] | 可接受的用户。 |
padding_scheme | badoption.Listable[string] | (server default) | <scheme line> | [<scheme line>] | 用于塑形线路流量的自定义 padding 方案。接受单个字符串或字符串列表;空 / 未设置使用服务端内置默认。 |
源码: option/anytls.go:5-10 · 锚定版本 v1.13.11 (553cfa1)
该结构体内嵌 ListenOptions 与 InboundTLSOptionsContainer。TLS 必须 启用 —— AnyTLS 在线路上始终被 TLS 包裹。
users[]
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
name | string | (unset) | <string> | 统计与日志中使用的显示名。 |
password | string | (required) | <string> | 用户密码。 |
源码: option/anytls.go:12-15 · 锚定版本 v1.13.11 (553cfa1)
出站
type: "anytls":
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
password | string | (required) | <string> | 服务端密码。 |
idle_session_check_interval | badoption.Duration | 30s | <duration> | 客户端扫描连接池中空闲会话以回收的频率。 |
idle_session_timeout | badoption.Duration | 30s | <duration> | 空闲超过该时长的会话在下一次扫描时关闭。 |
min_idle_session | int | 0 | <int> | 至少保持温热的空闲会话数,以便低延迟复用。 |
源码: option/anytls.go:17-25 · 锚定版本 v1.13.11 (553cfa1)
同时内嵌 DialerOptions、ServerOptions 与 OutboundTLSOptionsContainer。TLS 必填。
示例
入站:
json
{
"inbounds": [
{
"type": "anytls",
"tag": "anytls-in",
"listen": "::",
"listen_port": 443,
"users": [{ "name": "alice", "password": "<password>" }],
"tls": {
"enabled": true,
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
}
}
]
}带保活会话池的出站:
json
{
"outbounds": [
{
"type": "anytls",
"tag": "anytls-out",
"server": "example.com",
"server_port": 443,
"password": "<password>",
"min_idle_session": 4,
"idle_session_check_interval": "30s",
"idle_session_timeout": "60s",
"tls": { "enabled": true, "server_name": "example.com" }
}
]
}说明
padding_scheme既接受单个字符串(内部一行一条规则)也接受字符串 列表。格式遵循 AnyTLS 上游规范 —— 多数用户应保持未设置以使用服务 端默认。- 会话池字段(
idle_session_check_interval、idle_session_timeout、min_idle_session)仅用于出站。该池保持 TLS 会话温热,让新的应用 层请求只付一次往返而不是完整 TLS 握手。 min_idle_session: 0(默认)按需懒创建会话,并在idle_session_timeout后关闭。若你的负载有突发新请求,可调高。
跨内核说明
- Xray-core 不支持 AnyTLS。参见 AnyTLS — Xray-core。
- mihomo 双端完整支持 AnyTLS,字段名为 kebab-case (
idle-session-check-interval等),并额外暴露 uTLS 指纹与 ECH 选项。参见 AnyTLS — mihomo。
源码: option/anytls.go:5-25 · v1.13.11 (553cfa1)
