Открыть сервис

SOCKS

SOCKS (англ. SOCKet Secure — «безопасные сокеты») — это сетевой протокол, предназначенный для передачи данных между клиентом и сервером через прокси-сервер. В отличие от HTTP-прокси, SOCKS работает на более низком уровне модели OSI (сеансовом, 5-й уровень), что позволяет ему обрабатывать трафик любых протоколов прикладного уровня (HTTP, FTP, SMTP, BitTorrent и другие), не интерпретируя его содержимое. Основная функция SOCKS — обеспечение анонимности и обхода сетевых ограничений путём перенаправления запросов клиента через промежуточный узел.

История

Протокол SOCKS был разработан в начале 1990-х годов инженером Дэвидом Кобласом (David Koblas) из компании MIPS Computer Systems. Первоначально он предназначался для организации доступа к внутренним ресурсам корпоративной сети через межсетевые экраны (firewalls). В 1992 году Коблас опубликовал исходный код реализации SOCKS, что способствовало его распространению.

В 1996 году инженером Инженерного совета Интернета (IETF) Маркусом Личем (Marcus Leech) была подготовлена спецификация SOCKS версии 4 (RFC 1928). Версия 4 поддерживала только TCP-соединения и не предусматривала аутентификацию. В 1998 году вышла версия 5 (SOCKS5), описанная в RFC 1928, RFC 1929 и RFC 1961, которая добавила поддержку UDP, аутентификацию (включая GSS-API и username/password) и расширенные возможности адресации (IPv6, доменные имена). SOCKS5 стал стандартом де-факто для проксирования.

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

SOCKS-прокси работает как посредник между клиентом и целевым сервером. Процесс взаимодействия включает несколько этапов:

  1. Установление соединения: Клиент (например, браузер или торрент-клиент) подключается к SOCKS-прокси по определённому порту (по умолчанию — 1080).
  2. Согласование версии и аутентификация: Клиент и прокси обмениваются версиями протокола (SOCKS4 или SOCKS5) и, при необходимости, данными аутентификации (логин/пароль).
  3. Запрос на подключение: Клиент отправляет прокси запрос, содержащий IP-адрес или доменное имя целевого сервера и номер порта.
  4. Перенаправление трафика: Прокси устанавливает соединение с целевым сервером от своего имени и передаёт данные между клиентом и сервером, не изменяя их содержимое.

При использовании UDP-трафика (только в SOCKS5) прокси выступает в роли ретранслятора, перенаправляя дейтаграммы между клиентом и сервером.

Версии протокола

SOCKS4

  • Поддерживает только TCP.
  • Не поддерживает аутентификацию.
  • Не поддерживает IPv6 и доменные имена (только IPv4-адреса).
  • Используется редко, в основном в устаревших системах.

SOCKS5

  • Поддерживает TCP и UDP.
  • Поддерживает аутентификацию (включая username/password и GSS-API).
  • Поддерживает IPv4, IPv6 и доменные имена.
  • Обеспечивает более высокую гибкость и безопасность.
  • Является стандартом для современных прокси-серверов.

Применение

SOCKS-прокси широко используются в различных сценариях:

  • Обход блокировок: Позволяет пользователям из стран с цензурируемым интернетом (например, Китай, Иран) получать доступ к заблокированным сайтам и сервисам.
  • Анонимность: Скрывает реальный IP-адрес клиента, заменяя его на IP-адрес прокси-сервера. При этом прокси не шифрует трафик, поэтому для полной анонимности рекомендуется использовать SOCKS5 в сочетании с VPN или шифрованием на прикладном уровне (например, HTTPS).
  • Работа с торрентами: SOCKS5 поддерживает UDP, что необходимо для работы протокола BitTorrent (DHT, uTP). Многие торрент-клиенты (qBittorrent, Transmission) поддерживают SOCKS5.
  • Доступ к корпоративным ресурсам: Используется для подключения удалённых сотрудников к внутренним сетям компаний через межсетевые экраны.
  • Игровые серверы: Некоторые игры (например, World of Warcraft) позволяют использовать SOCKS5 для снижения задержек или обхода региональных ограничений.

SOCKS vs HTTP-прокси

ХарактеристикаSOCKS (SOCKS5)HTTP-прокси
Уровень OSIСеансовый (5)Прикладной (7)
Поддерживаемые протоколыЛюбые (TCP/UDP)HTTP, HTTPS
АутентификацияДа (SOCKS5)Да (Basic, Digest)
ШифрованиеНет (только передача)Нет (по умолчанию)
КэшированиеНетЧасто поддерживается
СкоростьВыше (нет разбора пакетов)Ниже (разбор HTTP-заголовков)
UDPДа (SOCKS5)Нет

SOCKS-прокси, как правило, быстрее HTTP-прокси, так как не анализирует содержимое пакетов, но не поддерживает кэширование веб-страниц, что может быть полезно для HTTP-прокси.

Безопасность и анонимность

SOCKS-прокси не шифрует трафик между клиентом и прокси-сервером. Это означает, что данные передаются в открытом виде, и их могут перехватить злоумышленники или провайдер. Для обеспечения конфиденциальности рекомендуется использовать SOCKS5 в сочетании с VPN-туннелем (например, OpenVPN) или протоколами шифрования на прикладном уровне (HTTPS, SSH).

Анонимность, предоставляемая SOCKS, ограничена: прокси-сервер видит реальный IP-адрес клиента, а целевой сервер — IP-адрес прокси. Если прокси-сервер ведёт логи, анонимность может быть скомпрометирована. Для повышения анонимности используются цепочки прокси (SOCKS-цепи) или анонимные сети (Tor, I2P).

Реализации

Существует множество программных реализаций SOCKS-серверов и клиентов:

  • Серверы: Dante (популярный SOCKS5-сервер для Linux/Unix), Shadowsocks (использует SOCKS5 для обхода блокировок), 3proxy (кроссплатформенный прокси-сервер), WinGate (для Windows).
  • Клиенты: Встроенная поддержка SOCKS есть во многих браузерах (Firefox, Chrome), торрент-клиентах (qBittorrent, uTorrent), мессенджерах (Telegram, IRC) и системных настройках Windows/Linux/macOS.
  • Библиотеки: Для разработчиков доступны библиотеки для работы с SOCKS на различных языках (Python: PySocks, socksipy; C/C++: libsocks; Java: SocksSocket).

Интересные факты

  • Название «SOCKS» не является аббревиатурой, хотя иногда расшифровывается как «SOCKet Secure». Изначально протокол назывался просто «Socks» (носки), что отсылало к идее «надевать» прокси на сокеты.
  • SOCKS5 поддерживает «bind-режим», который позволяет серверу инициировать обратное соединение с клиентом. Это используется, например, в FTP в активном режиме.
  • Протокол SOCKS лёг в основу технологии Tor (The Onion Router), где каждый узел (onion-роутер) работает как SOCKS-прокси, обеспечивая многослойное шифрование и анонимность.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →