
TrustTunnel v1.1.0
Открытый протокол VPN, который туннелирует трафик TCP, UDP и ICMP через HTTPS, обходя DPI и ограничение пропускной способности. Включает раздельное туннелирование, SOCKS5-прокси, пользовательский DNS и кроссплатформенные клиенты.
Клиенты · App Store · Play Маркет
Содержание
- Введение
- Возможности сервера
- Возможности клиента
- Быстрый старт
- Клиенты
- См. также
- План развития
- Лицензия
Введение
TrustTunnel — это современный открытый VPN-протокол, изначально разработанный AdGuard VPN и теперь доступный для использования и аудита.
Он обеспечивает быстрые, безопасные и надёжные VPN-соединения без обычных компромиссов. По замыслу, трафик TrustTunnel неотличим от обычного HTTPS-трафика, что позволяет обходить ограничения пропускной способности и глубокую инспекцию пакетов, сохраняя сильную защиту конфиденциальности.
Проект TrustTunnel включает VPN-сервер (этот репозиторий), библиотеку и CLI для клиента, и GUI-приложение.
Возможности сервера
-
VPN-протокол: Библиотека реализует VPN-протокол, совместимый с HTTP/1.1, HTTP/2 и QUIC. Имитируя обычный сетевой трафик, он становится невозможным для обнаружения и блокировки.
-
Гибкое туннелирование трафика: TrustTunnel может туннелировать TCP, UDP и ICMP трафик от и до клиента.
-
Совместимость с платформами: Сервер совместим с Linux и macOS. Клиент доступен для Android, Apple, Windows и Linux.
Возможности клиента
-
Туннелирование трафика: Библиотека способна туннелировать TCP, UDP и ICMP трафик от клиента к серверу и обратно.
-
Кроссплатформенная поддержка: Поддерживает Linux, macOS и Windows, обеспечивая единообразный опыт на разных операционных системах.
-
Системный туннель и SOCKS5-прокси: Можно настроить как системный туннель, используя виртуальный сетевой интерфейс, а также как SOCKS5-прокси.
-
Раздельное туннелирование: Библиотека поддерживает раздельное туннелирование, позволяя пользователям исключать соединения с определёнными доменами или хостами из маршрутизации через VPN-сервер, или, наоборот, направлять через сервер только соединения с определёнными доменами или хостами на основе списка исключений.
-
Пользовательский DNS-апстрим: Пользователи могут указать собственный DNS-апстрим, который используется для DNS-запросов, маршрутизируемых через VPN-сервер.
Быстрый старт
Настройка серверной части
Установка серверной части
Доступен скрипт установки, который можно запустить следующей командой:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Скрипт установки загрузит предварительно собранный пакет из последнего
релиза GitHub для соответствующей архитектуры системы и распакует его в
/opt/trusttunnel. Каталог вывода можно переопределить, указав
флаг -o DIR в конце приведённой выше команды.
Если вы хотите установить определённую версию (вместо последней), используйте -V <version>:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] Предварительно собранные пакеты доступны для архитектур
linux-x86_64,linux-aarch64иmacos-universal(Intel и Apple Silicon).
Обновление серверной части
Скрипт установки всегда устанавливает последнюю доступную версию. Поэтому для обновления установки снова выполните команду установки:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
Это повторно запускает установщик и заменяет двоичные файлы в каталоге
установки (/opt/trusttunnel по умолчанию или в каталоге, указанном вами с помощью -o DIR).
[!NOTE] Не забудьте остановить сервер перед обновлением:
sudo systemctl stop trusttunnelДля запуска сервера после обновления:
sudo systemctl start trusttunnel
Мастер настройки серверной части
Пожалуйста, обратитесь к CONFIGURATION.md за более подробной документацией по настройке сервера.
В каталоге установки находится исполняемый файл setup_wizard, который помогает
сгенерировать файлы конфигурации, необходимые для работы сервера:
cd /opt/trusttunnel/
./setup_wizard -h
Мастер настройки поддерживает интерактивный режим, поэтому вы можете запустить его, и он запросит данные, необходимые для конфигурации сервера.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE]
sudoтребуется для правильного управления TLS-сертификатами.
Мастер запросит следующие поля, некоторые из них имеют значения по умолчанию, которые можно безопасно использовать:
-
Адрес для прослушивания — укажите адрес, на котором сервер будет слушать. Используйте
0.0.0.0:443для нативных развёртываний (HTTPS на всех интерфейсах). Если вы используете Docker с пробросом портов443:8443, укажите0.0.0.0:8443. -
Путь к файлу с учётными данными — путь, где будут храниться учётные данные пользователя для авторизации.
-
Имя пользователя — имя пользователя, которое будет использоваться для авторизации.
-
Пароль — пароль пользователя.
-
Добавить ещё одного пользователя? — выберите
yes, чтобы добавить больше пользователей, илиnoдля продолжения процесса настройки. -
Путь к файлу правил — путь для хранения правил фильтрации.
-
Правила фильтрации соединений — вы можете добавить правила, которые сервер будет использовать для разрешения или запрета соединений пользователя на основе:
- IP-адреса клиента
- Префикса TLS random
- TLS random с маской
Нажмите
n, чтобы разрешить все соединения. -
Путь к файлу для хранения настроек библиотеки — путь для хранения основного файла конфигурации сервера.
-
Выбор сертификата — выберите способ получения TLS-сертификата:
- Выпустить сертификат Let's Encrypt (требуется публичный домен) — мастер
настройки имеет встроенную поддержку ACME и может автоматически получить бесплатный,
публично доверенный сертификат от Let's Encrypt. Вам понадобится:
- Зарегистрированный домен, указывающий на IP-адрес вашего сервера
- Доступ к порту 80 из интернета (для HTTP-01 challenge), или
- Возможность добавлять DNS TXT-записи (для DNS-01 challenge)
- Сгенерировать самоподписанный сертификат — подходит для тестирования или при использовании только CLI-клиента. Примечание: Flutter-клиент пока не поддерживает самоподписанные сертификаты.
- Указать путь к существующему сертификату — используйте собственные файлы сертификатов, полученные от другого CA или инструмента, например certbot.
- Выпустить сертификат Let's Encrypt (требуется публичный домен) — мастер
настройки имеет встроенную поддержку ACME и может автоматически получить бесплатный,
публично доверенный сертификат от Let's Encrypt. Вам понадобится:
-
Путь к файлу для хранения настроек TLS хостов — путь для хранения файла настроек TLS хостов.
На этом все необходимые файлы конфигурации созданы и сохранены на диске.
Жизненный цикл сертификата Let's Encrypt
Мастер настройки может получить сертификат Let's Encrypt при начальной настройке, но вы несёте ответственность за то, чтобы он оставался действительным с течением времени (обновление и перезагрузка/перезапуск службы).
Если вы используете Certbot для управления сертификатами и их автоматического обновления, следуйте руководству в CERT_RENEWAL.md.
Запуск серверной части
Установленный пакет содержит шаблон службы systemd с именем
trusttunnel.service.template.
Этот шаблон можно использовать для настройки сервера как службы systemd:
[!NOTE] Файл шаблона предполагает, что двоичный файл TrustTunnel Endpoint и все его файлы конфигурации находятся в
/opt/trusttunnelи имеют имена файлов по умолчанию. Измените шаблон, если вы использовали другие пути.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
Экспорт конфигурации клиента
Двоичный файл сервера может генерировать конфигурации клиента в двух форматах:
Формат Deep-Link (по умолчанию)
Генерирует компактный URI tt://?, подходящий для QR-кодов и мобильных приложений:
# <client_name> — имя клиента, чьи учётные данные будут включены в конфигурацию
# <address> — `ip`, `ip:port`, `domain` или `domain:port`, который клиент будет использовать для подключения
# Если указан только `ip` или `domain`, будет использован порт из поля `listen_address`
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# Или явно укажите формат:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
Это выводит URI deep-link вида tt://?, который можно:
- Напрямую передать мобильным клиентам
- Использовать с CLI-клиентом или TrustTunnel Flutter Client
Вы также можете указать дополнительные параметры:
--name <display_name>: Задать пользовательское отображаемое имя сервера в приложении клиента.--dns-upstream <dns_upstream>: Указать DNS-апстрим для клиента. Может быть IP-адресом или защищённым DNS URI (например,tls://1.1.1.1,https://dns.google/dns-query). Этот флаг можно использовать несколько раз, чтобы указать список DNS-апстримов.
Пример с пользовательским именем и DNS-апстримами:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> \
--name "Мой защищённый VPN" \
--dns-upstream 1.1.1.1 --dns-upstream tls://8.8.8.8
При использовании --generate-client-random-prefix сервер также добавляет
правило разрешения для сгенерированного значения в файл rules.toml, на который ссылается
vpn.toml.
Примечание: Если ваш сертификат подписан доверенным УЦ (например, Let's Encrypt), он будет автоматически исключён из deep-link для компактности. Самоподписанные сертификаты включаются автоматически.
Формат TOML (для CLI-клиента)
Генерирует традиционный файл конфигурации TOML:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Это выводит файл конфигурации TOML, подходящий для CLI-клиента.
Оба формата содержат всю необходимую информацию для подключения к серверу. См. документацию TrustTunnel Flutter Client для инструкций по настройке.
Поздравляем! Вы завершили настройку сервера!
Настройка клиента
Доступно несколько клиентов для подключения к серверу — см. раздел Клиенты для полного списка. Инструкции ниже охватывают настройку официального CLI-клиента.
Установка клиента
Linux / macOS
Доступен скрипт установки:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Скрипт установки загрузит предварительно собранный пакет из последнего
релиза GitHub для соответствующей архитектуры системы и распакует его в /opt/trusttunnel_client.
Каталог вывода можно переопределить, указав флаг -o DIR в конце приведённой выше команды.
[!NOTE] Скрипт установки поддерживает архитектуры x86_64, aarch64, armv7, mips и mipsel для linux и arm64 и x86_64 для macos.
Windows
Загрузите последний архив релиза со страницы релизов TrustTunnel Client.
Извлеките архив в каталог по вашему выбору, например C:\TrustTunnel\.
Настройка роутера
Для развёртываний на роутерах, пожалуйста, обратитесь к руководствам по установке клиента для конкретных роутеров.
- Роутеры Keenetic: TrustTunnel-Keenetic (руководство на русском языке)
Обновление клиента
Linux / macOS
Скрипт установки всегда устанавливает последнюю доступную версию. Поэтому для обновления установки снова выполните команду установки:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Это повторно запускает установщик и заменяет двоичные файлы в каталоге установки (/opt/trusttunnel_client по умолчанию или в каталоге, указанном вами с помощью -o DIR).
[!NOTE] Не забудьте остановить клиент перед обновлением (например, остановив работающий процесс).
Windows
Загрузите последний релиз со страницы релизов и замените файлы в вашем каталоге установки.
Мастер настройки клиента
В каталоге установки находится исполняемый файл setup_wizard, который помогает
сгенерировать файлы конфигурации, необходимые для работы клиента.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
Чтобы настроить клиента на использование конфигурации, сгенерированной сервером, выполните следующую команду:
./setup_wizard --mode non-interactive \
--endpoint_config <endpoint_config> \
--settings trusttunnel_client.toml
Windows
setup_wizard.exe --mode non-interactive ^
--endpoint_config <endpoint_config> ^
--settings trusttunnel_client.toml
В обоих случаях <endpoint_config> — это путь к файлу конфигурации,
сгенерированному сервером.
trusttunnel_client.toml будет содержать все необходимые настройки для
клиента.
[!TIP] Сгенерированная конфигурация содержит базовые настройки для подключения к серверу. Для расширенных возможностей редактируйте
trusttunnel_client.tomlнапрямую. Вы можете настроить:
- Режим VPN: Маршрутизация всего трафика (
general) или только определённых адресов (selective)- Kill switch: Блокировка трафика при отключении VPN
- DNS-апстримы: Пользовательские DNS-резолверы (поддерживаются DoH, DoT, DoQ)
- Исключения: Домены/IP для обхода VPN или маршрутизации через VPN
- Тип слушателя: TUN-устройство или SOCKS5-прокси
Полный список опций см. в README TrustTunnel CLI Client.
[!NOTE] После редактирования конфигурации перезапустите клиент, чтобы изменения вступили в силу.
Запуск клиента
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo требуется для настройки маршрутов и tun-интерфейса.
Windows
Откройте терминал от имени Администратора и выполните:
trusttunnel_client.exe -c trusttunnel_client.toml
Права администратора необходимы для настройки маршрутов и TUN-интерфейса.
Клиенты
Официальные
CLI
TrustTunnel Client — Linux, macOS, Windows
GUI
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — скоро). Доступен в App Store* и Play Маркет.
[!NOTE] * В некоторых странах приложение iOS недоступно в App Store. Возможно, вам понадобится Apple ID из другой страны для его загрузки. Узнайте, как изменить страну App Store.
Сообщество
[!NOTE] Клиенты сообщества разрабатываются и поддерживаются независимо. Они официально не поддерживаются командой TrustTunnel.
GUI
Trusty — кроссплатформенный GUI-клиент на Flutter (Windows стабильно, macOS альфа). Возможности включают логи в реальном времени, развёртывание SSH-сервера в один клик и автоматическое обнаружение групп доменов для раздельного туннелирования.
TrustTunnel-GUI-Client — GUI-клиент для Windows, реализованный как Python-обёртка для TrustTunnel Client
Surge — (Коммерческий) Набор сетевых инструментов для macOS и iOS с экспериментальной поддержкой TrustTunnel
FireTunnel — Кроссплатформенный клиент на QT, использующий модифицированный TrustTunnel Client
См. также
- CONFIGURATION.md — Документация по настройке
- DEVELOPMENT.md — Документация по разработке
- PROTOCOL.md — Спецификация протокола
- CHANGELOG.md — Журнал изменений
- VERIFY_RELEASES.md — Как проверить релизы
План развития
Хотя наш VPN в настоящее время поддерживает туннелирование TCP/UDP/ICMP трафика, мы планируем добавить поддержку peer-to-peer связи между клиентами.
Следите за этой функцией в будущих релизах.
Лицензия
Этот проект лицензирован под лицензией Apache 2.0. См. LICENSE для получения подробной информации.