Happ VPN

Trojan в Happ: параметры, настройка, когда выбирать

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
Версия гайда:
1.0

Коротко

Trojan в Happ — протокол, который проверяет клиента по паролю и целиком полагается на TLS: ссылка trojan://password@host:443 с параметром sni добавляется из буфера обмена, QR-кода или подписки.

Trojan устроен просто: клиент открывает TLS-соединение с сервером и первым делом передаёт хэш пароля, после чего идут данные. Серверу нужны домен и действительный сертификат, клиенту — пароль, адрес, порт и SNI. Happ поддерживает Trojan поверх TCP, WebSocket и gRPC. Большинство проблем с Trojan связаны с сертификатом и TLS-рукопожатием, а не с самим протоколом.

Trojan — Trojan — протокол прокси, который передаёт данные внутри обычного TLS-соединения и проверяет клиента по паролю. Собственного шифрования у него нет, поэтому TLS обязателен. В Happ Trojan добавляется ссылкой trojan://, QR-кодом, подпиской или вручную.

Как устроен Trojan

Trojan задуман как прокси, встроенный в обычный HTTPS-сервер: на порту 443 работает сайт, а клиенты с правильным паролем получают доступ к прокси.

Xray-core поддерживает Trojan наряду с VLESS и VMess, поэтому Happ принимает его без дополнительных модулей и с теми же способами импорта.

Для клиента Trojan — один из самых коротких по настройке протоколов: пароль, адрес, порт и SNI. Транспорт, ALPN и отпечаток TLS добавляются, только если их требует сервер.

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

Транспорт и шифрование

ПараметрЗначения
ТранспортTCP (raw), WebSocket (ws), gRPC
ЗащитаTLS — обязателен, проверка сертификата сервера по имени из sni, отпечаток uTLS (fp) — по желанию

Параметры конфигурации

ПараметрОписаниеПример
парольПароль пользователя перед @. Спецсимволы кодируются процентным кодированием.password
адрес и портДомен сервера и порт; для Trojan почти всегда 443.example.com:443
securityСлой защиты; для Trojan — tls.security=tls
sniДомен, на который выдан сертификат сервера.sni=example.com
typeТранспорт: tcp, ws или grpc.type=ws
path и hostПуть и заголовок Host для WebSocket.path=%2Ftrojan&host=example.com
serviceNameИмя сервиса для gRPC.serviceName=trojan
alpnПротоколы прикладного уровня, которые клиент предлагает в TLS: h2, http/1.1.alpn=h2%2Chttp%2F1.1
fpОтпечаток TLS-клиента, с которым формируется ClientHello.fp=chrome
fragmentДеление первого TLS-пакета на части с паузами; помогает стабильности рукопожатия, если крупный первый пакет на маршруте теряется.fragment=1-10,5-20,tlshello
# имяИмя сервера в списке Happ, до 30 символов.#Example

Сильные стороны

  • Минимум обязательных параметров: пароль, адрес, порт и SNI.
  • Нет зависимости от времени и второго слоя шифрования: нагрузка как у обычного TLS.
  • Сервер делит порт 443 с сайтом через fallback.
  • Передаёт UDP внутри TLS-соединения.

Ограничения

  • Нужны домен и действительный сертификат, который придётся продлевать.
  • Нет режима Vision: если внутри туннеля идёт HTTPS, данные шифруются дважды.
  • Пароль хранится в ссылке открытым текстом, поэтому ссылкой нельзя делиться публично.
  • Через CDN Trojan работает только с транспортом WebSocket или gRPC.

Когда выбирать Trojan

Trojan подходит, когда у сервера есть домен с сертификатом и нужен простой в поддержке протокол без UUID и требований к часам.

Если на сервере уже работает сайт на nginx, Trojan позволяет оставить его на том же порту 443 и отдавать сайт всем, кто подключается без пароля.

Если домена нет или продлевать сертификат неудобно, практичнее VLESS с Reality.

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

