From 5d67667f702f72a71863f516e1a33ec39bfe5e74 Mon Sep 17 00:00:00 2001 From: Meow <197331664+Meo597@users.noreply.github.com> Date: Wed, 6 May 2026 14:22:43 +0800 Subject: [PATCH] Shadowsocks: Refine inbound docs and sync RU --- docs/config/inbounds/shadowsocks.md | 40 ++++++++++------ docs/en/config/inbounds/shadowsocks.md | 38 ++++++++++----- docs/ru/config/inbounds/shadowsocks.md | 66 ++++++++++++++++---------- 3 files changed, 91 insertions(+), 53 deletions(-) diff --git a/docs/config/inbounds/shadowsocks.md b/docs/config/inbounds/shadowsocks.md index b41f0f50..2ef0df53 100644 --- a/docs/config/inbounds/shadowsocks.md +++ b/docs/config/inbounds/shadowsocks.md @@ -63,21 +63,21 @@ Shadowsocks 2022 新协议格式提升了性能并带有完整的重放保护, - Shadowsocks 2022 -使用与 WireGuard 类似的预共享密钥作为密码。 + 使用与 WireGuard 类似的预共享密钥作为密码。 -使用 `openssl rand -base64 <长度>` 以生成与 shadowsocks-rust 兼容的密钥,长度取决于所使用的加密方法。 + 使用 `openssl rand -base64 <长度>` 以生成与 shadowsocks-rust 兼容的密钥,长度取决于所使用的加密方法。 -| 加密方法 | 密钥长度 | -| ----------------------------- | -------: | -| 2022-blake3-aes-128-gcm | 16 | -| 2022-blake3-aes-256-gcm | 32 | -| 2022-blake3-chacha20-poly1305 | 32 | + | 加密方法 | 密钥长度 | + | ----------------------------- | -------: | + | 2022-blake3-aes-128-gcm | 16 | + | 2022-blake3-aes-256-gcm | 32 | + | 2022-blake3-chacha20-poly1305 | 32 | -在 Go 实现中,32 位密钥始终工作。 + 在 Go 实现中,32 位密钥始终工作。 - 其他加密方法 -任意字符串。 不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。 + 任意字符串。不限制密码长度,但短密码会更可能被破解,建议使用 16 字符或更长的密码。 > `level`: number @@ -88,6 +88,14 @@ Shadowsocks 2022 新协议格式提升了性能并带有完整的重放保护, 用户邮箱,用于区分不同用户的流量(日志、统计)。 +> `users`: \[ [UserObject](#userobject) \] + +一个数组,代表一组服务端认可的用户。 + +其中每一项是一个用户 [UserObject](#userobject)。 + +当存在此选项时,代表启用多用户模式。 + ## UserObject ```json @@ -99,12 +107,16 @@ Shadowsocks 2022 新协议格式提升了性能并带有完整的重放保护, } ``` -当存在此选项时,代表启用多用户模式. +> `method`: string -当 InboundConfigurationObject 中的 `method` 不为SS2022选项时,可以在此为每个用户指定 `"method"`。(`"method"`中也仅支持非SS2022选项)与`"password"`(与此同时 InboundConfigurationObject 中的设置的 `"password"` 将会被忽略)。 +- 当 InboundConfigurationObject 中的 `method` 不为 SS2022 选项时,可以在此为每个用户指定 `"method"`。(`"method"`中也仅支持非 SS2022 选项) 与`"password"`(与此同时 InboundConfigurationObject 中的设置的 `"password"` 将会被忽略)。 -当 InboundConfigurationObject 中的 `method` 为SS2022选项时,出于安全考量,不再支持为单个用户设置 `"method"`,统一为 InboundConfigurationObject 所指定的`"method"`。 +- 当 InboundConfigurationObject 中的 `method` 为 SS2022 选项时,出于安全考量,不再支持为单个用户设置 `"method"`,统一为 InboundConfigurationObject 所指定的`"method"`。 -注意SS2022并不会像旧SS一样忽略上层 `"password"`, 客户端的正确密码写法应为, `ServerPassword:UserPassword`。如:`"password": "114514:1919810"` +> `password`: string -其余选项与 InboundConfigurationObject 中的含义一致。 +注意 SS2022 并不会像旧 SS 一样忽略上层 `"password"`, 客户端的正确密码写法应为, `ServerPassword:UserPassword`。如:`"password": "114514:1919810"` + +> 其余选项 + +与 InboundConfigurationObject 中的含义一致。 diff --git a/docs/en/config/inbounds/shadowsocks.md b/docs/en/config/inbounds/shadowsocks.md index e6b91011..f2150fb0 100644 --- a/docs/en/config/inbounds/shadowsocks.md +++ b/docs/en/config/inbounds/shadowsocks.md @@ -63,21 +63,21 @@ Required. - Shadowsocks 2022 -Uses a pre-shared key similar to WireGuard as the password. + Uses a pre-shared key similar to WireGuard as the password. -Use `openssl rand -base64 ` to generate a key compatible with shadowsocks-rust. The length depends on the encryption method used. + Use `openssl rand -base64 ` to generate a key compatible with shadowsocks-rust. The length depends on the encryption method used. -| Encryption Method | Key Length | -| ----------------------------- | ---------: | -| 2022-blake3-aes-128-gcm | 16 | -| 2022-blake3-aes-256-gcm | 32 | -| 2022-blake3-chacha20-poly1305 | 32 | + | Encryption Method | Key Length | + | ----------------------------- | ---------: | + | 2022-blake3-aes-128-gcm | 16 | + | 2022-blake3-aes-256-gcm | 32 | + | 2022-blake3-chacha20-poly1305 | 32 | -In the Go implementation, 32-byte keys always work. + In the Go implementation, 32-byte keys always work. - Other encryption methods -Any string. There is no limit on password length, but short passwords are more likely to be cracked. It is recommended to use passwords of 16 characters or longer. + Any string. There is no limit on password length, but short passwords are more likely to be cracked. It is recommended to use passwords of 16 characters or longer. > `level`: number @@ -88,6 +88,14 @@ The value of `level` corresponds to the `level` value in [policy](../policy.md#l User email, used to distinguish traffic from different users (logs, statistics). +> `users`: [ [UserObject](#userobject) ] + +An array representing a group of users recognized by the server. + +Each item in the array is a [UserObject](#userobject). + +When this option exists, it indicates that multi-user mode is enabled. + ## UserObject ```json @@ -99,12 +107,16 @@ User email, used to distinguish traffic from different users (logs, statistics). } ``` -When this option exists, it indicates that multi-user mode is enabled. +> `method`: string -When the `method` in `InboundConfigurationObject` is not an SS2022 option, you can specify `"method"` for each user here (only non-SS2022 options are supported in `"method"`) along with `"password"` (at the same time, the `"password"` set in `InboundConfigurationObject` will be ignored). +- When the `method` in `InboundConfigurationObject` is not an SS2022 option, you can specify `"method"` for each user here (only non-SS2022 options are supported in `"method"`) together with `"password"` (in that case, the `"password"` set in `InboundConfigurationObject` will be ignored). -When the `method` in `InboundConfigurationObject` is an SS2022 option, for security reasons, setting `"method"` for individual users is no longer supported. It is unified to the `"method"` specified in `InboundConfigurationObject`. +- When the `method` in `InboundConfigurationObject` is an SS2022 option, for security reasons, setting `"method"` for individual users is no longer supported. It is unified to the `"method"` specified in `InboundConfigurationObject`. + +> `password`: string Note that SS2022 does not ignore the upper-level `"password"` like the old SS did. The correct password format for the client should be `ServerPassword:UserPassword`. For example: `"password": "114514:1919810"`. -The remaining options have the same meaning as in `InboundConfigurationObject`. +> Remaining options + +Have the same meaning as in `InboundConfigurationObject`. diff --git a/docs/ru/config/inbounds/shadowsocks.md b/docs/ru/config/inbounds/shadowsocks.md index 4afdf7e1..14998f1b 100644 --- a/docs/ru/config/inbounds/shadowsocks.md +++ b/docs/ru/config/inbounds/shadowsocks.md @@ -4,7 +4,7 @@ Текущая совместимость: -- Поддерживает пересылку пакетов TCP и UDP, при этом UDP можно выборочно отключить; +- Поддерживается пересылка TCP- и UDP-пакетов, при этом UDP можно при необходимости отключить. - Рекомендуемые методы шифрования: - 2022-blake3-aes-128-gcm - 2022-blake3-aes-256-gcm @@ -16,15 +16,15 @@ - xchacha20-poly1305 или xchacha20-ietf-poly1305 - none или plain -Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полную защиту от повторов, решая следующие проблемы безопасности старого протокола: +Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полноценную защиту от повторов, устраняя следующие проблемы безопасности старого протокола: -- [Серьезные уязвимости в шифровании Shadowsocks AEAD, которые не могут гарантировать целостность содержимого](https://github.com/shadowsocks/shadowsocks-org/issues/183) -- Возрастающий коэффициент ложных срабатываний исходного фильтра повторов TCP с течением времени -- Отсутствие защиты от повторов UDP -- Поведение TCP, которое можно использовать для активного зондирования +- [Серьезные уязвимости в конструкции AEAD-шифрования Shadowsocks, не позволяющие гарантировать надежность связи](https://github.com/shadowsocks/shadowsocks-org/issues/183) +- Рост частоты ложных срабатываний исходного TCP-фильтра повторов со временем +- Отсутствие защиты от повторов для UDP +- Поведение TCP, которое может использоваться для активного зондирования ::: danger -При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в общедоступных сетях. +При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в публичных сетях. ::: ## InboundConfigurationObject @@ -49,11 +49,13 @@ > `network`: "tcp" | "udp" | "tcp,udp" -Поддерживаемые типы сетевых протоколов. Например, если указано `"tcp"`, будет приниматься только трафик TCP. Значение по умолчанию: `"tcp"`. +Тип сети, которую **прослушивает** серверный порт. Значение по умолчанию: `"tcp"`. + +Обратите внимание, что этот параметр относится только к прослушиванию; он в основном влияет на встроенную передачу UDP в Shadowsocks и управляет ею. Значение `"tcp"` не означает, что inbound отклонит UDP-прокси-запросы. Такие запросы все еще могут быть упакованы в TCP средствами Shadowsocks outbound, например через UoT или mux.cool, и отправлены на сервер; этот параметр их не контролирует. > `method`: string -Метод шифрования, доступные варианты см. выше. +Метод шифрования. Список вариантов приведен выше. > `password`: string @@ -61,30 +63,38 @@ - Shadowsocks 2022 -Используется предварительный общий ключ, аналогичный WireGuard, в качестве пароля. + В качестве пароля используется предварительно согласованный ключ, аналогичный WireGuard. -Используйте команду `openssl rand -base64 <длина>` для генерации ключа, совместимого с shadowsocks-rust, длина зависит от используемого метода шифрования. + Используйте `openssl rand -base64 <длина>` для генерации ключа, совместимого с shadowsocks-rust; длина зависит от выбранного метода шифрования. -| Метод шифрования | Длина ключа | -| ----------------------------- | ----------: | -| 2022-blake3-aes-128-gcm | 16 | -| 2022-blake3-aes-256-gcm | 32 | -| 2022-blake3-chacha20-poly1305 | 32 | + | Метод шифрования | Длина ключа | + | ----------------------------- | ----------: | + | 2022-blake3-aes-128-gcm | 16 | + | 2022-blake3-aes-256-gcm | 32 | + | 2022-blake3-chacha20-poly1305 | 32 | -В реализации Go всегда работают 32-битные ключи. + В реализации на Go 32-байтовые ключи работают всегда. - Другие методы шифрования -Любая строка. Длина пароля не ограничена, но короткие пароли более уязвимы для взлома, рекомендуется использовать пароли длиной 16 символов или более. + Подходит любая строка. Длина пароля не ограничена, но короткие пароли легче подобрать, поэтому рекомендуется использовать пароль длиной не менее 16 символов. > `level`: number -Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. -Значение `level` соответствует значению `level` в разделе [policy](../policy.md#levelpolicyobject). Если не указано, используется значение по умолчанию - 0. +Уровень пользователя. Для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. +Значение `level` соответствует значению `level` в разделе [policy](../policy.md#levelpolicyobject). Если не указано, по умолчанию используется 0. > `email`: string -Адрес электронной почты пользователя, используется для разделения трафика разных пользователей (журналы, статистика). +Адрес электронной почты пользователя, используемый для различения трафика разных пользователей (журналы, статистика). + +> `users`: [ [UserObject](#userobject) ] + +Массив, представляющий группу пользователей, распознаваемых сервером. + +Каждый элемент массива является [UserObject](#userobject). + +Наличие этой опции означает, что включен многопользовательский режим. ## UserObject @@ -97,12 +107,16 @@ } ``` -Наличие этой опции означает включение многопользовательского режима. +> `method`: string -Если `method` в InboundConfigurationObject не является опцией SS2022, можно указать `"method"` для каждого пользователя. (`"method"` также поддерживает только опции, не относящиеся к SS2022) и `"password"` (при этом `"password"`, установленный в InboundConfigurationObject, будет игнорироваться). +- Если `method` в `InboundConfigurationObject` не относится к SS2022, здесь можно указать `"method"` для каждого пользователя (в `"method"` также поддерживаются только не-SS2022 варианты) вместе с `"password"`; при этом `"password"`, заданный в `InboundConfigurationObject`, будет проигнорирован. -Если `method` в InboundConfigurationObject является опцией SS2022, то из соображений безопасности больше не поддерживается установка `"method"` для отдельных пользователей, используется единый `"method"`, указанный в InboundConfigurationObject. +- Если `method` в `InboundConfigurationObject` относится к SS2022, из соображений безопасности больше не поддерживается установка `"method"` для отдельных пользователей. Используется единый `"method"`, указанный в `InboundConfigurationObject`. -Обратите внимание, что SS2022, в отличие от старого SS, не игнорирует `"password"` верхнего уровня, правильный способ записи пароля клиента: `ServerPassword:UserPassword`. Например: `"password": "114514:1919810"` +> `password`: string -Остальные опции имеют то же значение, что и в InboundConfigurationObject. +Обратите внимание: SS2022, в отличие от старого SS, не игнорирует верхнеуровневый `"password"`. Правильный формат пароля на клиенте: `ServerPassword:UserPassword`. Например: `"password": "114514:1919810"` + +> Остальные опции + +Имеют то же значение, что и в `InboundConfigurationObject`.