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-прокси работает как посредник между клиентом и целевым сервером. Процесс взаимодействия включает несколько этапов:
- Установление соединения: Клиент (например, браузер или торрент-клиент) подключается к SOCKS-прокси по определённому порту (по умолчанию — 1080).
- Согласование версии и аутентификация: Клиент и прокси обмениваются версиями протокола (SOCKS4 или SOCKS5) и, при необходимости, данными аутентификации (логин/пароль).
- Запрос на подключение: Клиент отправляет прокси запрос, содержащий IP-адрес или доменное имя целевого сервера и номер порта.
- Перенаправление трафика: Прокси устанавливает соединение с целевым сервером от своего имени и передаёт данные между клиентом и сервером, не изменяя их содержимое.
При использовании 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 →


