Введение: основа и её уязвимости
TCP (Transmission Control Protocol) — это «стандартная транспортная магистраль» интернета. Он является транспортным уровнем по умолчанию практически для всего надёжного интернет-трафика: веб-серфинга (HTTPS), защищённых подключений (SSH), потокового видео, передачи файлов. Если вы пользуетесь интернетом — вы используете TCP. Когда вы настраиваете V2Ray без явного указания транспорта, он по умолчанию использует именно этот стандартный протокол.
Понимание TCP критически важно, потому что он задаёт базовый уровень как производительности, так и скрытности. Несмотря на высокую надёжность и гарантированную целостность данных, TCP проектировался для открытой и дружественной интернет-среды. Он не создавался для сокрытия трафика от современных систем цензуры. Его предсказуемость и строгость делают его лёгкой целью для обнаружения и блокировки.
Раздел 1: Предсказуемость «чистого» TCP
Даже если ваши данные надёжно скрыты внутри защищённого контейнера V2Ray (с использованием шифрования VMess или VLESS), «грузовик», который везёт этот контейнер (TCP), движется строго определённым и узнаваемым образом. Продвинутые системы цензуры, известные как Deep Packet Inspection (DPI), пытаются не столько заглянуть внутрь контейнера, сколько анализируют поведение самого «грузовика»: его движение, размеры пакетов и тайминги.
1. «Трёхстороннее рукопожатие» (стук в дверь)
Перед началом передачи данных TCP требует строгой процедуры установки соединения — Three-Way Handshake. Это формальное приветствие:
- SYN: клиент говорит: «Я хочу подключиться».
- SYN-ACK: сервер отвечает: «Хорошо, подключаемся».
- ACK: клиент подтверждает: «Отлично, соединение установлено».
Проблема: это рукопожатие имеет очень характерные тайминги и размеры пакетов. Если файрвол видит такой шаблон на нестандартном порту (например, 10086 вместо обычного веб-порта 443), он сразу помечает соединение как подозрительное. Это похоже на формальный стук в чёрный ход банка — выглядит неуместно.
2. Блокировка по головному пакету (Head-of-Line Blocking)
TCP строго соблюдает порядок. Он гарантирует, что данные будут доставлены ровно в той последовательности, в какой были отправлены. Пакет №1 должен быть получен и обработан до пакета №2.
Аналогия: представьте однополосный тоннель. Если первая машина ломается (потеря пакета), все машины позади вынуждены остановиться и ждать. Даже если остальные машины полностью исправны — движение заблокировано, пока первая не поедет.
Результат: в плохой или перегруженной сети потеря всего одного пакета может «заморозить» видеопоток, игру или загрузку, пока V2Ray ждёт повторной передачи этого пакета. Это явление называется Head-of-Line Blocking (HOLB) и является основной причиной медленных и дёрганых соединений в нестабильных сетях.
3. Статистический отпечаток трафика
Обычный веб-серфинг носит «пакетный» характер: вы нажали ссылку — приходит всплеск данных для загрузки страницы, затем наступает тишина, пока вы читаете. Туннели V2Ray же часто выглядят как длинный, непрерывный и равномерный поток данных — подобно длительной загрузке файла или видеозвонку. Такое «долгоживущее соединение» хорошо заметно для современных файрволов, которые могут обнаружить его и ограничить или заблокировать исключительно по статистическому профилю.
Раздел 2: Базовая TCP-маскировка в V2Ray (HTTP-заголовок)
Чтобы скрыть «голое» TCP-соединение от простых фильтров, V2Ray предлагает примитивную маскировку — Header Obfuscation. Это похоже на надевание костюма на пакеты данных. В начало соединения добавляется фиктивная информация, создающая видимость обычного посещения веб-сайта.
Настройка tcpSettings
Эта конфигурация размещается внутри блока streamSettings для Inbound (на сервере) или Outbound (на клиенте).
| Параметр | Тип | Описание | Назначение |
|---|---|---|---|
network | "tcp" | Использовать стандартный TCP как транспорт | Основа, на которую накладывается маскировка |
security | "none" | Не добавлять слой TLS | Используется шифрование VMess/VLESS и HTTP-маска |
type | "http" | Тип маскировки | Имитирует HTTP-запрос |
request | object | Детали «костюма» (фейковый хост, User-Agent) | Делает трафик похожим на легитимный для простых фильтров |
Практический пример: TCP с HTTP-маскировкой
В этом примере V2Ray «переодевает» соединение под браузер Chrome на Windows, посещающий www.google.com.
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"header": {
"type": "http",
"request": {
"version": "1.1",
"method": "GET",
"path": ["/"],
"headers": {
"Host": ["www.google.com", "www.amazon.com"],
"User-Agent": [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
],
"Accept-Encoding": ["gzip, deflate"],
"Connection": ["keep-alive"],
"Pragma": "no-cache"
}
}
}
}
}
Почему это (почти) устарело
Ранее этот метод работал, но современные файрволы используют активное зондирование (Active Probing). Увидев заголовок Host: www.google.com, файрвол может сам подключиться к вашему серверу и спросить: «Ты действительно Google?» Когда сервер V2Ray не отвечает как настоящий сервер Google, соединение мгновенно распознаётся как поддельное и блокируется. Для обхода продвинутой цензуры этот метод больше не надёжен.
Раздел 3: Как проверить TCP-конфигурацию
Прежде чем переходить к более сложным схемам, важно убедиться, что базовая TCP-настройка работает.
Проверка на сервере: на VPS просмотрите логи V2Ray (journalctl -u v2ray -f или /var/log/v2ray/access.log). При попытке подключения клиента должны появляться записи об успешных входящих соединениях. Если лог пуст — возможно, порт блокируется файрволом (UFW/iptables).
Проверка на клиенте: в логах клиента V2Ray ищите сообщения об успешном установлении соединения и завершении рукопожатия.
Тест через Telnet: с домашнего компьютера выполните:
telnet your.server.ip.address 10086
Успех: экран становится пустым или появляется сообщение «Connected».
Ошибка: «Connection Refused» или тайм-аут — значит, TCP-трафик блокируется.
Раздел 4: Когда использовать TCP (и когда от него отказаться)
Несмотря на недостатки, TCP всё ещё полезен в определённых сценариях.
Используйте «чистый» TCP, когда:
- Первичная настройка и отладка: это самая простая база. Если VMess+TCP не работает, нет смысла добавлять WebSocket или TLS. Всегда начинайте с TCP.
- Отсутствие цензуры: если вы находитесь в стране без интернет-фильтрации и вам нужен просто приватный туннель (VPN) для защиты данных в публичном Wi-Fi.
- Релей-серверы: при соединении сервер-сервер (например, внутренний сервер пересылает трафик на зарубежный VPS) TCP часто быстрее и стабильнее, так как имеет меньшие накладные расходы.
Избегайте «чистого» TCP, когда:
- Жёсткая цензура: в странах с продвинутыми государственными файрволами (Китай, Иран, Россия) TCP обнаруживается и блокируется почти мгновенно.
- Использование CDN: нельзя спрятать «сырой» TCP за CDN (например, Cloudflare). CDN работают только с HTTP-протоколами, такими как WebSocket.
- Нестабильные сети: в плохом Wi-Fi или мобильных сетях HOLB делает соединение очень медленным, с постоянными паузами и буферизацией.
Заключение
«Чистый» TCP — это «ванильный» вариант транспортов V2Ray. Он прост и надёжен в хороших условиях, но совершенно не скрытен и легко обнаружим. Для современного, устойчивого к блокировкам прокси необходимо переходить к продвинутым транспортам, которые лучше маскируются под легитимный трафик.
Далее: в статье 12 мы перейдём к самому популярному инструменту обхода — V2Ray WebSocket Transport — и разберём, почему он стал современным стандартом для скрытности и интеграции с CDN.