← Назад в базу знаний

Как работает механизм TCP/IP стека при сокрытии реального IP через SOCKS5

Как работает механизм TCP/IP стека при сокрытии реального IP через SOCKS5

Как SOCKS5 прячет ваш IP: куда девается TCP/IP стек

SOCKS5 — не магия. Это просто прокси-протокол, который перекладывает пакеты через чужую машину. Ваш реальный IP не исчезает бесследно — он просто перестаёт быть видимым для конечного сервера.

Уровни сокрытия: что видит сервер

Когда вы шлёте запрос напрямую, сервер видит ваш IP в заголовках IP-пакетов. Через SOCKS5 — видит IP прокси. Весь TCP-стек на вашей машине продолжает работать как обычно. Просто пакеты уходят не на конечный сервер, а на прокси.

Вот что происходит на каждом уровне OSI:

| Уровень OSI | Прямое соединение | Через SOCKS5 |

|------------|------------------|--------------|

| Прикладной | Ваши данные | Ваши данные |

| Транспортный | TCP/UDP | TCP/UDP (туннель) |

| Сетевой | Ваш IP | IP прокси |

| Канальный | Ваш MAC | MAC прокси |

Сервер видит только IP прокси. Всё остальное — ваши данные, протоколы прикладного уровня — остаётся нетронутым.

Как работает SOCKS5 на уровне TCP

SOCKS5 не шифрует трафик. Он просто проксирует. Разберём на примере HTTP-запроса:

Ваш клиент → SOCKS5-прокси → Целевой сервер

1. Клиент устанавливает TCP-соединение с прокси (обычно порт 1080)

2. Отправляет запрос на соединение с целевым сервером

3. Прокси устанавливает TCP-соединение с целевым сервером

4. Прокси пересылает данные между двумя TCP-соединениями

Код на Python для понимания:

```python

import socket

Шаг 1: соединение с прокси

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(('proxy_ip', 1080))

Шаг 2: рукопожатие SOCKS5

sock.send(b'\x05\x01\x00') # Версия 5, 1 метод, без аутентификации

response = sock.recv(2) # \x05\x00 - успех

Шаг 3: запрос на соединение

sock.send(b'\x05\x01\x00\x01' + socket.inet_aton('target_ip') + (80).to_bytes(2, 'big'))

response = sock.recv(10) # \x05\x00\x00\x01... - успех

Шаг 4: теперь шлём HTTP-запрос

sock.send(b'GET / HTTP/1.1\r\nHost: target.com\r\n\r\n')

data = sock.recv(4096)

```

Ваш IP остаётся внутри вашей локальной сети. Прокси видит ваш IP, но целевой сервер — нет.

Почему это не скрывает вас полностью

SOCKS5 — это как курьер. Вы передаёте письмо курьеру, он несёт его адресату. Адресат видит курьера, не вас. Но:

- Прокси знает ваш IP

- DNS-запросы могут утекать (если не настроить)

- Ваш интернет-провайдер видит, что вы соединяетесь с прокси

- Содержимое трафика не шифруется (если не использовать TLS поверх)

DNS через SOCKS5: типичная ошибка

По умолчанию SOCKS5 не проксирует DNS. Ваш клиент резолвит доменные имена локально. Это значит:

1. Вы запрашиваете DNS у своего провайдера

2. Узнаёте IP target.com

3. Соединяетесь с прокси

4. Прокси соединяется с IP target.com

Провайдер видит DNS-запрос к target.com. Это дыра. Решение — SOCKS5 с DNS-over-SOCKS или DoH/DoT поверх прокси.

На lexic.ml эта проблема решена — прокси сам резолвит DNS, не отправляя запросы от вашего имени.

TCP-стек при сокрытии: что происходит на самом деле

Ваш TCP-стек не знает, что работает через прокси. Он просто устанавливает TCP-соединение с IP прокси. Всё остальное — прикладной уровень.

Ситуация | Что видит TCP-стек на вашей машине | Что видит TCP-стек на сервере

---------|------------------------------------|-------------------------------

Прямое соединение | SYN → сервер, SYN-ACK ← сервер | SYN ← клиент, SYN-ACK → клиент

Через SOCKS5 | SYN → прокси, SYN-ACK ← прокси | SYN ← прокси, SYN-ACK → прокси

Ваш TCP-стек даже не знает о существовании конечного сервера. Он общается только с прокси.

Как проверить, что IP скрыт

```bash

Узнать свой IP через SOCKS5

curl --socks5 proxy_ip:1080 https://api.ipify.org

Сравнить с прямым запросом

curl https://api.ipify.org

```

Если IP различаются — SOCKS5 работает. Если нет — где-то косяк.

Когда SOCKS5 не спасает

SOCKS5 скрывает ваш IP от конечного сервера. Но не от:

- Вашего провайдера (видит соединение с прокси)

- Самого прокси (видит ваш IP и весь трафик)

- Систем мониторинга на уровне сети (если они анализируют паттерны трафика)

WebRTC, например, может утекать реальный IP независимо от прокси. Это особенность браузеров, а не протокола.

Практический пример с curl

```bash

Полный запрос через SOCKS5 с проксированием DNS

curl --socks5 proxy_ip:1080 \

--socks5-hostname proxy_ip:1080 \

https://example.com

Первый флаг — проксирует IP

Второй — проксирует DNS-запросы

```

Без `--socks5-hostname` DNS запросы уходят локально. С ним — через прокси.

Итог: что происходит с вашим IP

Ваш IP не исчезает. Он просто перестаёт быть видимым для конечного сервера. TCP-стек работает как обычно — устанавливает соединение, шлёт пакеты, получает подтверждения. Только адресатом становится прокси, а не конечный сервер.

SOCKS5 — это костыль для сокрытия IP, а не серебряная пуля. Он решает одну задачу: скрыть ваш IP от сервера. Всё остальное — шифрование, анонимность, защита от провайдера — требует дополнительных инструментов.

Если вам нужно именно скрыть IP — SOCKS5 работает. Если нужно что-то большее — смотрите в сторону VPN или Tor. Но помните: каждый слой защиты добавляет задержку и complexity.

✔️Купить прокси