Trojan VPN GitHub: как найти, развернуть и настроить клиент и сервер

Подробный обзор Trojan-Go на GitHub: установка, настройка, WebSocket, мультиплексирование, маршрутизация, AEAD, плагины, сравнение с другими протоколами и ответы на частые вопросы.

Что такое Trojan и почему он популярен

Trojan — это прокси-протокол, который маскирует трафик под обычный HTTPS. В отличие от классических VPN, Trojan использует TLS-шифрование и работает через порт 443, что делает его практически неотличимым от обычного веб-трафика. Это позволяет обходить глубокую фильтрацию (DPI), которая блокирует VPN-протоколы по характерным сигнатурам.

Основная идея Trojan — не создавать новый зашифрованный туннель, а использовать уже существующий TLS. Сервер Trojan принимает соединение, проверяет пароль, и если он верен, перенаправляет трафик как прокси. Если пароль неверен, сервер ведёт себя как обычный веб-сервер, отдавая заглушку. Это делает активное обнаружение сложным.

На GitHub существует несколько реализаций Trojan, но самой известной и функциональной является Trojan-Go. Этот проект написан на Go, что обеспечивает лёгкость, кроссплатформенность и простоту развёртывания. Trojan-Go полностью совместим с оригинальным Trojan, но добавляет множество расширений: WebSocket, мультиплексирование, маршрутизацию, AEAD-шифрование и плагины транспорта.

Благодаря этим возможностям Trojan-Go стал выбором многих пользователей, которым нужен стабильный и незаметный доступ в интернет в условиях жёстких ограничений. Он активно используется как для личных целей, так и в коммерческих VPN-сервисах.

Trojan-Go: ключевые возможности и преимущества

Trojan-Go — это не просто прокси, а целый набор инструментов для гибкой настройки. Рассмотрим его основные возможности:

  • Совместимость с оригинальным Trojan: Trojan-Go поддерживает конфигурационные файлы и клиентов оригинального Trojan, что упрощает миграцию.
  • WebSocket и CDN: поддержка WebSocket поверх TLS позволяет использовать CDN для маскировки трафика и обхода блокировок по IP. Это особенно полезно, если ваш сервер заблокирован.
  • Мультиплексирование (smux): несколько TCP-соединений объединяются в одно TLS-соединение, что снижает задержки и улучшает производительность при большом количестве одновременных запросов.
  • Маршрутизация: встроенный модуль позволяет разделять трафик на проксируемый, прямой и блокируемый. Например, можно настроить прямые подключения к российским сайтам, а зарубежные — через прокси.
  • AEAD-шифрование: дополнительное шифрование на основе Shadowsocks AEAD защищает трафик от анализа даже на стороне CDN.
  • Плагины транспорта: поддержка SIP003-плагинов (например, v2ray-plugin) позволяет заменить TLS на другие протоколы или добавить обфускацию.
  • Простота развёртывания: предкомпилированные бинарники для всех платформ, Docker-образы, поддержка YAML-конфигурации.
  • Управление пользователями: через gRPC API можно управлять пользователями, ограничивать скорость и трафик.

Эти функции делают Trojan-Go универсальным решением для самых разных сценариев — от личного использования до корпоративных развёртываний.

Как найти и скачать Trojan-Go на GitHub

Проект Trojan-Go размещён на GitHub по адресу github.com/p4gefau1t/trojan-go. Однако в поиске можно встретить и другие репозитории, например RunawayVPN/trojan-go — это форк, который также содержит актуальные версии. Важно выбирать проверенные источники, чтобы избежать вредоносных модификаций.

На странице релизов (Releases) вы найдёте предкомпилированные бинарники для Windows, Linux, macOS, а также для архитектур ARM и MIPS. Это позволяет запускать Trojan-Go на серверах, Raspberry Pi и даже роутерах.

Для загрузки достаточно скачать архив, соответствующий вашей ОС и архитектуре, распаковать его и запустить. Никаких дополнительных зависимостей не требуется — это одно из главных преимуществ Go-компиляции.

Если вы предпочитаете собирать из исходников, клонируйте репозиторий и выполните go build -tags "full". Для кросс-компиляции, например для MIPS, используйте переменные окружения GOOS и GOARCH. Также доступна установка через Docker: docker run -d -v /etc/trojan-go:/etc/trojan-go --network host p4gefau1t/trojan-go.

Перед использованием обязательно проверьте контрольные суммы и подписи, если они предоставлены, чтобы убедиться в подлинности файлов.

