Shadowsocks

Протокол 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 повышает производительность и обеспечивает полную защиту от повторов, решая следующие проблемы безопасности старого протокола:

Предупреждение

При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в общедоступных сетях.

InboundConfigurationObject

{
  "settings": {
    "network": "tcp,udp",
    "method": "aes-256-gcm",
    "password": "114514",
    "level": 0,
    "email": "love@xray.com",
    "clients": [
      {
        "password": "1919810",
        "method": "aes-128-gcm"
      }
    ]
  }
}

network: "tcp" | "udp" | "tcp,udp"

Поддерживаемые типы сетевых протоколов. Например, если указано "tcp", будет приниматься только трафик TCP. Значение по умолчанию: "tcp".

method: string

Метод шифрования, доступные варианты см. выше.

password: string

Обязательный параметр.

  • Shadowsocks 2022

Используется предварительный общий ключ, аналогичный WireGuard, в качестве пароля.

Используйте команду openssl rand -base64 <длина> для генерации ключа, совместимого с shadowsocks-rust, длина зависит от используемого метода шифрования.

Метод шифрованияДлина ключа
2022-blake3-aes-128-gcm16
2022-blake3-aes-256-gcm32
2022-blake3-chacha20-poly130532

В реализации Go всегда работают 32-битные ключи.

  • Другие методы шифрования

Любая строка. Длина пароля не ограничена, но короткие пароли более уязвимы для взлома, рекомендуется использовать пароли длиной 16 символов или более.

level: number

Уровень пользователя, для соединения будет использоваться локальная политика, соответствующая этому уровню пользователя. Значение level соответствует значению level в разделе policy. Если не указано, используется значение по умолчанию - 0.

email: string

Адрес электронной почты пользователя, используется для разделения трафика разных пользователей (журналы, статистика).

ClientObject

{
  "password": "1919810",
  "method": "aes-256-gcm",
  "level": 0,
  "email": "love@xray.com"
}

Наличие этой опции означает включение многопользовательского режима.

Если method в InboundConfigurationObject не является опцией SS2022, можно указать "method" для каждого пользователя. ("method" также поддерживает только опции, не относящиеся к SS2022) и "password" (при этом "password", установленный в InboundConfigurationObject, будет игнорироваться).

Если method в InboundConfigurationObject является опцией SS2022, то из соображений безопасности больше не поддерживается установка "method" для отдельных пользователей, используется единый "method", указанный в InboundConfigurationObject.

Обратите внимание, что SS2022, в отличие от старого SS, не игнорирует "password" верхнего уровня, правильный способ записи пароля клиента: ServerPassword:UserPassword. Например: "password": "114514:1919810"

Остальные опции имеют то же значение, что и в InboundConfigurationObject.