February 6

Shadowsocks: борьба брони и снаряда.

Shadowsocks: как работает эта штука.

  1. Клиентская сторона
    • Клиент перехватывает трафик, предназначенный для выхода в интернет.
    • Данные шифруются с использованием симметричного шифрования (например, AES-256-GCM).
    • Зашифрованные пакеты отправляются через TCP (и опционально через UDP) на сервер Shadowsocks.
  2. Передача данных
    • Клиент устанавливает соединение с сервером Shadowsocks.
    • Данные передаются в зашифрованном виде.
    • TCP работает как обычный поток байтов, UDP пакеты просто шифруются и инкапсулируются.
  3. Серверная сторона
    • Сервер получает зашифрованные пакеты, расшифровывает их.
    • Определяет целевой адрес и пересылает данные в открытый интернет.
    • Полученные ответы шифруются и отправляются обратно клиенту.
  4. Обратный процесс
    • Клиент получает зашифрованные ответы, расшифровывает их.
    • Передает приложениям как обычные сетевые данные.

Дополнительно:

  • Shadowsocks не является полноценным VPN, он работает на уровне прокси.
  • Может работать через SOCKS5, но в отличие от обычного SOCKS5, он использует шифрование.
  • UDP требует специальной поддержки, например, в Kubernetes могут быть проблемы с прокидыванием UDP-портов

Отличие Shadowsocks от обычного прокси

  1. Шифрование
    • Обычные HTTP/SOCKS5 прокси передают данные в открытом виде (или частично зашифрованы в случае HTTPS).
    • Shadowsocks полностью шифрует трафик (включая метаданные) с использованием современных AEAD-алгоритмов (например, AES-256-GCM, Chacha20-Poly1305).
  2. Отсутствие явных заголовков
    • Обычный прокси оставляет следы в заголовках (например, X-Forwarded-For в HTTP или открытые handshake-пакеты в SOCKS5).
    • Shadowsocks передает данные в зашифрованном виде без явных признаков прокси.
  3. Скорость и пропускная способность
    • Обычные прокси могут снижать скорость из-за неэффективных методов обработки трафика.
    • Shadowsocks использует асинхронные I/O (например, epoll в Linux) и минимальные накладные расходы.

Для чего создан Shadowsocks

Shadowsocks был разработан для обхода интернет-цензуры, в частности, китайского «Великого файрвола» (GFW).

  • Он маскирует прокси-трафик как обычное соединение, чтобы избежать обнаружения и блокировки.
  • Он не проксирует весь трафик, а только необходимый, снижая нагрузку на сеть.
  • В отличие от VPN, он не изменяет маршрутизацию всего соединения.

Почему Shadowsocks сложно блокировать и обнаружить

  1. Рандомизация пакетов
    • Данные шифруются так, чтобы не содержать повторяющихся паттернов.
    • Это делает анализ трафика сложнее, поскольку пакеты не похожи на прокси-трафик.
  2. Нет явного handshake
    • В отличие от OpenVPN, Shadowsocks не имеет отличительных заголовков при установке соединения.
    • Это затрудняет обнаружение при DPI (Deep Packet Inspection).
  3. Трафик маскируется под обычный HTTPS
    • Можно запустить сервер Shadowsocks через стандартные порты (443, 80).
    • Поскольку трафик зашифрован, файрволу сложно отличить его от легитимного HTTPS.
  4. Использование Obfsproxy и TLS-обфускации
    • Дополнительные инструменты (Obfsproxy, v2ray-plugin) могут скрывать Shadowsocks-трафик, имитируя обычный TLS.

Как Shadowsocks обходит DNS-блокировки

  1. Использует альтернативные DNS-серверы
    • Shadowsocks-клиент может работать с DNSCrypt или DoH (DNS over HTTPS).
    • Это предотвращает подмену DNS-ответов файрволами.
  2. Шифрует и проксирует DNS-запросы
    • Запросы к заблокированным сайтам идут через зашифрованный канал.
    • DNS-запросы могут выполняться через Shadowsocks-сервер, минуя локальные DNS-блокировки.
  3. Поддержка UDP-over-TCP
    • Если UDP-запросы блокируются, Shadowsocks может инкапсулировать их в TCP.
    • Это позволяет обойти ограничения на DNS-запросы.

Разработчики Shadowsocks

Shadowsocks был создан в 2012 году китайским программистом, известным под псевдонимом "clowwindy".

  • В 2015 году он прекратил разработку из-за давления китайских властей.
  • Проект был подхвачен сообществом, и с тех пор активно развивается, включая версии Shadowsocks-libev (C), Shadowsocks-rust (Rust), Shadowsocks-go (Go).

Рекомендуемые облачные серверы для развертывания Shadowsocks

Наиболее популярные облачные провайдеры для запуска Shadowsocks:

  • AWS (Amazon Web Services) – высокая отказоустойчивость, но дорого.
  • Vultr – хороший баланс между ценой и производительностью.
  • Linode – стабильные серверы, высокая скорость сети.
  • DigitalOcean – удобный интерфейс, подходит для небольших установок.
  • Oracle Cloud Free Tier – предоставляет бесплатные мощности (до 24 ГБ RAM).
  • Hetzner – дешевые сервера в Европе, мощный трафик.

Для обхода блокировок часто используют GCP (Google Cloud Platform) или Azure, так как китайские файрволы сложнее блокируют их IP.


Стоимость аренды AWS-сервера для 10 000 клиентов

При расчете стоимости учитываем:

  • Трафик: 10 000 пользователей, если каждый использует 10 ГБ/месяц → 100 ТБ/месяц.
  • Серверные мощности: Shadowsocks не требует мощного CPU, но важна пропускная способность сети.
  • Выбор региона: Важно избегать азиатских регионов, так как там выше риск блокировок.

Примерный расчет на AWS EC2 (c учетом трафика и нагрузки):

  • EC2 t3.medium (2 vCPU, 4 ГБ RAM)$32/месяц
  • Выделенный трафик 100 ТБ (на выход) → $900 – $1 200/месяц
  • Дополнительные расходы (балансировщики, резервные IP)$50/месяц

Итого: ~$1 000 – $1 300/месяц за 100 ТБ трафика для 10 000 пользователей.
(На Hetzner / OVH можно снизить расходы до $300 – $500/месяц).


Конфигурация сервера для Shadowsocks

Минимальные требования для 1 000 пользователей

  • CPU: 1 vCPU
  • RAM: 512MB – 1GB
  • Диск: 10 ГБ (SSD)
  • Сеть: 1 Gbps
  • ОС: Ubuntu 22.04 / Debian 12
  • Дополнительно: Firewall (iptables), Fail2ban, TCP BBR

Кластер Kubernetes для масштабируемости

Если требуется масштабируемый вариант на Kubernetes:

  1. Мастер-узел: 2 vCPU, 4 ГБ RAM
  2. Рабочие узлы:
    • 3-5 узлов (2 vCPU, 4 ГБ RAM)
    • Запуск Shadowsocks в контейнерах (shadowsocks-libev, shadowsocks-rust)
  3. Балансировка:
    • Ingress + Load Balancer (MetalLB / AWS ELB)
  4. Мониторинг:
    • Prometheus + Grafana
  5. Автоматическое масштабирование (HPA)

Этот вариант подходит для 10 000+ пользователей, но требует дополнительных вложений (от $500 – $2 000/месяц).


Перспективы Shadowsocks на 3-5 лет

  1. Борьба с блокировками усложняется
    • Китайский файрвол уже научился блокировать Shadowsocks по пассивному анализу трафика.
    • Новые техники (TLS-обфускация, XTLS) позволяют обходить это, но ненадолго.
  2. Переход на более сложные маскировочные технологии
    • Интеграция с V2Ray / Xray / Hysteria (работа через WebSockets, QUIC).
    • Использование CDN (Cloudflare, Akamai) для сокрытия конечного сервера.
  3. Упор на децентрализацию
    • Разработка P2P-аналогов (Snowflake, Lantern).
    • Использование прокси через Tor / I2P.
  4. Давление на VPN/Proxy-технологии
    • В Китае, России и ряде стран вводятся законы против обхода блокировок.
    • Облачные провайдеры все чаще блокируют VPS с Shadowsocks.

Вывод:
Shadowsocks останется эффективным инструментом обхода цензуры, но требует постоянного обновления методов обхода DPI. В будущем он будет интегрироваться с более сложными стеками (V2Ray, Hysteria) и использовать распределенные сети для минимизации блокировок.