Skip to content

ShadowsocksR — sing-box

sing-box реализует клиентскую сторону SSR. Входящий не поддерживается — для этого нужен специализированный SSR-сервер вроде ShadowsocksR-libev или одного из его форков.

Исходящий

type: "shadowsocksr":

ПолеТипПо умолчаниюДопустимые значенияОписание
methodstring(required)aes-256-cfb | aes-128-ctr | chacha20-ietf | rc4-md5 | <other SSR ciphers>Шифр SSR. Принимаемый набор — исторический каталог шифров SSR: RC4, AES-CFB, AES-CTR, ChaCha20 и т. д. Современным AEAD-шифрам место на обычном исходящем Shadowsocks.
passwordstring(required)<string>Пароль сервера.
obfsstring(unset)plain | http_simple | http_post | random_head | tls1.2_ticket_authПлагин обфускации. `plain` — без обфускации; `http_simple` и `http_post` отправляют поддельный HTTP-запрос; `tls1.2_ticket_auth` имитирует возобновление TLS-сессии.
obfs_paramstring(unset)<string>Параметр конкретного плагина. Для HTTP-обфускации это заголовок Host.
protocolstringoriginorigin | auth_aes128_md5 | auth_aes128_sha1 | auth_sha1_v4 | auth_chain_a | auth_chain_bПлагин протокольного уровня. `origin` — без плагина; семейство `auth_*` добавляет попакетную аутентификацию.
protocol_paramstring(unset)<string>Параметр протокольного уровня. Многие плагины используют его как подсказку о числе пользователей или ограничении скорости.
networkNetworkList(tcp+udp)tcp | udp | Ограничить только TCP или только UDP.

Исходный код: option/shadowsocksr.go:3-13 · зафиксировано на v1.13.15 (3708fa1)

Встраивает DialerOptions и ServerOptions.

Примеры

Обычный SSR с HTTP-обфускацией:

json
{
  "outbounds": [
    {
      "type": "shadowsocksr",
      "tag": "ssr-out",
      "server": "example.com",
      "server_port": 443,
      "method": "aes-256-cfb",
      "password": "<password>",
      "obfs": "http_simple",
      "obfs_param": "www.bing.com",
      "protocol": "auth_chain_a",
      "protocol_param": "32"
    }
  ]
}

Обфускация TLS-ticket-auth:

json
{
  "outbounds": [
    {
      "type": "shadowsocksr",
      "server": "example.com",
      "server_port": 443,
      "method": "chacha20-ietf",
      "password": "<password>",
      "obfs": "tls1.2_ticket_auth",
      "obfs_param": "www.bing.com",
      "protocol": "auth_chain_b"
    }
  ]
}

Примечания

  • Это только клиент. Для запуска SSR-сервера нужен выделенный SSR-демон — исходящему shadowsocksr в sing-box не соответствует одноимённый тип входящего.
  • Принимаемые строки method, obfs и protocol — исторический каталог SSR. «Современные» шифры Shadowsocks (AEAD, 2022-blake3-*) относятся к исходящему Shadowsocks.
  • Из протокольных плагинов сегодня активно используются только auth_chain_* — более старые варианты auth_aes128_* и auth_sha1_v4 уязвимы к классу replay-атак, выявленному в 2018 году.

Сравнение с другими ядрами

  • Xray-core не поддерживает SSR. См. SSR — Xray-core.
  • mihomo использует cipher (а не method) и kebab-case для полей параметров (obfs-param, protocol-param). См. SSR — mihomo.

Исходный код: option/shadowsocksr.go:3-13 · v1.13.15 (3708fa1)

Core Tutorial от Argsment