
Открытый протокол 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
для продолжения процесса настройки.
Путь к файлу правил — путь для хранения правил фильтрации.
Правила фильтрации соединений — вы можете добавить правила, которые сервер будет использовать для разрешения или запрета соединений пользователя на основе:
Нажмите n, чтобы разрешить все соединения.
Путь к файлу для хранения настроек библиотеки — путь для хранения основного файла конфигурации сервера.
Выбор сертификата — выберите способ получения TLS-сертификата:
На этом все необходимые файлы конфигурации созданы и сохранены на диске.
Мастер настройки может получить сертификат 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
Двоичный файл сервера может генерировать конфигурации клиента в двух форматах:
Генерирует компактный 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://?, который можно:
Вы также можете указать дополнительные параметры:
--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:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
Это выводит файл конфигурации TOML, подходящий для CLI-клиента.
Оба формата содержат всю необходимую информацию для подключения к серверу. См. документацию TrustTunnel Flutter Client для инструкций по настройке.
Поздравляем! Вы завершили настройку сервера!
Доступно несколько клиентов для подключения к серверу — см. раздел Клиенты для полного списка. Инструкции ниже охватывают настройку официального CLI-клиента.
Доступен скрипт установки:
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.
Загрузите последний архив релиза со страницы релизов TrustTunnel Client.
Извлеките архив в каталог по вашему выбору, например C:\TrustTunnel\.
Для развёртываний на роутерах, пожалуйста, обратитесь к руководствам по установке клиента для конкретных роутеров.
Скрипт установки всегда устанавливает последнюю доступную версию. Поэтому для обновления установки снова выполните команду установки:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
Это повторно запускает установщик и заменяет двоичные файлы в каталоге установки (/opt/trusttunnel_client по умолчанию или в каталоге, указанном вами с помощью -o DIR).
[!NOTE] Не забудьте остановить клиент перед обновлением (например, остановив работающий процесс).
Загрузите последний релиз со страницы релизов и замените файлы в вашем каталоге установки.
В каталоге установки находится исполняемый файл setup_wizard, который помогает
сгенерировать файлы конфигурации, необходимые для работы клиента.
cd /opt/trusttunnel_client/
./setup_wizard -h
Чтобы настроить клиента на использование конфигурации, сгенерированной сервером, выполните следующую команду:
./setup_wizard --mode non-interactive \
--endpoint_config <endpoint_config> \
--settings trusttunnel_client.toml
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] После редактирования конфигурации перезапустите клиент, чтобы изменения вступили в силу.
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
sudo требуется для настройки маршрутов и tun-интерфейса.
Откройте терминал от имени Администратора и выполните:
trusttunnel_client.exe -c trusttunnel_client.toml
Права администратора необходимы для настройки маршрутов и TUN-интерфейса.
TrustTunnel Client — Linux, macOS, Windows
TrustTunnel Flutter Client — iOS, Android (macOS, Windows — скоро). Доступен в App Store* и Play Маркет.
[!NOTE] * В некоторых странах приложение iOS недоступно в App Store. Возможно, вам понадобится Apple ID из другой страны для его загрузки. Узнайте, как изменить страну App Store.
[!NOTE] Клиенты сообщества разрабатываются и поддерживаются независимо. Они официально не поддерживаются командой TrustTunnel.
Trusty — кроссплатформенный GUI-клиент на Flutter (Windows стабильно, macOS альфа). Возможности включают логи в реальном времени, развёртывание SSH-сервера в один клик и автоматическое обнаружение групп доменов для раздельного туннелирования.
TrustTunnel-GUI-Client — GUI-клиент для Windows, реализованный как Python-обёртка для TrustTunnel Client
Surge — (Коммерческий) Набор сетевых инструментов для macOS и iOS с экспериментальной поддержкой TrustTunnel
FireTunnel — Кроссплатформенный клиент на QT, использующий модифицированный TrustTunnel Client
Хотя наш VPN в настоящее время поддерживает туннелирование TCP/UDP/ICMP трафика, мы планируем добавить поддержку peer-to-peer связи между клиентами.
Следите за этой функцией в будущих релизах.
Этот проект лицензирован под лицензией Apache 2.0. См. LICENSE для получения подробной информации.
Путь к файлу для хранения настроек TLS хостов — путь для хранения файла настроек TLS хостов.