Установка и базовая настройка сервера Trojan-Go

Для развёртывания сервера Trojan-Go вам понадобится VPS с открытым портом 443 и доменным именем, на которое указывает SSL-сертификат. Рассмотрим базовую настройку.

  1. Скачайте и распакуйте бинарник на сервер.
  2. Создайте конфигурационный файл server.json:
{
  "run_type": "server",
  "local_addr": "0.0.0.0",
  "local_port": 443,
  "remote_addr": "127.0.0.1",
  "remote_port": 80,
  "password": ["your_awesome_password"],
  "ssl": {
    "cert": "/path/to/cert.crt",
    "key": "/path/to/key.key",
    "sni": "your-domain.com"
  }
}
  1. Запустите сервер: ./trojan-go -config server.json.

Параметр remote_addr и remote_port указывают на локальный веб-сервер (например, Nginx), который будет обслуживать запросы без пароля. Это создаёт эффект обычного HTTPS-сайта.

Для быстрого старта можно использовать «лёгкий режим»:

sudo ./trojan-go -server -remote 127.0.0.1:80 -local 0.0.0.0:443 -key ./your_key.key -cert ./your_cert.crt -password your_password

Этот режим автоматически создаст конфигурацию, но для продакшена лучше использовать файл конфигурации.

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

Настройка клиента Trojan-Go на разных платформах

Клиент Trojan-Go можно настроить на Windows, macOS, Linux, Android и iOS. Рассмотрим основные способы.

Базовый клиент (CLI)

Создайте файл client.json:

{
  "run_type": "client",
  "local_addr": "127.0.0.1",
  "local_port": 1080,
  "remote_addr": "your-domain.com",
  "remote_port": 443,
  "password": ["your_awesome_password"]
}

Запустите: ./trojan-go -config client.json. После этого локально будет доступен SOCKS5-прокси на порту 1080.

Графические клиенты

Для удобства можно использовать GUI-клиенты, поддерживающие Trojan-Go:

  • Qv2ray — кроссплатформенный клиент, поддерживает все расширения Trojan-Go (WebSocket, Mux и т.д.).
  • Igniter-Go — Android-клиент, форк Igniter с ядром Trojan-Go.
  • v2rayNG — популярный Android-клиент, поддерживает Trojan и Trojan-Go через импорт конфигурации.
  • Throne — клиент для Windows, поддерживает Trojan и другие протоколы.

Импорт по ссылке

Многие клиенты поддерживают импорт конфигурации по URL. Например, для Trojan-Go URL выглядит так:

trojan-go://password@your-domain.com?type=ws&path=%2Fpath&host=your-site.com

Это удобно для быстрой настройки и распространения конфигураций.

Мобильные устройства

На Android можно использовать v2rayNG или Igniter-Go. На iOS — ShadowRocket или другие клиенты, поддерживающие Trojan. Обратите внимание, что для iOS может потребоваться покупка приложения в App Store.

Расширенные настройки: WebSocket, мультиплексирование и маршрутизация

Одним из главных преимуществ Trojan-Go является возможность тонкой настройки для обхода блокировок и повышения производительности.

WebSocket и CDN

Чтобы использовать CDN, добавьте в конфигурацию сервера и клиента блок websocket:

"websocket": {
  "enabled": true,
  "path": "/your-websocket-path",
  "hostname": "your-domain.com"
}

После этого трафик будет передаваться через WebSocket поверх TLS, что позволяет спрятать ваш сервер за CDN (например, Cloudflare). Это затрудняет блокировку по IP и делает трафик похожим на обычные запросы к сайту.

Мультиплексирование

Включите mux на клиенте:

"mux": {
  "enabled": true
}

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

Маршрутизация

Модуль маршрутизации позволяет разделять трафик. Пример конфигурации клиента:

"router": {
  "enabled": true,
  "bypass": ["geoip:cn", "geoip:private", "full:localhost"],
  "block": ["cidr:192.168.1.1/24"],
  "proxy": ["domain:google.com"],
  "default_policy": "proxy"
}

Здесь bypass — прямые подключения, block — блокировка, proxy — через прокси. Это позволяет, например, российские сайты открывать напрямую, а зарубежные — через VPN.

AEAD-шифрование

Для защиты от анализа трафика на стороне CDN можно включить дополнительное шифрование:

"shadowsocks": {
  "enabled": true,
  "password": "my-password"
}

Пароль должен совпадать на сервере и клиенте.

