Files
XTLS_Xray-docs-next/docs/ru/config/inbounds/shadowsocks.md
T

132 lines
6.9 KiB
Markdown

# Shadowsocks
Протокол [Shadowsocks](https://ru.wikipedia.org/wiki/Shadowsocks), совместимый с большинством других реализаций.
Текущая совместимость:
- Поддерживается пересылка TCP- и UDP-пакетов, при этом UDP можно при необходимости отключить.
- Рекомендуемые методы шифрования:
- 2022-blake3-aes-128-gcm
- 2022-blake3-aes-256-gcm
- 2022-blake3-chacha20-poly1305
- Другие методы шифрования:
- aes-256-gcm
- aes-128-gcm
- chacha20-poly1305 или chacha20-ietf-poly1305
- xchacha20-poly1305 или xchacha20-ietf-poly1305
- none или plain
Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полноценную защиту от повторов, устраняя следующие проблемы безопасности старого протокола:
- [Серьезные уязвимости в конструкции AEAD-шифрования Shadowsocks, не позволяющие гарантировать надежность связи](https://github.com/shadowsocks/shadowsocks-org/issues/183)
- Рост частоты ложных срабатываний исходного TCP-фильтра повторов со временем
- Отсутствие защиты от повторов для UDP
- Поведение TCP, которое может использоваться для активного зондирования
::: danger
При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в публичных сетях.
:::
## InboundConfigurationObject
`InboundConfigurationObject` соответствует элементу `settings` в [`InboundObject`](../inbound.md).
```json
{
"inbounds": [
{
// ...
"protocol": "shadowsocks",
// [!code focus:13]
"settings": {
"network": "tcp,udp",
"method": "aes-256-gcm",
"password": "114514",
"level": 0,
"email": "love@xray.com",
"users": [
{
"password": "1919810",
"method": "aes-128-gcm"
}
]
}
}
]
}
```
> `network`: "tcp" | "udp" | "tcp,udp"
Тип сети, которую **прослушивает** серверный порт. Значение по умолчанию: `"tcp"`.
Обратите внимание, что этот параметр относится только к прослушиванию; он в основном влияет на встроенную передачу UDP в Shadowsocks и управляет ею. Значение `"tcp"` не означает, что inbound отклонит UDP-прокси-запросы, потому что такие запросы все еще могут быть упакованы в TCP-пакеты через XUDP в Mux.Cool и отправлены на сервер.
> `method`: string
Метод шифрования. Список вариантов приведен выше.
> `password`: string
Обязательный параметр.
- Shadowsocks 2022
В качестве пароля используется предварительно согласованный ключ, аналогичный WireGuard.
Используйте `openssl rand -base64 <длина>` для генерации ключа, совместимого с shadowsocks-rust; длина зависит от выбранного метода шифрования.
| Метод шифрования | Длина ключа |
| ----------------------------- | ----------: |
| 2022-blake3-aes-128-gcm | 16 |
| 2022-blake3-aes-256-gcm | 32 |
| 2022-blake3-chacha20-poly1305 | 32 |
В реализации на Go 32-байтовые ключи работают всегда.
- Другие методы шифрования
Подходит любая строка. Длина пароля не ограничена, но короткие пароли легче подобрать, поэтому рекомендуется использовать пароль длиной не менее 16 символов.
> `level`: number
Уровень пользователя. Для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя.
Значение `level` соответствует значению `level` в разделе [policy](../policy.md#levelpolicyobject). Если не указано, по умолчанию используется 0.
> `email`: string
Адрес электронной почты пользователя, используемый для различения трафика разных пользователей (журналы, статистика).
> `users`: [ [UserObject](#userobject) ]
Массив, представляющий группу пользователей, распознаваемых сервером.
Каждый элемент массива является [UserObject](#userobject).
Наличие этой опции означает, что включен многопользовательский режим.
### UserObject
```json
{
"password": "1919810",
"method": "aes-256-gcm",
"level": 0,
"email": "love@xray.com"
}
```
> `method`: string
- Если `method` в `InboundConfigurationObject` не относится к SS2022, здесь можно указать `"method"` для каждого пользователя (в `"method"` также поддерживаются только не-SS2022 варианты) вместе с `"password"`; при этом `"password"`, заданный в `InboundConfigurationObject`, будет проигнорирован.
- Если `method` в `InboundConfigurationObject` относится к SS2022, из соображений безопасности больше не поддерживается установка `"method"` для отдельных пользователей. Используется единый `"method"`, указанный в `InboundConfigurationObject`.
> `password`: string
Обратите внимание: SS2022, в отличие от старого SS, не игнорирует верхнеуровневый `"password"`. Правильный формат пароля на клиенте: `ServerPassword:UserPassword`. Например: `"password": "114514:1919810"`
> Остальные опции
Имеют то же значение, что и в `InboundConfigurationObject`.