Что такое Shadowsocks?

Что такое Shadowsocks?

Shadowsocks это бесплатный протокол шифрования передачи данных, с открытым исходным кодом и развитый на базе технологии SOCKS5.

Данный протокол был создан в Китае для обхода великого Китайского файервола, с чем он успешно справляется.

Когда ресурс блокируется, это означает, что вы не можете получить доступ к его IP-адресу. Поэтому, когда вы пытаетесь открыть заблокированный сайт, вначале вы подключаетесь к серверу вашего интернет-провайдера, а затем к самому сайту, но безуспешно. Если вы используете прокси, то сначала подключаетесь к серверу интернет-провайдера, затем к прокси-серверу и только потом получаете доступ к сайту.

Shadowsocks основан на протоколе прокси SOCKS5, который обеспечивает защиту соединения с помощью шифра AEAD, работающего похоже как туннель SSH. AEAD считается простым видом шифрования, поэтому относится к менее безопасным.

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

Достоинства Shadowsocks

  • Легкость настройки сервера: ниже я покажу, что стандартный конфиг — это всего 5 строчек, и не нужно возни с сертификатами. Ну правда, не банковскую сеть же делаем.
  • Легкость настройки клиента. Клиенты есть под всё, не побоюсь громкого слова. Конфиг клиента — это те же 5 строчек.
  • Клиенту для работы не нужны права админа. Мало того, его можно установить из pip. То есть любой программист сможет подключиться с работы.
  • Легко настраивать доступ на уровне отдельных программ. В браузере, с помощью дополнений типа FoxyProxy/OmegaSwitchy так вообще — на уровне отдельных адресов по сложным правилам. При использовании VPN такого можно добиться только поднимая локальные прокси на каждом клиенте.
  • В отличие от VPN, который на большинстве систем реализован через виртуальную сетевую карту, клиент Shadowsocks при обрыве связи никуда не девается. Так что ваш трафик не пойдёт сам по себе незащищённым путём. Кроме того, даже если упадёт само приложение Shadowsocks, программы не будут обращаться напрямую, если только не настроены это делать. При использовании VPN приходится реализовывать kill-switch, а они, особенно под Винду, ненадёжные и с побочными эффектами.
  • По сравнению с SSH туннелем — большая пропускная способность, поддерживает тысячи клиентов с кучей соединений от каждого. SSH туннель под, например, торрентами, ощутимо грустит; кроме того, мелкие неровности сети заметно снижают его скорость. Shadowsocks-у пофиг.
  • Гоняет меньше технической инфы по соединениям, что благоприятно для батарейки мобильных устройств.
  • Есть экзотические версии серверов, написанные в виде библиотек для разных языков. То есть можно добавить сервер в свою программу для шифрования доступа своим клиентам.
  • Графическая настройка клиентов. Можно сделать QR код, при сканировании которого клиенты мобильников и винды настраиваются сами. Один клиент под винду настроили, код сгенерировали, на 20 мобильников раскидали за минуту. Можно на сайт выложить, или на стенку повесить.

Недостатки Shadowsocks

  • В отличие от OpenVPN, не проходил официального аудита. Так-то его просматривала куча народу, благо код открытый и маленький, но официально — нет.
  • Не разделяет пользователей. Можно научить слушать на нескольких портах с разными паролями, но на одном порту — один пароль. Знание пароля не позволяет (в теории) слушать другого абонента того же порта.
  • Не умеет пробрасывать порт в обратную сторону. То есть все как за NAT сидят. Придётся воспользоваться SSH туннелем, если можно.
  • Клиент для Андроида держит аж два(!) неубираемых сообщения. Если их не скрыть, это очень мешает.
  • Есть пара упёртых программ под Винду, которые не лезут в Shadowsocks, как их не настраивай. Увы, автор программы может написать открытие соединения так, чтобы игнорировать настройки прокси, и так иногда делают, когда проверяют лицензии на софт. Ниже напишу хитрый трюк, как эти программы распознать.
  • Latency соединения выше, чем у OpenVPN. Не сильно, и гамать можно, но всё же.
  • Не умеет сжимать трафик архиватором. В век HTTPS это не важно, а вот для, скажем, несжатых текстовых файлов и настоящих образов Убунты — разница есть.
  • Документацию писали китайцы, на китайском английском, с кучей пропущенных пунктов и взаимных противоречий.

Разница между Shadowsocks и VPN

Основное различие между ними состоит в том, что VPN является полностью зашифрованной сетью, в то время как Shadowsocks шифрует данные только между вами и прокси-сервером и не предоставляют вам полную анонимность в Интернете.

Shadowsocks использует TCP и HTTPS, которые не обладают таким же уровнем безопасности, что и VPN, но позволяют Shadowsocks обойти ограничения с лучшей скоростью соединения.


Поделитесь статьёй: