AnyTLS — sing-box
AnyTLS — это туннель в форме TLS, использующий приёмы паддинга, чтобы замаскировать профиль своего трафика. sing-box стал первой стабильной реализацией; поддерживаются и входящий, и исходящий с клиентским пулом сессий.
Входящий
type: "anytls":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
users | []AnyTLSUser | [] | [AnyTLSUser] | Принимаемые пользователи. |
padding_scheme | badoption.Listable[string] | (server default) | <scheme line> | [<scheme line>] | Пользовательская схема паддинга, формирующая профиль трафика на проводе. Принимает одну строку или список строк; пустое / незаданное значение использует встроенную схему сервера по умолчанию. |
Исходный код: option/anytls.go:5-10 · зафиксировано на v1.13.15 (3708fa1)
Структура встраивает ListenOptions и InboundTLSOptionsContainer. TLS обязателен — на проводе AnyTLS всегда обёрнут в TLS.
users[]
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (unset) | <string> | Отображаемое имя, используемое в статистике и журналах. |
password | string | (required) | <string> | Пароль пользователя. |
Исходный код: option/anytls.go:12-15 · зафиксировано на v1.13.15 (3708fa1)
Исходящий
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.15 (3708fa1)
Встраивает DialerOptions, ServerOptions и OutboundTLSOptionsContainer. TLS обязателен.
Примеры
Входящий:
{
"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"
}
}
]
}Исходящий с прогретым пулом сессий:
{
"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.15 (3708fa1)