ПротоколОтличие
VLESSОба протокола используют TLS, но VLESS проверяет UUID и поддерживает Vision и Reality. Trojan проще: ему нужны только пароль и сертификат.
ShadowsocksShadowsocks шифрует данные сам и не требует домена. Trojan требует сертификат, зато работает поверх стандартного TLS и через CDN с транспортом WebSocket.
VMessVMess может обойтись без TLS, но зависит от точного времени. Trojan без TLS не работает, зато к часам не привязан и не шифрует данные дважды.

Главное

  • Trojan не шифрует данные сам: вся защита канала обеспечивается TLS, поэтому без TLS протокол не используется.
  • Сервер проверяет клиента по хэшу SHA-224 от пароля, который клиент отправляет в начале TLS-соединения.
  • Параметр sni должен совпадать с доменом в сертификате сервера, иначе TLS-рукопожатие завершится ошибкой.
  • Соединения без правильного пароля сервер Trojan может передавать на резервный веб-сервер (fallback), поэтому на порту 443 рядом с прокси работает сайт.
  • Спецсимволы в пароле Trojan записываются в ссылке процентным кодированием, например @ как %40.

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

Почему для Trojan нужны домен и сертификат?

Trojan не шифрует данные сам: всю защиту даёт TLS, а TLS проверяет сервер по сертификату, выданному на домен. Без действительного сертификата клиент не может убедиться, что подключился к нужному серверу. Бесплатный сертификат Let's Encrypt подходит, если его вовремя продлевать. Если домена нет совсем, рассмотрите VLESS с Reality: там сервер проверяется по ключу.

Можно ли использовать Trojan с самоподписанным сертификатом?

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

Что делать, если Trojan выдаёт ошибку TLS-рукопожатия?

Проверьте по порядку: совпадает ли sni с доменом сертификата, не истёк ли сертификат, открыт ли порт на сервере и верно ли установлены дата и время на устройстве — при неверной дате сертификат считается недействительным. Если сервер работает за CDN, в ссылке должен быть транспорт ws или grpc, а не tcp. В офисных сетях причиной бывает прокси с перехватом TLS.

Как записать в ссылке пароль со спецсимволами?

Пароль стоит в ссылке перед @, поэтому символы @, :, /, ?, # и % в нём нужно закодировать: @ как %40, : как %3A, / как %2F, ? как %3F, # как %23, % как %25. Без кодирования Happ неправильно разберёт ссылку и сообщит, что конфигурация trojan не валидная. Проще всего попросить администратора сгенерировать пароль из букв и цифр.

Поддерживает ли Trojan в Happ WebSocket и gRPC?

Да, транспорт задаётся параметром type: tcp, ws или grpc. Для WebSocket укажите path и, если нужно, host, для gRPC — serviceName. Транспорт в ссылке должен совпадать с настройкой сервера. WebSocket и gRPC нужны, когда между клиентом и сервером стоит CDN или обратный прокси; при прямом подключении tcp проще и быстрее.

Что такое fallback на сервере Trojan и важен ли он для клиента?

Fallback — адрес, куда сервер передаёт соединения без правильного пароля, обычно локальный веб-сервер с сайтом. Так на порту 443 одновременно работают сайт и прокси. Для Happ fallback ничего не меняет: при верном пароле соединение идёт в прокси. Но если в ссылке ошибка в пароле, вместо прокси сервер ответит страницей сайта, и подключение не заработает.

Передаёт ли Trojan UDP, например для звонков и игр?

Да, протокол Trojan умеет передавать UDP-пакеты внутри TLS-соединения, и Xray-core эту возможность поддерживает. Учтите, что такой UDP идёт поверх TCP и чувствителен к потерям: при плохой связи задержка в звонках растёт сильнее, чем у протоколов на QUIC. Для голосовых приложений на нестабильной сети сравните Trojan с Hysteria2, если сервер его поддерживает.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: примеры ссылок и параметры — обращение 27 сентября 2026
  2. Документация Happ: добавление конфигурации и подписки — обращение 27 сентября 2026
  3. Документация Happ: ошибки — обращение 27 сентября 2026