← К библиотеке
Протоколы Устарело

Shadowsocks: почему это уже не вариант

⚠ Протокол устарел и почти не используется. Оставлено для справки — как основу ставить не рекомендую.

Коротко и честно: Shadowsocks сегодня — проходной протокол. Он простой и быстрый, но у него нет TLS-маскировки, и под нормальным DPI он ложится. Оставляю статью для справки, чтобы ты понимал, почему его нет в основной обвязке.

Что это и почему больше не основной

Shadowsocks — лёгкий шифрующий прокси. Ни домена, ни сертификата, ни TLS-рукопожатия: есть общий ключ и метод шифрования, трафик шифруется потоком и уходит на сервер. Отсюда его плюсы — простой и быстрый. И отсюда же его приговор в 2026: раз нет TLS, ему нечем притворяться обычным сайтом.

Редакция Shadowsocks-2022 подчистила криптографию (AEAD, защита от replay), но фундамент не поменяла. DPI видит поток, который не похож ни на HTTPS, ни на что-либо легитимное — статистика длин и таймингов выдаёт его, а на активный пробинг ему нечего ответить. Reality в такой ситуации отдаёт запрос чужому большому сайту и остаётся невидимым, а SS просто торчит. Поэтому как вход для клиентов под ТСПУ он не живёт.

Единственная ниша — и та с оговоркой

Иногда SS предлагают как внутренний хоп в каскаде (между твоими нодами, где трафик уже внутри твоего периметра и наружу не отсвечивает). Технически можно. Но и тут я его не рекомендую: это лишнее слабое звено, а с точки зрения безопасности внутренние хопы лучше строить на том же VLESS/Reality или на защищённом транспорте, а не на протоколе без маскировки. Если очень надо «по-быстрому» — см. конфиг ниже, но держи в голове, что это компромисс, а не best practice.

Если всё же понадобился — минимальный конфиг

Для справки. Ключ SS-2022 — фиксированной длины в base64 (это криптоключ, а не пароль):

bash
# ключ на 16 байт для метода 2022-blake3-aes-128-gcm
openssl rand -base64 16
config.json
{
  "inbounds": [
    {
      "tag": "ss2022",
      "listen": "0.0.0.0",
      "port": 8388,
      "protocol": "shadowsocks",
      "settings": {
        "method": "2022-blake3-aes-128-gcm",
        "password": "BASE64_16BYTE_KEY",
        "network": "tcp,udp"
      }
    }
  ],
  "outbounds": [ { "protocol": "freedom" } ]
}

Порт держи отличным от 443, где у тебя основной Reality. Ключ не той длины → инбаунд не соберётся.

Что ставить вместо

Как вход для клиентов — VLESS + Reality (маскировка под чужой TLS), под жёстким ТСПУ добавляй XHTTP поверх. Это разобрано в актуальных гайдах раздела «Протоколы» — туда и смотри, а Shadowsocks оставь в резерве.

Следующий гайд Что такое Reality и почему он держит ноду живой → Не понравилась статья или что-то непонятно? Напишите мне — помогу или поправлю. @notrealvpn →
Материал носит образовательный характер и посвящён инженерии сетевой инфраструктуры. Вы отвечаете за соблюдение законов своей юрисдикции.