habrahabr

Протокол VLESS: Как он обходит цензуру в России и почему это работает

  • четверг, 6 ноября 2025 г. в 00:00:09
https://habr.com/ru/articles/963022/

В 2025 году интернет-цензура в России, Китае и Иране достигла беспрецедентного уровня. Традиционные VPN-протоколы вроде OpenVPN и даже WireGuard обнаруживаются и блокируются системами Deep Packet Inspection (DPI) за считанные секунды. На сцену выходит VLESS — легковесный протокол, который становится последним работающим решением для обхода современной цензуры.

Эта статья объясняет, как работает VLESS на техническом уровне, почему он так эффективен в обходе обнаружения, и делится реальным опытом создания VPN-сервиса во враждебной среде России.

Что такое VLESS и почему это важно

VLESS (Very Lightweight Encryption Security Stream) — это протокол, разработанный проектом V2Ray как эволюция VMess. В отличие от традиционных VPN-протоколов, созданных для приватности и скорости, VLESS изначально проектировался с одной единственной целью: полная невидимость для систем Deep Packet Inspection.

Ключевая инновация — радикальная простота. В то время как OpenVPN добавляет более 100 байт служебных данных к каждому пакету, VLESS добавляет всего 25-50 байт. Что еще важнее — эти байты не содержат отличительных паттернов, которые DPI мог бы распознать.

Техническая реальность: Как работают системы цензуры

Чтобы понять, почему VLESS побеждает там, где другие терпят неудачу, нужно разобраться, как на самом деле работает современная цензура. Российская система ТСПУ (Технические средства противодействия угрозам) использует три основных метода обнаружения.

Фингерпринтинг протоколов — первая линия защиты. Каждый VPN-протокол имеет характерное рукопожатие. OpenVPN, например, начинает каждое соединение с узнаваемого паттерна:

Opcode: P_CONTROL_HARD_RESET_CLIENT_V2
Session ID: [random 8 bytes]
Packet ID: 0x00000001
Message packet-ID: [4 bytes]

Даже если полезная нагрузка зашифрована, структура заголовка постоянна для всех OpenVPN-соединений. DPI-системы могут обнаружить это с почти идеальной точностью. У WireGuard похожая проблема с сообщением инициации рукопожатия, которое всегда начинается с поля типа 0x01, за которым следует индекс отправителя.

Статистический анализ трафика — второй метод. Даже если вы не можете прочитать содержимое, можно анализировать паттерны. WireGuard отправляет пакеты с предсказуемыми интервалами и постоянными размерами. Shadowsocks имеет характерный паттерн маленьких управляющих пакетов, за которыми следуют большие пакеты данных. Модели машинного обучения, обученные на этих паттернах, могут идентифицировать VPN-трафик с точностью 80-95%.

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

Как VLESS побеждает все три метода обнаружения

Архитектура VLESS гениально проста. Весь заголовок протокола выглядит так:

[Version: 1 байт] = 0x00
[UUID: 16 байт] = идентификатор клиента
[AddInfo Length: 1 байт] = длина дополнительной информации
[AddInfo: переменная] = опциональные метаданные
[Command: 1 байт] = 0x01 для TCP, 0x02 для UDP
[Port: 2 байта] = порт назначения
[AddrType: 1 байт] = 0x01 IPv4, 0x02 домен, 0x03 IPv6
[Address: переменная] = адрес назначения

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

VLESS оборачивает всё в стандартный TLS 1.3. Фактическое установление соединения выглядит идентично доступу к любому HTTPS-сайту:

Client → Server: ClientHello
  - TLS версия: 1.3
  - Cipher suites: [стандартные браузерные шифры]
  - SNI: cloudflare.com (или любой легитимный домен)
  - ALPN: h2, http/1.1

Server → Client: ServerHello
  - Выбранный шифр: TLS_AES_128_GCM_SHA256
  - Сертификат: [валидный Let's Encrypt сертификат]

[TLS 1.3 зашифрованное рукопожатие завершается]

[Application Data] ← VLESS протокол спрятан здесь

Для DPI-системы это неотличимо от обычного браузинга сайта. Нет сигнатур протокола для обнаружения. Статистические паттерны совпадают с обычным HTTPS-трафиком, потому что это и есть обычный HTTPS-трафик, просто с VPN-данными внутри.

Реальность в России: Октябрь 2025, массовая блокировка протоколов

Я управляю VPN-инфраструктурой в России с 2020 года, и октябрь 2025 стал переломным моментом. Вот что на самом деле произошло с каждым протоколом.

OpenVPN пал первым, годы назад. Процент обнаружения сейчас 100% в течение 30 секунд после подключения. DPI-системы годами совершенствовали свой фингерпринтинг.

WireGuard продержался дольше благодаря современной криптографии, но статистический анализ догнал его. К середине 2024 соединения начали троттлиться до непригодных скоростей в течение минут, затем блокировались полностью. Текущий процент обнаружения: 100%.

Shadowsocks был рабочей лошадкой годами. Оригинальная реализация была заблокирована, затем люди добавили плагины обфускации. Они работали до сентября 2024, когда Россия развернула обновленные DPI-сигнатуры. Теперь даже сильно обфусцированный Shadowsocks обнаруживается в течение часов. Процент обнаружения: 95%.

Trojan считался "необнаружимым" протоколом, потому что хорошо имитировал HTTPS. Он работал идеально до августа 2025, когда активное зондирование стало массовым. Проблема в том, что Trojan-серверы отвечают на невалидные запросы характерным образом. Как только DPI-системы начали активно зондировать подозрительные серверы, прикрытие Trojan было сорвано. Процент обнаружения: 90%.

VMess был последней надеждой перед VLESS. Это оригинальный протокол V2Ray с сильным шифрованием и TLS-оберткой. Он отлично работал до сентября 2025, когда новые DPI-обновления специально нацелились на него. Проблема в том, что VMess имеет характерную структуру пакетов даже в TLS-обертке. Тайминг между пакетами и распределение размеров выдавали его. Процент обнаружения: 80%.

VLESS — единственный протокол, всё ещё работающий надежно. Я запускаю VLESS-серверы с января 2025, и выживаемость впечатляет. С правильной конфигурацией (TLS + WebSocket + CDN) процент обнаружения менее 5%. Серверы, которые были бы заблокированы за дни с другими протоколами, работают уже 10 месяцев подряд.

Реальная конфигурация VLESS для продакшена

Вот production-grade конфигурация VLESS-сервера, которая реально работает в России:

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [{
    "port": 443,
    "protocol": "vless",
    "settings": {
      "clients": [{
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "level": 0,
        "email": "user@example.com"
      }],
      "decryption": "none",
      "fallbacks": [{
        "dest": 8080,
        "xver": 1
      }]
    },
    "streamSettings": {
      "network": "ws",
      "security": "tls",
      "wsSettings": {
        "path": "/api/v1/stream",
        "headers": {
          "Host": "example.com"
        }
      },
      "tlsSettings": {
        "serverName": "example.com",
        "certificates": [{
          "certificateFile": "/etc/letsencrypt/live/example.com/fullchain.pem",
          "keyFile": "/etc/letsencrypt/live/example.com/privkey.pem"
        }],
        "minVersion": "1.3",
        "cipherSuites": [
          "TLS_AES_128_GCM_SHA256",
          "TLS_AES_256_GCM_SHA384",
          "TLS_CHACHA20_POLY1305_SHA256"
        ],
        "alpn": ["h2", "http/1.1"]
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  }]
}

Критические детали здесь — WebSocket path, который выглядит как легитимный API endpoint, fallback на порт 8080 (где должен работать реальный веб-сервер), и TLS 1.3 конфигурация, совпадающая с тем, что используют современные браузеры.

Почему интеграция с CDN обязательна

Запуск VLESS на голом IP-адресе — самоубийство. Даже с идеальной маскировкой протокола, IP-блокировка рано или поздно вас поймает. Решение — интеграция с CDN, конкретно с Cloudflare.

Архитектура выглядит так:

Пользователь → Cloudflare CDN → Origin сервер (VLESS)

Пользователь подключается к IP-адресам Cloudflare, которые используются миллионами легитимных сайтов. DPI-система видит HTTPS-трафик к Cloudflare. Заблокировать его значило бы сломать половину интернета. Cloudflare затем проксирует соединение к вашему origin-серверу, который может быть где угодно в мире.

Конфигурация требует настройки "оранжевого облака" Cloudflare и использования WebSocket-транспорта. Вот конфигурация Nginx, которая стоит перед V2Ray:

server {
    listen 8080;
    server_name example.com;
    
    location /api/v1/stream {
        proxy_pass http://127.0.0.1:10000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 3600s;
    }
    
    location / {
        root /var/www/html;
        index index.html;
    }
}

Fallback location отдает реальный сайт, поэтому если кто-то зайдет на ваш домен браузером, он увидит легитимный контент. Только запросы к конкретному WebSocket path проксируются к V2Ray.

Мой путь: Создание MegaV VPN во враждебной среде

Я начал создавать MegaV VPN в 2020 году, изначально просто для личного использования. В то время Shadowsocks работал нормально. Потом перестал. Переключился на Trojan — та же история через несколько месяцев. Попробовал VMess — заблокирован в сентябре.

Каждый раз, когда протокол блокировался, приходилось всё перестраивать. Перенастраивать серверы, обновлять клиенты, объяснять пользователям что случилось. Это было изнурительно и неустойчиво.

Прорыв случился, когда я понял, что проблема не в конкретном протоколе, а в зависимости от одного протокола. Решение — агностицизм протоколов с автоматическим переключением.

Архитектура MegaV поддерживает несколько протоколов одновременно. Клиент сначала пробует VLESS (потому что он работает в 98% случаев). Если не получается, автоматически переключается на VMess, затем Shadowsocks, затем Trojan. Пользователь никогда не видит сложности, он просто остается подключенным.

Реализация использует простую систему проверки здоровья:

class ProtocolManager:
    def __init__(self):
        self.protocols = [
            {'name': 'vless', 'priority': 1, 'status': 'unknown'},
            {'name': 'vmess', 'priority': 2, 'status': 'unknown'},
            {'name': 'shadowsocks', 'priority': 3, 'status': 'unknown'},
            {'name': 'trojan', 'priority': 4, 'status': 'unknown'}
        ]
    
    def check_protocol(self, protocol: dict) -> bool:
        """Проверяет работает ли протокол"""
        try:
            result = self.test_connection(protocol['name'], timeout=5)
            protocol['status'] = 'working' if result else 'blocked'
            return result
        except Exception:
            protocol['status'] = 'blocked'
            return False
    
    def get_best_protocol(self) -> str:
        """Возвращает работающий протокол с наивысшим приоритетом"""
        for protocol in sorted(self.protocols, key=lambda x: x['priority']):
            if self.check_protocol(protocol):
                return protocol['name']
        
        return 'emergency'

Каждые 5 минут клиент проверяет все протоколы и обновляет их статус. Если текущий протокол падает, он мгновенно переключается на следующий работающий. Пользователи не испытывают отключений, только кратковременную паузу.

Почему VLESS будет продолжать работать

Фундаментальная причина успеха VLESS в том, что он не пытается быть умным. Он не изобретает новое шифрование, не использует экзотические протоколы, не делает ничего отличительного. Он просто оборачивает минимум информации для маршрутизации в стандартный TLS.

Чтобы заблокировать VLESS, цензорам пришлось бы блокировать весь TLS-трафик, что сломало бы весь интернет. Или им пришлось бы расшифровывать TLS, что вычислительно невозможно в масштабе и сломало бы доверие ко всей интернет-инфраструктуре.

Единственная реальная уязвимость — IP-блокировка, поэтому интеграция с CDN критична. Пока VLESS-серверы остаются за общей CDN-инфраструктурой, они фактически неблокируемы.

Получение бесплатных VLESS-серверов для тестирования

Перед тем как выбрать VPN-сервис, стоит протестировать VLESS самостоятельно. Есть несколько способов получить бесплатные серверы для тестирования.

Публичные списки бесплатных серверов — самый простой вариант. Многие провайдеры предлагают бесплатные публичные серверы для тестирования. Загвоздка в том, что эти серверы используются тысячами пользователей, поэтому скорости могут быть низкими и они блокируются чаще. Но они идеальны для понимания как работает VLESS.

MegaV поддерживает постоянно обновляемый список бесплатных V2Ray серверов на megav.app/en/v2ray-servers. Страница включает VLESS, VMess, Shadowsocks и Trojan конфиги, которые можно скопировать одним кликом. Новые серверы добавляются ежедневно по мере блокировки старых.

Процесс прост. Посетите страницу бесплатных серверов, отфильтруйте по протоколу (выберите VLESS для лучших результатов) и скопируйте конфигурацию сервера. Большинство V2Ray клиентов поддерживают импорт конфигов прямо из буфера обмена.

Попробуйте production-ready VLESS

Если хотите испытать VLESS без сложности настройки или ограничений бесплатных серверов, MegaV VPN предлагает production-ready инфраструктуру, оптимизированную для России, Китая и Ирана. Предварительно настроенный VLESS с автоматическим переключением протоколов, CDN-интеграцией и zero-log политикой.

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

Посетите megav.app для скачивания, или проверьте megav.app/en/v2ray-servers для бесплатных публичных серверов.

Полное раскрытие: Я разработчик MegaV VPN. Эта статья отражает реальный опыт 5 лет борьбы с цензурой, а не теоретические знания. Каждая конфигурация, показанная здесь, работает в продакшене прямо сейчас.

Технические ресурсы

Официальная документация V2Ray: https://www.v2ray.com/

Спецификация протокола VLESS: https://github.com/v2fly/v2ray-core

Исследования обхода цензуры: https://censorbib.nymity.ch/

Об авторе

Я разработчик, который начал создавать VPN-инструменты в 2020 году после наблюдения за эскалацией интернет-цензуры в России. То, что началось как личный проект, стало MegaV VPN, теперь помогающим тысячам пользователей в цензурируемых регионах оставаться на связи.

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

Связь: GitHub: https://github.com/Romaxa55/MegaV_Public | Сайт: https://megav.app | Email: support@megav.store