Сравнение Trojan с другими протоколами: OpenVPN, WireGuard, IKEv2

Чтобы понять, когда выбирать Trojan, полезно сравнить его с другими популярными протоколами.

OpenVPN — золотой стандарт безопасности, использует TLS и AES-256. Однако его трафик легко обнаружить по характерным паттернам, и он часто блокируется DPI. OpenVPN сложнее настраивать и он медленнее из-за накладных расходов.

WireGuard — современный протокол с высокой скоростью и простотой. Использует ChaCha20 и Curve25519. Однако его трафик также может быть обнаружен, хотя и сложнее, чем OpenVPN. WireGuard не маскируется под HTTPS, поэтому в условиях жёсткой фильтрации может быть менее эффективен.

IKEv2/IPSec — хорош для мобильных устройств благодаря быстрому переподключению, но также уязвим для DPI.

Trojan — маскируется под HTTPS, что делает его практически неотличимым от обычного веб-трафика. Это ключевое преимущество в странах с глубокой фильтрацией. Trojan обычно быстрее OpenVPN, но может быть медленнее WireGuard в чистых сетях.

Таблица сравнения:

| Протокол | Шифрование | Скорость | Обход DPI | Сложность настройки | |----------|------------|----------|-----------|---------------------| | OpenVPN | AES-256 | Средняя | Низкая | Высокая | | WireGuard| ChaCha20 | Высокая | Средняя | Низкая | | IKEv2 | AES-256 | Высокая | Низкая | Средняя | | Trojan | TLS + AEAD | Высокая | Высокая | Средняя |

Выбор зависит от ваших задач: если нужна максимальная незаметность — Trojan, если максимальная скорость — WireGuard, если универсальность — OpenVPN.

Безопасность и риски использования Trojan-Go

Несмотря на все преимущества, использование Trojan-Go связано с определёнными рисками, которые важно учитывать.

Юридические аспекты: В некоторых странах использование VPN и прокси для обхода блокировок может быть запрещено. Перед использованием убедитесь, что вы не нарушаете местное законодательство.

Безопасность сервера: Если ваш сервер скомпрометирован, злоумышленник может получить доступ к вашему трафику. Используйте надёжные пароли, регулярно обновляйте Trojan-Go и ОС, настройте файрвол.

Качество исходного кода: Trojan-Go — открытый проект, но форки могут содержать вредоносные изменения. Скачивайте только из официальных репозиториев и проверяйте контрольные суммы.

Конфиденциальность: Trojan не скрывает ваш IP от сервера, поэтому сервер видит ваш реальный IP. Если вам нужна анонимность, используйте дополнительные инструменты, например Tor.

Стабильность: В условиях активного противодействия Trojan-Go может быть заблокирован. Разработчики постоянно обновляют протокол, но гарантий нет.

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

Практические примеры: развёртывание Trojan-Go с Docker и на роутере

Рассмотрим два практических сценария развёртывания Trojan-Go.

Развёртывание с Docker

Docker упрощает установку и обновление. Создайте каталог /etc/trojan-go и поместите туда config.json. Затем выполните:

docker run --name trojan-go -d -v /etc/trojan-go:/etc/trojan-go --network host p4gefau1t/trojan-go

Использование --network host позволяет Trojan-Go слушать порт 443 напрямую. Если вы хотите использовать пользовательский путь к конфигу, укажите его в команде.

Установка на роутер с OpenWrt

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

Пример команды для кросс-компиляции:

CGO_ENABLED=0 GOOS=linux GOARCH=mips go build -tags "client" -trimpath -ldflags "-s -w -buildid="

После этого вы можете запустить Trojan-Go на роутере и настроить маршрутизацию, чтобы весь трафик LAN шёл через прокси.

Использование с публичными конфигами

Существуют сайты, например Goida VPN Configs, которые предоставляют автоматически обновляемые конфигурации для Trojan и других протоколов. Они могут быть полезны для быстрого доступа, но помните о рисках безопасности: вы не контролируете серверы, и ваш трафик может быть перехвачен. Используйте такие сервисы с осторожностью.

Частые ошибки и способы их решения

При настройке Trojan-Go пользователи часто сталкиваются с типичными проблемами. Рассмотрим их и способы решения.

Ошибка: не удаётся подключиться к серверу

  • Проверьте, что порт 443 открыт в файрволе и на сервере.
  • Убедитесь, что SSL-сертификат действителен и соответствует домену.
  • Проверьте правильность пароля в конфигурации клиента.
  • Попробуйте использовать curl -v https://your-domain.com для проверки доступности.

Ошибка: медленная скорость

  • Включите мультиплексирование (mux).
  • Проверьте, не используете ли вы слишком слабый сервер.
  • Попробуйте изменить алгоритм шифрования или отключить AEAD, если он не нужен.

Ошибка: трафик блокируется

  • Включите WebSocket и используйте CDN.
  • Измените путь WebSocket на что-то нестандартное.
  • Попробуйте использовать плагин транспорта, например v2ray-plugin.

Ошибка: клиент не запускается на Windows

  • Убедитесь, что у вас установлены библиотеки Visual C++ Redistributable.
  • Запустите от имени администратора.

Ошибка: конфигурация YAML не работает

  • Проверьте синтаксис YAML, отступы должны быть пробелами, а не табуляцией.
  • Используйте онлайн-валидатор YAML.

Если проблема не решается, обратитесь к документации проекта или сообществу в Telegram.

Вопросы и ответы

Чем Trojan-Go отличается от оригинального Trojan?

Trojan-Go — это форк оригинального Trojan, написанный на Go. Он полностью совместим с оригинальным протоколом и конфигурацией, но добавляет множество расширений: WebSocket для работы через CDN, мультиплексирование (smux) для повышения производительности, встроенный модуль маршрутизации, AEAD-шифрование на основе Shadowsocks, поддержку плагинов транспорта и gRPC API для управления. Оригинальный Trojan написан на C++ и не имеет этих функций. Если вам нужны только базовые возможности, оригинал подойдёт, но для гибкой настройки и обхода блокировок лучше выбрать Trojan-Go.

Как использовать Trojan-Go с CDN (например, Cloudflare)?

Для работы через CDN необходимо включить WebSocket в конфигурации и сервера, и клиента. На сервере добавьте блок websocket с enabled: true и укажите путь (path). На клиенте укажите тот же путь и hostname. После этого трафик будет передаваться через WebSocket поверх TLS, и вы сможете подключить ваш домен к CDN. CDN скроет IP вашего сервера и замаскирует трафик под обычные HTTPS-запросы. Важно, чтобы на сервере был установлен действительный SSL-сертификат для вашего домена.

Какие клиенты поддерживают Trojan-Go?

Trojan-Go совместим с большинством клиентов, поддерживающих оригинальный Trojan, например Igniter и ShadowRocket. Для использования расширенных функций (WebSocket, Mux) рекомендуются клиенты, использующие ядро Trojan-Go: Qv2ray (Windows, macOS, Linux), Igniter-Go (Android), а также v2rayNG (Android) и Throne (Windows) при импорте соответствующих конфигураций. На iOS можно использовать ShadowRocket или другие клиенты, поддерживающие Trojan.

Безопасно ли использовать публичные конфигурации Trojan с GitHub?

Использование публичных конфигураций, например с сайтов вроде Goida VPN Configs, связано с рисками. Вы не контролируете серверы, и ваш трафик может быть перехвачен или залогирован. Такие конфигурации могут быть полезны для быстрого доступа, но не для передачи чувствительных данных. Рекомендуется разворачивать собственный сервер Trojan-Go и использовать только проверенные конфигурации. Если вы всё же используете публичные, убедитесь, что сайт доверенный, и не вводите на таких серверах пароли или данные банковских карт.

Как обновить Trojan-Go до последней версии?

Если вы установили Trojan-Go через Docker, просто пересоздайте контейнер с новым образом: docker pull p4gefau1t/trojan-go и затем docker run. Если вы используете бинарник, скачайте новую версию с GitHub Releases и замените старый файл. Для сборки из исходников выполните git pull и go build -tags "full". После обновления перезапустите службу. Рекомендуется регулярно проверять наличие обновлений, так как они могут содержать исправления уязвимостей и улучшения обхода блокировок.

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

Да, Trojan-Go можно запустить на роутере с поддержкой OpenWrt или аналогичной прошивкой. Благодаря кросс-компиляции вы можете собрать бинарник для архитектуры вашего роутера (например, MIPS, ARM). После установки настройте конфигурацию клиента и маршрутизацию, чтобы весь трафик локальной сети шёл через прокси. Это позволит защитить все устройства в доме без настройки каждого отдельно. Учтите, что производительность роутера может быть ограничена, поэтому для высоких скоростей может потребоваться более мощное устройство.