Найти тему

Shadowsocks против VPN. Как работает Shadowsocks под капотом?

Shadowsocks и VPN (Virtual Private Network) — это два разных инструмента, используемых для обхода интернет-цензуры и обеспечения приватности в сети.

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

1. Основное назначение

  • VPN:

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

  • Shadowsocks:

Это прокси-протокол на основе SOCKS5, разработанный специально для обхода интернет-цензуры (например, "Великого китайского фаервола"). Shadowsocks был создан с целью быть менее заметным и труднодоступным для блокировки по сравнению с VPN. Его основное назначение — скрыть интернет-трафик пользователя и обойти цензуру, при этом не обеспечивая полную защиту приватности, как это делают VPN.

2. Принцип работы

  • VPN:

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

  • Shadowsocks:

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

3. Пропускная способность и скорость

  • VPN:

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

  • Shadowsocks:

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

4. Безопасность

  • VPN:

VPN предлагает высокий уровень безопасности. Он шифрует весь трафик между вашим устройством и VPN-сервером, что обеспечивает защиту от перехвата данных, особенно в небезопасных публичных сетях, таких как Wi-Fi в кафе или аэропортах. Сильные протоколы шифрования (например, OpenVPN, WireGuard) делают ваши данные практически неуязвимыми для взлома.

  • Shadowsocks:

Shadowsocks предлагает базовое шифрование (чаще всего AES), но его основная цель — обойти цензуру, а не обеспечить максимальную безопасность. В некоторых сценариях безопасности Shadowsocks может быть менее надежен, чем VPN, особенно если вы хотите защититься от сложных атак или перехватов данных.

5. Обнаружение и блокировка

  • VPN:

VPN-сервисы могут легко блокироваться правительствами или интернет-провайдерами, особенно если они используют известные IP-адреса серверов. Некоторые страны, такие как Китай и Иран, активно блокируют трафик VPN. Несмотря на попытки ряда VPN-сервисов обходить такие блокировки, использование VPN в этих странах может быть затруднено.

  • Shadowsocks:

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

6. Конфиденциальность

  • VPN:

В случае с VPN ваша конфиденциальность зависит от политики провайдера. Если VPN-провайдер ведет логи или передает данные третьим лицам, ваша конфиденциальность может быть под угрозой. Многие надежные VPN-сервисы заявляют о политике "No Logs" (отсутствие ведения журналов), что гарантирует, что ваша активность в интернете не отслеживается.

  • Shadowsocks:

Shadowsocks не обеспечивает такой же уровень приватности, как VPN. Поскольку это всего лишь прокси, он не скрывает все ваши действия в интернете и не предоставляет защиты от слежки со стороны провайдеров. Он лучше всего подходит для ситуаций, когда основная цель — обойти блокировки, а не обеспечить полную анонимность.

7. Использование и настройка

  • VPN:

VPN-сервисы обычно просты в использовании. Большинство провайдеров предлагают готовые к использованию приложения для различных платформ, таких как Windows, macOS, Android и iOS. Пользователю необходимо просто установить приложение, выбрать сервер и подключиться.

  • Shadowsocks:

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

8. Заключение: Когда выбрать VPN, а когда Shadowsocks?

  • Используйте VPN, если:

1. Вам нужен высокий уровень безопасности и конфиденциальности.

2. Вы хотите скрыть всю свою интернет-активность от интернет-провайдеров.

3. Вам нужно обойти геоограничения для доступа к потоковым сервисам (например, Netflix).

4. Вы хотите защитить свои данные в публичных Wi-Fi сетях.

  • Используйте Shadowsocks, если:

1. Вы живете в стране с жесткой интернет-цензурой (например, Китай) и вам нужно скрывать свои действия в интернете от фаерволов.

2. Вам важна высокая скорость соединения.

3. Ваш основной приоритет — обход блокировок, а не максимальная конфиденциальность.

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

Как работает Shadowsocks под капотом?

Shadowsocks работает следующим образом:

-2

1. Архитектура "Клиент-Сервер"

Shadowsocks использует архитектуру клиент-сервер:

  • Клиент: Устанавливается на устройстве пользователя и перенаправляет его трафик через прокси-сервер.
  • Сервер: Находится в свободном от цензуры регионе и передает запросы от клиента в глобальную сеть.

2. Шифрование

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

Поддерживаются различные алгоритмы шифрования, такие как:

  • AES (Advanced Encryption Standard),
  • ChaCha20,
  • И другие.

