
TrustTunnel v1.1.0
开源VPN协议,通过HTTPS隧道传输TCP、UDP和ICMP流量,绕过DPI和限速。支持分流隧道、SOCKS5代理、自定义DNS和跨平台客户端。
客户端 · App Store · Play Store
目录
简介
TrustTunnel 是一个现代化的开源 VPN 协议,最初由 AdGuard VPN 开发,现在可供任何人使用和审计。
它提供快速、安全、可靠的 VPN 连接,没有常见的权衡。 在设计上,TrustTunnel 流量与常规 HTTPS 流量无法区分, 从而可以绕过限速和深度包检测,同时保持强大的隐私保护。
TrustTunnel 项目包括 VPN 端点(本仓库)、 客户端库和 CLI, 以及 GUI 应用程序。
服务端特性
-
VPN 协议:该库实现了兼容 HTTP/1.1、HTTP/2 和 QUIC 的 VPN 协议。 通过模仿常规网络流量,使得检测和阻断变得不可能。
-
灵活的流量隧道:TrustTunnel 可以隧道传输客户端与服务器之间的 TCP、UDP 和 ICMP 流量。
-
平台兼容性:服务端兼容 Linux 和 macOS。 客户端可用于 Android、Apple、Windows 和 Linux。
客户端特性
-
流量隧道:该库能够将客户端与端点之间的 TCP、UDP 和 ICMP 流量进行隧道传输。
-
跨平台支持:支持 Linux、macOS 和 Windows 平台, 在不同操作系统上提供一致的体验。
-
系统级隧道和 SOCKS5 代理:可设置成系统级隧道(使用虚拟网络接口), 也可作为 SOCKS5 代理使用。
-
分流隧道:该库支持分流隧道,允许用户将特定域名或主机的连接排除在 VPN 端点路由之外, 或者相反,仅将特定域名或主机的连接通过端点路由(基于排除列表)。
-
自定义 DNS 上游:用户可以指定自定义 DNS 上游, 用于通过 VPN 端点路由的 DNS 查询。
快速开始
端点设置
安装端点
可以使用以下命令运行安装脚本:
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 证书。
向导将询问以下字段,其中一些字段有可以安全使用的默认值:
-
监听地址 - 指定端点监听的地址。对于原生部署(所有接口上的 HTTPS),使用
0.0.0.0:443。 如果使用 Docker 端口映射443:8443,则设置为0.0.0.0:8443。 -
凭据文件路径 - 存储用户授权凭据的路径。
-
用户名 - 用户用于授权的用户名。
-
密码 - 用户的密码。
-
添加更多用户? - 选择
yes以添加更多用户,或选择no继续配置过程。 -
规则文件路径 - 存储过滤规则的路径。
-
连接过滤规则 - 您可以添加规则,让端点根据以下条件允许或拒绝用户的连接:
- 客户端 IP 地址
- TLS 随机前缀
- TLS 随机掩码
按
n允许所有连接。 -
存储库设置的文件的路径 - 存储主端点配置文件的路径。
-
证书选择 - 选择如何获取 TLS 证书:
- 颁发 Let's Encrypt 证书(需要公共域名)- 设置向导内置 ACME 支持,可以自动从 Let's Encrypt 获取免费的公共信任证书。您需要:
- 一个指向您服务器 IP 地址的注册域名
- 可从互联网访问的 80 端口(用于 HTTP-01 挑战),或
- 能够添加 DNS TXT 记录(用于 DNS-01 挑战)
- 生成自签名证书 - 适用于测试或仅使用 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 端点二进制文件及其所有配置文件位于
/opt/trusttunnel中,并使用默认文件名。如果您使用了不同的路径,请修改模板。
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
导出客户端配置
端点二进制文件可以生成两种格式的客户端配置:
深度链接格式(默认)
生成紧凑的 tt://? URI,适用于二维码和移动应用:
# <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
这将输出一个 tt://? 深度链接 URI,可以:
- 直接共享给移动客户端
- 与 CLI 客户端 或 TrustTunnel Flutter 客户端 一起使用
您还可以提供其他选项:
--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 时,端点还会将所生成值的允许规则附加到 vpn.toml 引用的 rules.toml 文件中。
注意:如果您的证书由受信任的 CA 签发(例如 Let's Encrypt),则会自动从深度链接中省略以保持紧凑。自签名证书会自动包含。
TOML 格式(用于 CLI 客户端)
生成传统的 TOML 配置文件:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
这将输出一个适用于 CLI 客户端的 TOML 配置文件。
两种格式都包含连接端点所需的所有信息。有关设置说明,请参阅 TrustTunnel Flutter 客户端文档。
恭喜!您已完成端点设置!
客户端设置
有多种客户端可用于连接端点 — 完整列表请参见客户端部分。以下说明涵盖官方 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] 安装脚本支持 Linux 的 x86_64、aarch64、armv7、mips 和 mipsel 架构, 以及 macOS 的 arm64 和 x86_64。
Windows
从 TrustTunnel 客户端发布页面 下载最新的发布归档。
将归档解压到您选择的目录,例如 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)- 安全开关:VPN 断开时阻止流量
- DNS 上游:自定义 DNS 解析器(支持 DoH、DoT、DoQ)
- 排除项:要绕过或通过 VPN 路由的域名/IP
- 监听器类型:TUN 设备或 SOCKS5 代理
有关所有可用选项,请参阅 TrustTunnel CLI 客户端 README。
[!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 客户端 — Linux、macOS、Windows
GUI
TrustTunnel Flutter 客户端 — iOS、Android(macOS、Windows — 即将推出)。 可在 App Store* 和 Play Store 获取。
[!NOTE] * 在某些国家/地区,iOS 应用在 App Store 中不可用。您可能需要使用其他国家/地区的 Apple ID 才能下载。了解如何更改 App Store 国家/地区。
社区
[!NOTE] 社区客户端由社区独立开发和维护。 TrustTunnel 团队不提供官方支持。
GUI
Trusty - 使用 Flutter 构建的跨平台 GUI 客户端(Windows 稳定版,macOS alpha 版)。功能包括实时日志、一键 SSH 服务器部署以及分流域名组的自动发现。
TrustTunnel-GUI-Client — Windows GUI 客户端,实现为 TrustTunnel 客户端 的 Python 封装。
Surge — (商业)macOS 和 iOS 网络工具箱,支持实验性 TrustTunnel。
FireTunnel - 使用 QT 编写的跨平台客户端,基于修改后的 TrustTunnel Client。
另请参阅
- CONFIGURATION.md - 配置文档
- DEVELOPMENT.md - 开发文档
- PROTOCOL.md - 协议规范
- CHANGELOG.md - 变更日志
- VERIFY_RELEASES.md - 如何验证发布版本
路线图
虽然我们的 VPN 目前支持 TCP/UDP/ICMP 流量的隧道传输,但我们计划增加对客户端之间点对点通信的支持。
请关注未来版本中的这一功能。
许可协议
本项目采用 Apache 2.0 许可。详情请参见 LICENSE。