Shadowsocks: Refine inbound docs and sync RU

This commit is contained in:
Meow
2026-05-06 19:19:23 +08:00
parent 0177cec440
commit 5d67667f70
3 changed files with 91 additions and 53 deletions
+26 -14
View File
@@ -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 中的含义一致。
+25 -13
View File
@@ -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 <length>` to generate a key compatible with shadowsocks-rust. The length depends on the encryption method used.
Use `openssl rand -base64 <length>` 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`.
+40 -26
View File
@@ -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`.