Диагностика и исправление Конфигурация Обновлено 6 sing-box, Windows, Linux, macOS, Android

sing-box Shadowsocks: параметры outbound и типовые ошибки

Как настроить Shadowsocks outbound в sing-box, разобраться в полях JSON, подключить route, DNS и TUN, а также избежать частых ошибок при конфигурации.

shadowsocksoutboundsing-boxjsonroutednstun
Содержание
КороткоВ статье разобраны параметры outbound Shadowsocks для sing-box, включая опции метода, плагинов и TLS. Также показано, как комбинировать outbound с правилами маршрутизации и DNS, как настроить TUN, и что делать при частых ошибках подключения.

sing-box — это универсальный прокси-ядро, которое поддерживает множество протоколов, включая Shadowsocks. Для подключения к серверу Shadowsocks необходимо правильно описать outbound в JSON-конфигурации. В этой статье мы разберём все ключевые параметры, а также типовые ошибки, которые возникают при настройке.

Что такое Shadowsocks outbound?

Outbound — это исходящее подключение, через которое sing-box отправляет трафик. Для Shadowsocks outbound используется тип "type": "shadowsocks". Он определяет, как sing-box будет соединяться с удалённым Shadowsocks-сервером.

Каждый outbound имеет "tag" — уникальное имя, по которому на него ссылаются правила маршрутизации. Например, вы можете задать тег "ss" и направить весь трафик на этот тег через route.

Основные параметры outbound Shadowsocks

В конфигурации outbound используются следующие поля:

  • "type" — всегда "shadowsocks".
  • "tag" — произвольное имя, должно быть уникальным.
  • "server" — адрес сервера (IP или домен).
  • "server_port" — порт сервера (обычно от 1 до 65535).
  • "method" — метод шифрования, например "aes-256-gcm" или "2022-blake3-aes-256-gcm".
  • "password" — пароль, согласованный с сервером.
  • "plugin" — плагин для обфускации или транспорта, например "v2ray-plugin" или "simple-obfs" (необязательно).
  • "plugin_opts" — опции плагина в строковом виде, если используется "plugin".
  • "network" — тип сети: "tcp" или "udp". По умолчанию используется TCP.
  • "udp_over_tcp" — если true, UDP-трафик передаётся по TCP (в некоторых сетях помогает обойти блокировки).
  • "multiplex" — параметры мультиплексирования (для экономии соединений).

Пример минимальной конфигурации:

{
  "type": "shadowsocks",
  "tag": "ss",
  "server": "ss.example.com",
  "server_port": 8388,
  "method": "aes-256-gcm",
  "password": "пароль"
}

Если используется плагин, например v2ray-plugin, конфигурация будет выглядеть так:

{
  "type": "shadowsocks",
  "tag": "ss-ws",
  "server": "ss.example.com",
  "server_port": 443,
  "method": "chacha20-ietf-poly1305",
  "password": "пароль",
  "plugin": "v2ray-plugin",
  "plugin_opts": "mode=websocket;host=cdn.example.com;tls"
}

Обратите внимание: в документации sing-box поля "plugin" и "plugin_opts" описаны как "legacy". Начиная с определенных версий, рекомендуется использовать "transport" для настройки транспорта. Однако для совместимости с существующими серверами плагины всё ещё поддерживаются.

Настройка route, DNS и TUN

Просто указать outbound недостаточно — нужно направить трафик через него. Для этого используются "route" и "dns" в конфигурации.

Route

Маршрутизация задаёт правила, какой outbound использовать для тех или иных запросов. Пример простого правила:

"route": {
  "final": "ss",
  "rules": [
    {
      "domain": ["example.com"],
      "outbound": "ss"
    }
  ]
}

"final" — это outbound по умолчанию, куда попадает трафик, не подходящий под правила.

DNS

Для корректного резолва доменов нужно настроить DNS. Например:

"dns": {
  "servers": [
    {
      "tag": "remote",
      "address": "udp://8.8.8.8"
    }
  ]
}

Затем можно добавить правило DNS, чтобы все query шли через Shadowsocks: "domain": ["example.com"], "server": "remote".

TUN

Чтобы захватывать весь системный трафик, используется TUN. В sing-box TUN настраивается в разделе "inbound":

"inbound": [
  {
    "type": "tun",
    "tag": "tun-in",
    "interface_name": "tun0",
    "auto_route": true,
    "strict_route": true,
    "stack": "system"
  }
]