Когда клиент устанавливает соединение с сервером, данные шифруются на стороне клиента и передаются на сервер, где они расшифровываются и перенаправляются на нужные веб-ресурсы. Ответы от веб-ресурсов проходят тот же процесс, но наоборот.

3. Протокол SOCKS5

Shadowsocks работает на основе протокола SOCKS5 — это сетевой протокол, который позволяет клиентам пересылать запросы через прокси-сервер.

SOCKS5 поддерживает как TCP, так и UDP передачи данных. В Shadowsocks используется модифицированная версия этого протокола.

4. Обфускация (Masked Proxy)

Одной из ключевых особенностей Shadowsocks является обфускация трафика. Это значит, что трафик выглядит как обычный зашифрованный трафик HTTPS, что делает его сложным для обнаружения и блокировки.

В отличие от многих классических VPN-технологий, Shadowsocks не создает видимого туннеля, который легко можно заблокировать по его сигнатуре. Таким образом, Shadowsocks становится менее заметным для систем DPI (Deep Packet Inspection), которые могут использоваться для блокировки VPN-соединений.

5. Процесс соединения

1. Инициализация клиента:

Клиент настраивается на использование Shadowsocks-сервера для передачи трафика.

Для начала, пользователь должен настроить своего клиента Shadowsocks. Это включает несколько параметров:

  • Адрес сервера: IP-адрес или доменное имя прокси-сервера Shadowsocks.
  • Порт: Порт, через который будет установлено соединение.
  • Пароль: Используется для аутентификации и шифрования трафика.
  • Метод шифрования: Выбирается алгоритм шифрования (например, AES-256-GCM или ChaCha20).

Пример настройки клиента на компьютере:

-3
  • server: IP-адрес сервера Shadowsocks (например, 123.45.67.89).
  • server_port: Порт на сервере, который принимает запросы (в нашем примере это порт 8388).
  • local_port: Порт на локальном устройстве, через который приложение будет перенаправлять трафик (например, 1080).
  • password: Пароль для шифрования.
  • method: Алгоритм шифрования (например, aes-256-gcm).

После этого клиент начинает слушать на локальном порту (в данном случае 1080), и все запросы, направленные через этот порт, будут передаваться через Shadowsocks-сервер.

2. DNS-запрос:

Когда клиентское приложение (например, браузер) пытается получить доступ к какому-либо ресурсу, например, example.com, ему сначала нужно разрешить доменное имя в IP-адрес через DNS.

Если Shadowsocks настроен правильно, то все DNS-запросы перенаправляются через Shadowsocks-сервер, чтобы избежать утечки данных через DNS-провайдеров, находящихся под цензурой.

Пример:

  • Браузер запрашивает example.com.
  • Shadowsocks пересылает этот запрос на сервер, который выполняет DNS-запрос от имени клиента.
  • Сервер получает IP-адрес, например, 93.184.216.34, и передает его обратно клиенту.

3. Прозрачность для приложений:

После настройки всё сетевое взаимодействие для приложений перенаправляется через локальный порт, на котором работает Shadowsocks. Это делается с помощью прокси-протокола SOCKS5, который поддерживается многими приложениями (например, браузерами). Приложения фактически не знают, что их трафик проходит через прокси-сервер; для них это выглядит как стандартное сетевое взаимодействие.

Пример:

  • Пользователь вводит URL https://example.com в браузере.
  • Браузер отправляет запрос через прокси (локальный порт 1080).
  • Shadowsocks-клиент перехватывает запрос и шифрует данные.

4. Передача данных:

Когда клиент отправляет данные через Shadowsocks, они сначала шифруются с использованием настроенного алгоритма шифрования (например, AES-256-GCM). Далее, уже зашифрованные данные передаются на Shadowsocks-сервер через TCP или UDP.

Пример:

  • Клиентский запрос на получение страницы с example.com (например, HTTP-запрос) шифруется с помощью AES-256-GCM.
  • Получив зашифрованный запрос, Shadowsocks-клиент отправляет его на сервер по сети.

Шифрованный запрос может выглядеть как поток случайных данных, что затрудняет его анализ для DPI-систем.

5. Обработка на сервере

Когда зашифрованный запрос достигает Shadowsocks-сервера:

  • Сервер расшифровывает данные с использованием того же алгоритма и пароля, который был настроен на клиенте.
  • После расшифровки сервер видит реальный запрос (например, GET-запрос к example.com).

