Shadowsocks — sing-box
sing-box реализует всё семейство Shadowsocks: классический AEAD, Shadowsocks-2022 с многопользовательским EIH, протоколы плагинов v2ray-plugin и obfs, а также уникальную для SS-2022 форму серверной ретрансляции.
Входящий
Входящий type: "shadowsocks":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
network | NetworkList | (tcp+udp) | tcp | udp | | Ограничение только TCP или только UDP. Пустое значение включает оба. |
method | string | (required) | none | aes-128-gcm | aes-256-gcm | chacha20-ietf-poly1305 | xchacha20-ietf-poly1305 | 2022-blake3-aes-128-gcm | 2022-blake3-aes-256-gcm | 2022-blake3-chacha20-poly1305 | Шифр, используемый входящим. Шифры SS-2022 включают `users[]` и `destinations[]`. |
password | string | (required for single-user) | <string> | <base64 key> | Пароль для одного пользователя или серверный EIH-ключ SS-2022. |
users | []ShadowsocksUser | [] | [ShadowsocksUser] | Список пользователей — только для SS-2022. У каждого пользователя собственный EIH-ключ. |
destinations | []ShadowsocksDestination | [] | [ShadowsocksDestination] | Серверные цели ретрансляции. Серверы SS-2022 могут разводить один входящий на несколько вышестоящих адресов, выбираемых по EIH. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | Мультиплексирование на стороне сервера. |
managed | bool | false | true | false | Включает протокол управляемого режима, позволяющий ssmgmt-совместимым клиентам перенастраивать пользователей во время работы. |
Исходный код: option/shadowsocks.go:3-12 · зафиксировано на v1.13.15 (3708fa1)
Структура встраивает ListenOptions (адрес прослушивания, порт, сниффинг, …).
users[]
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (unset) | <string> | Отображаемое имя, используемое в статистике и журналах. |
password | string | (required) | <base64 key> | EIH-ключ пользователя. Длина должна соответствовать шифру (16 или 32 байта). |
Исходный код: option/shadowsocks.go:14-17 · зафиксировано на v1.13.15 (3708fa1)
destinations[]
Каждая цель встраивает ServerOptions (server, server_port) и имеет собственные имя и пароль.
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (unset) | <string> | Отображаемое имя этой цели. |
password | string | (required) | <base64 key> | EIH-ключ цели. |
Исходный код: option/shadowsocks.go:19-23 · зафиксировано на v1.13.15 (3708fa1)
Исходящий
Исходящий type: "shadowsocks":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
method | string | (required) | <cipher> | Шифр сервера. |
password | string | (required) | <string> | <base64 key> | Пароль сервера / ключ SS-2022. |
plugin | string | (unset) | obfs-local | v2ray-plugin | shadow-tls | kcptun | Внешний плагин Shadowsocks, оборачивающий поток. `obfs-local` и `v2ray-plugin` встроены в sing-box; остальные требуют внешнего исполняемого файла в PATH. |
plugin_opts | string | (unset) | <plugin-specific string> | Разделённые точкой с запятой параметры, передаваемые плагину (`mode=tls;host=example.com;...`). |
network | NetworkList | (tcp+udp) | tcp | udp | | Ограничение только TCP или только UDP. |
udp_over_tcp | *UDPOverTCPOptions | (disabled) | UDPOverTCPOptions | Оборачивает UDP-пакеты внутри TCP-потока. Форма объекта: `{enabled, version}`. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | Мультиплексирование на стороне клиента (должно совпадать с настройками сервера). |
Исходный код: option/shadowsocks.go:25-35 · зафиксировано на v1.13.15 (3708fa1)
Встраивает DialerOptions и ServerOptions.
Примеры
Классический AEAD-входящий:
{
"inbounds": [
{
"type": "shadowsocks",
"tag": "ss-in",
"listen": "::",
"listen_port": 8388,
"method": "aes-256-gcm",
"password": "<password>"
}
]
}Входящий SS-2022 с двумя пользователями:
{
"inbounds": [
{
"type": "shadowsocks",
"tag": "ss22-in",
"listen": "::",
"listen_port": 8388,
"method": "2022-blake3-aes-128-gcm",
"password": "<base64 16-byte server key>",
"users": [
{ "name": "alice", "password": "<base64 16-byte alice key>" },
{ "name": "bob", "password": "<base64 16-byte bob key>" }
]
}
]
}Исходящий с v2ray-plugin:
{
"outbounds": [
{
"type": "shadowsocks",
"tag": "ss-out",
"server": "example.com",
"server_port": 8388,
"method": "chacha20-ietf-poly1305",
"password": "<password>",
"plugin": "v2ray-plugin",
"plugin_opts": "mode=websocket;tls;host=example.com;path=/ss"
}
]
}Исходящий с UDP-over-TCP v2:
{
"outbounds": [
{
"type": "shadowsocks",
"server": "example.com",
"server_port": 8388,
"method": "2022-blake3-aes-256-gcm",
"password": "<base64 32-byte key>",
"udp_over_tcp": { "enabled": true, "version": 2 }
}
]
}Примечания
- sing-box принимает как IETF-имена шифров (
chacha20-ietf-poly1305), так и исторические не-IETF-имена, но внутри протокольного слоя приводит каждый шифр к единственному написанию. destinations[]— специфика sing-box. Сервер SS-2022 с целями работает как ретранслятор, различающий клиентов по EIH: каждая цель несёт собственный EIH-ключ, и входящее соединение, прошедшее аутентификацию по одному из них, перенаправляется наserver/server_portэтой цели, а не обрабатывается локально.plugin: "v2ray-plugin"иplugin: "obfs-local"встроены в sing-box (внешний исполняемый файл не нужен). Остальные имена плагинов вызывают внешний исполняемый файл с тем же именем; протокол плагинов соответствует спецификации плагинов shadowsocks-libev.udp_over_tcp— объект ({enabled, version}), тогда как mihomo использует два плоских поля с другими именами. Xray-core удалил свои поля UoT в v26.7.x, так что теперь эта возможность есть только у sing-box и mihomo.
Сравнение с другими ядрами
- Xray использует
clients[](а неusers[]) и не поддерживает UDP-over-TCP (прежние исходящие поляuot/uotVersionудалены в v26.7.x). Формы ретрансляцииdestinations[]у него нет. См. Shadowsocks — Xray-core. - mihomo использует
cipher(а неmethod) и принимаетplugin-optsкак типизированное YAML-отображение с ключами по имени плагина. См. Shadowsocks — mihomo.
Исходный код: option/shadowsocks.go:3-35 · v1.13.15 (3708fa1)