Важно, чтобы при использовании TUN правильно были заданы route и DNS, иначе трафик не пойдёт через Shadowsocks.

Типовые ошибки и их диагностика

Рассмотрим самые частые проблемы при настройке Shadowsocks в sing-box.

1. Не работает подключение: “connection refused”

Проверьте:

  • Убедитесь, что server и server_port указаны верно.
  • Если сервер за NAT или файрволом, откройте порт.
  • Посмотрите логи sing-box: запустите с флагом --log-level debug.

2. Ошибка аутентификации: “handshake failed”

Это может быть из-за неправильного метода шифрования или пароля. Проверьте, что значения совпадают с сервером. Для нового стандарта Shadowsocks 2022 метод поддерживает только определённые комбинации, и пароль должен быть сгенерирован по алгоритму.

3. Не работает UDP (например, VoIP или DHCP)

Убедитесь, что для outbound указан "network": "udp" или "udp_over_tcp": true, если UDP блокируется.

4. Проблемы с плагином

Плагин может требовать специфические опции (host, tls). Сверьте plugin_opts с настройками сервера.

5. Правила route не срабатывают

Проверьте порядок правил: они применяются сверху вниз. Используйте "outbound" в правиле, а не "action". Убедитесь, что тег совпадает.

6. TUN не захватывает трафик

Настройте "auto_route": true и "strict_route": true. Также нужно добавить правило, чтобы трафик TUN попадал в route.

Сравнение с VLESS и выбор транспорта

Пользователи часто сравнивают Shadowsocks и VLESS. Shadowsocks проще в настройке, но VLESS предоставляет больше транспортных опций (WS, gRPC, HTTP/2 и т.д.) и лучше противостоит активным зондированиям. Если сервер поддерживает VLESS, вы можете выбрать этот протокол, изменив "type": "vless" и добавив соответствующие поля (UUID, transport, tls). Пример VLESS outbound:

{
  "type": "vless",
  "tag": "vless-ws",
  "server": "example.com",
  "server_port": 443,
  "uuid": "uuid-здесь",
  "tls": {
    "enabled": true,
    "server_name": "example.com"
  },
  "transport": {
    "type": "ws",
    "path": "/",
    "headers": {
      "Host": "example.com"
    }
  }
}

Транспорт — это способ упаковки данных поверх TCP. Для Shadowsocks он обычно задаётся через плагины (v2ray-plugin использует WebSocket), а для VLESS — через поле "transport".

Заключение

Правильная настройка Shadowsocks outbound в sing-box требует внимания к деталям. Зная основные параметры и типовые ошибки, вы сможете быстро настроить прокси для своих задач. Если что-то не работает, используйте логи и официальную документацию.

Источники: Shadowsocks outbound, Route, DNS, TUN.

Проверено на практике

  • Дата проверки: 2025-03-15
  • Среда: Linux, sing-box 1.11.1
  • Версии: 1.11.1

Мини-чеклист

  • Проверить server и server_port на соответствие серверу.
  • Убедиться, что метод и пароль совпадают с настройками Shadowsocks-сервера.
  • Если используется плагин, сверить plugin и plugin_opts.
  • Настроить route: задать final outbound и правила для нужных доменов.
  • Добавить DNS-сервер и правила для резолва.
  • При использовании TUN включить auto_route и strict_route.
  • Проверить логи при неработоспособности.

Частые ошибки

  • Неправильно указан метод шифрования, не поддерживаемый сервером.
  • Пустая строка в password или слишком короткий пароль.
  • Не выставлен network: udp для UDP-трафика.
  • Забыли настроить DNS-резолвер, из-за чего домены не разрешаются.
  • Конфликт тегов outbound в route.
  • Использование устаревшего плагина без поддержки новых версий sing-box.

Источники и документация

FAQ

Какой метод шифрования выбрать?

Рекомендуется использовать aes-256-gcm или более новый 2022-blake3-aes-256-gcm, если сервер поддерживает Shadowsocks 2022.

Что делать, если не работает UDP?

Убедитесь, что в outbound указан network: udp или включён udp_over_tcp.

Как настроить маршрутизацию только определённых доменов через Shadowsocks?

Добавьте правило в route с полями domain и outbound: 'ss'.

Можно ли использовать один и тот же пароль для TLS и Shadowsocks?

Нет, это разные протоколы. Пароль для Shadowsocks должен совпадать с конфигурацией сервера, а TLS настраивается отдельно.

Нужен быстрый рабочий доступ?

Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.

Получить доступ

Дальше по теме

Связанные статьи