Затем Shadowsocks-сервер отсылает запрос к конечной точке назначения (например, веб-серверу example.com), как обычный клиент из интернета.

Пример:

  • Shadowsocks-сервер получает зашифрованный пакет от клиента.
  • Сервер расшифровывает его и видит HTTP-запрос: GET / HTTP/1.1 Host: example.com.
  • Сервер отправляет этот запрос на реальный веб-сервер example.com через открытую сеть.

6. Получение ответа сервером и его шифрование

Когда веб-сервер example.com отправляет ответ (например, HTML-код страницы), Shadowsocks-сервер получает этот ответ и повторяет процесс в обратном порядке:

  • Сервер шифрует данные с использованием того же алгоритма, который использовался для шифрования запроса.
  • Зашифрованные данные отправляются обратно клиенту.

Пример:

  • Веб-сервер example.com отвечает серверу Shadowsocks, отправляя HTML-страницу.
  • Shadowsocks-сервер шифрует ответную страницу с использованием AES-256-GCM и отправляет её обратно клиенту.

7. Получение ответа клиентом и его расшифровка

Когда зашифрованные данные доходят обратно до клиента, Shadowsocks-клиент выполняет следующие действия:

  • Расшифровывает полученные данные с использованием того же алгоритма шифрования.
  • Передает расшифрованные данные обратно в браузер или другое приложение, как если бы они пришли напрямую от веб-сервера.

Пример:

  • Shadowsocks-клиент получает зашифрованный ответ от сервера.
  • Он расшифровывает данные и получает HTML-страницу с example.com.
  • HTML-страница передается в браузер, который её рендерит, и пользователь видит содержимое.

6. Поддержка различных платформ

Shadowsocks поддерживает различные операционные системы и платформы, включая Windows, macOS, Linux, iOS, Android и роутеры. Это делает его гибким инструментом для обхода цензуры.

7. Модификации и расширения

Shadowsocks имеет несколько форков и модификаций, которые добавляют дополнительные функции, такие как улучшенная обфускация, поддержка мультиплексирования соединений и другие расширенные функции. Например:

  • ShadowsocksR (SSR): Модифицированная версия оригинального Shadowsocks с дополнительными функциями для улучшения обхода блокировок и защиты от DPI.

Преимущества Shadowsocks:

  • Скорость: Меньший оверхед по сравнению с традиционными VPN, что даёт лучшее качество соединения.
  • Обход цензуры: Более гибок и менее заметен для систем, отслеживающих сетевой трафик.
  • Безопасность: Использует современные шифровальные алгоритмы для защиты данных.

Недостатки:

  • Отсутствие полной анонимности: Shadowsocks не предоставляет такой же уровень анонимности, как VPN или Tor. Он защищает данные, но не маскирует IP-адрес клиента от сервера, к которому идёт запрос.
  • Не предназначен для всех случаев использования: Shadowsocks предназначен в первую очередь для обхода цензуры, а не для защиты от слежки или полной приватности.

Заключение

Shadowsocks — это легковесное, но мощное решение для обхода интернет-цензуры, предоставляющее высокую производительность и защиту данных.

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

Давайте посмотрим на упрощённый пример полного цикла от начала до конца.

1. Клиентский запрос:

Пользователь вводит в браузере https://example.com.
Браузер пытается выполнить DNS-запрос через Shadowsocks, чтобы получить IP-адрес сайта.

2. Шифрование и передача:

Shadowsocks-клиент шифрует запрос на получение страницы и отправляет его на сервер Shadowsocks.

3. Серверная часть:

Сервер Shadowsocks расшифровывает запрос и передает его на сайт example.com.
Сайт отправляет HTML-ответ на запрос.

4. Обратная передача:

Shadowsocks-сервер шифрует HTML-ответ и отправляет его обратно клиенту.

5. Расшифровка и отображение:

Клиент расшифровывает данные и передает их в браузер.
Браузер отображает страницу пользователю.

Итог:

Весь этот процесс происходит в реальном времени, и конечный пользователь практически не замечает задержек. Shadowsocks обеспечивает, чтобы весь трафик был безопасно шифрован, а также обфусцирован, чтобы не привлекать внимание систем фильтрации трафика.

Раз вы прочитали эту статью, скорее всего вам будет интересен весь раздел про Анонимность в сети.

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам