MAATRIX / Блог / Trojan-Go или Xray: что выбрать

Trojan-Go или Xray: что выбрать

MAATRIX

Оба протокола решают одну задачу — спрятать VPN-трафик внутри обычного TLS-соединения, чтобы DPI не отличил его от захода на HTTPS-сайт. Но за этим общим принципом стоят разные архитектуры, разная нагрузка на процессор сервера и разный порог входа в настройку. Если вы выбираете, что поднимать на новом VPS для обхода блокировок, разница между Trojan-Go и Xray — не теоретическая: она определяет, сколько времени уйдёт на настройку и насколько стабильно всё будет работать через год.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Архитектура: чем Trojan-Go отличается от Xray

Trojan-Go — самостоятельная реализация протокола Trojan на Go, разработанная p4gefau1t. Идея Trojan простая и элегантная: сервер слушает 443-й порт, принимает обычное TLS-соединение, и только по паролю в первых байтах потока отличает «своего» VPN-клиента от случайного HTTPS-запроса. Всем остальным, включая DPI и ручные проверки, сервер отвечает как обычный веб-сайт — часто через fallback на реальный nginx с каким-нибудь безобидным контентом.

Xray — куда более широкий проект: форк V2Ray-core, который поддерживает сразу несколько протоколов (VLESS, VMess, Trojan) и несколько транспортов маскировки. Ключевое для этого сравнения — связка VLESS + XTLS и отдельно режим Reality. XTLS-Vision убирает лишний слой шифрования там, где Trojan-Go шифрует данные дважды (свой AEAD поверх TLS), а Reality вообще уходит от классической модели «свой домен + свой сертификат», заимствуя TLS-хендшейк настоящего стороннего сайта.

Практическая разница: Trojan-Go — это один протокол с одним способом маскировки (TLS через реальный сертификат). Xray — это набор инструментов, где вы выбираете транспорт под конкретную задачу. Отсюда и все дальнейшие различия — в скрытности, скорости и сложности.

Маскировка трафика: TLS-мимикрия против Reality

У Trojan-Go маскировка держится на настоящем сертификате и настоящем домене. Сервер терминирует TLS сам, поэтому сертификат должен быть валидным (Let's Encrypt подходит), а домен — не выглядеть подозрительно свежим или сгенерированным. Если DPI начинает активное зондирование (active probing) — подключается к вашему серверу напрямую и смотрит, отвечает ли он как обычный сайт, — fallback на реальный веб-контент должен отработать правдоподобно. Слабое место: сертификат и домен целиком под вашим контролем, и если домен один раз попадёт в блок-лист по SNI, вся маскировка рушится вместе с ним.

Xray в режиме VLESS + XTLS работает похожим образом — тоже нужен свой домен и сертификат. Но Reality устраняет эту зависимость: сервер не выпускает собственный сертификат, а во время хендшейка технически обращается к TLS-хендшейку настоящего стороннего сайта (например, крупного CDN или популярного сервиса) и отдаёт клиенту, который прошёл проверку по ключу, тот же ответ, что дал бы этот сайт. Наблюдателю со стороны кажется, что пользователь просто подключился к реальному внешнему ресурсу — активное зондирование его же и видит, потому что запрос на этот же адрес и правда обслуживается настоящим сайтом. Из-за этого Reality на сегодня считается одной из самых устойчивых схем именно к активному DPI-зондированию, а не только к пассивному анализу сигнатур.

Честная оговорка: устойчивость Reality не абсолютна и зависит от выбора сайта-маски (лучше брать крупный домен с TLS 1.3 и HTTP/2, который точно не заблокирован сам по себе) и от того, что фильтры продолжают развиваться. Trojan-Go тоже не «взламывается» массово, но его конструкция проще и предсказуемее для того, кто её изучает.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Производительность: где теряются ресурсы CPU

Разница в производительности идёт напрямую из архитектуры. Trojan-Go шифрует данные своим слоем (AEAD-шифр) и заворачивает результат в TLS — получается двойное шифрование одного и того же потока. На слабых VPS (1 vCPU, особенно на процессорах без аппаратного AES-NI) это заметно на пропускной способности при большом числе одновременных соединений.

XTLS-Vision в Xray решает именно эту проблему: когда оба конца соединения — Xray, протокол умеет распознавать, что после хендшейка данные уже зашифрованы на уровне TLS-записи, и просто копирует эти записи напрямую (splice), не расшифровывая и не шифруя их повторно. На практике это снижает нагрузку на CPU заметно сильнее, чем «плюс-минус проценты» — особенно на бюджетных тарифах, где каждое ядро на счету. Reality в этом смысле не хуже: сам по себе он не добавляет дополнительного шифрования, только меняет способ прохождения хендшейка.

Точные цифры пропускной способности мы намеренно не приводим: они сильно зависят от конкретного VPS, его CPU, сетевого канала и того, что делает клиент (браузинг, стриминг, торренты). Ориентир такой: на одинаковом железе Xray с XTLS-Vision или Reality обычно экономичнее по CPU, чем Trojan-Go, и это особенно ощутимо на тарифах с 1 ядром при нескольких активных клиентах одновременно. Если сервер простаивает большую часть времени и подключается один человек — разница может быть вообще не заметна на глаз.

Сложность установки и поддержки конфигов

Здесь у протоколов принципиально разный порог входа.

Trojan-Go требует классической связки: домен, направленный A-записью на IP сервера, выпущенный сертификат (например, через certbot или acme.sh) и настроенный fallback-сайт для правдоподобия. Установка описана в отдельном разборе — пошаговая установка Trojan-Go на Debian 12. Минимальный конфиг сервера выглядит так:

{
  "run_type": "server",
  "local_addr": "0.0.0.0",
  "local_port": 443,
  "remote_addr": "127.0.0.1",
  "remote_port": 80,
  "password": ["ваш-пароль"],
  "ssl": {
    "cert": "/etc/letsencrypt/live/example.com/fullchain.pem",
    "key": "/etc/letsencrypt/live/example.com/privkey.pem"
  }
}

Xray в классическом режиме VLESS + XTLS требует того же самого — домена и сертификата, шаги описаны в статье установка Xray и XTLS на VPS. Но в режиме Reality всё меняется: домен и сертификат не нужны вовсе. Вместо них генерируется пара ключей X25519:

xray x25519

И конфиг ссылается на чужой сайт как на маску (dest и serverNames):

{
  "inbounds": [{
    "port": 443,
    "protocol": "vless",
    "settings": {
      "clients": [{ "id": "ваш-uuid", "flow": "xtls-rprx-vision" }],
      "decryption": "none"
    },
    "streamSettings": {
      "network": "tcp",
      "security": "reality",
      "realitySettings": {
        "dest": "example.com:443",
        "serverNames": ["example.com"],
        "privateKey": "ваш-private-key",
        "shortIds": [""]
      }
    }
  }]
}

Это объективно проще для тех, у кого нет собственного домена или не хочется возиться с продлением сертификатов: подробный разбор — установка VLESS Reality на VPS. Обратная сторона — конфиг Xray в целом многословнее и содержит больше параметров (routing, DNS, несколько inbound/outbound), поэтому по сумме опций разобраться в нём новичку сложнее, чем в компактном config.json от Trojan-Go. Итог по сложности: Trojan-Go проще концептуально, но обязывает к домену; Xray с Reality проще по инфраструктуре (без домена), но сам синтаксис конфига многословнее.

Устойчивость к блокировкам и активная поддержка

Здесь стоит сказать прямо то, что часто замалчивают в сравнениях: у проекта trojan-go нет активной разработки — последний стабильный релиз вышел ещё в 2021 году. Протокол не «сломался» и продолжает пробивать многие виды блокировок, но новых техник противодействия активному зондированию в нём с тех пор не появлялось.

Xray-core, напротив, развивается активно: Reality и XTLS-Vision появились уже после того, как классические схемы TLS-маскировки начали давать сбои под нагрузкой продвинутого DPI, и разработчики продолжают выпускать обновления. Для 2026 года это значимый фактор: устойчивость к блокировкам — это не разовая настройка, а постоянная гонка, и протокол без поддержки со временем отстаёт.

Если ваша сеть достаточно мягкая и Trojan-Go у вас уже работает — менять его без причины не обязательно. Но если вы настраиваете обход блокировок с нуля именно там, где DPI агрессивен, разумнее закладываться на активно поддерживаемый инструмент.

Что выбрать: сценарии и сравнение

КритерийTrojan-GoXray (VLESS + XTLS / Reality)
МаскировкаTLS через свой домен и сертификатXTLS через свой домен, либо Reality без домена
Нагрузка на CPUВыше (двойное шифрование)Ниже (XTLS-Vision убирает дублирование)
Нужен доменДа, обязательноДа для VLESS+XTLS, нет для Reality
Сложность конфигаКомпактный, минимум параметровМногословнее, больше опций
Активная разработкаПрактически остановлена с 2021 г.Активно развивается
Устойчивость к active probingХорошая, но статичнаяВысокая, особенно у Reality
Готовые клиентыМного, под все платформыМного, включая v2rayN, NekoRay, Shadowrocket

Из этого вытекают практические рекомендации. Берите Trojan-Go, если у вас уже есть рабочая инфраструктура на этом протоколе, домен и сертификат настроены, и менять что-то без веской причины не хочется — простой конфиг и предсказуемое поведение здесь плюс. Берите Xray с классическим VLESS+XTLS, если нужна максимальная скорость на слабом VPS и у вас уже есть домен под сервер. Берите Xray с Reality, если домена нет и заводить его не хочется, если сеть особенно агрессивна к активному зондированию, или если вы настраиваете сервер с нуля и не привязаны к старой конфигурации — на сегодня это наиболее гибкий и живой вариант из трёх. Общий обзор всех протоколов, включая эти два, есть в статье какой протокол VPN выбрать: гид по сценариям.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли использовать Trojan-Go и Xray одновременно на одном сервере?

Да, если развести их по разным портам или доменам — конфликта на уровне TLS не будет, но усложнится сопровождение. Обычно проще выбрать один протокол и держать второй как запасной сервер.

Что будет, если домен для Trojan-Go попадёт в блок-лист по SNI?

Маскировка перестанет работать — соединение будет распознаваться по домену ещё до проверки сертификата. Потребуется сменить домен и перевыпустить сертификат; в Reality этой проблемы нет, потому что вы используете чужой SNI.

Нужен ли аппаратный AES-NI для Xray или Trojan-Go?

Для обоих желателен — шифрование AES-GCM на процессорах с AES-NI работает значительно быстрее. Большинство современных VPS его поддерживают, но на бюджетных тарифах с урезанным CPU стоит проверить cat /proc/cpuinfo | grep aes.

Reality точно не палится DPI совсем?

Нет протокола со стопроцентной гарантией — Reality лишь существенно усложняет активное зондирование по сравнению с классическим TLS через свой сертификат. Пассивный анализ трафика по метаданным (объём, тайминги) в теории всё ещё возможен, хотя на практике применяется реже.

Стоит ли переходить с Trojan-Go на Xray, если всё и так работает?

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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →