mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-09-27 17:38:05 +03:00
132 lines
6.9 KiB
Markdown
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`.
|