TrustTunnel/TrustTunnel
GitHub: TrustTunnel/TrustTunnel
TrustTunnel 是一个现代、开源的 VPN 协议项目,旨在提供快速、安全且难以被检测的流量隧道解决方案。
Stars: 2773 | Forks: 174
客户端
· App store
· Play store
## 目录
- [介绍](#introduction)
- [服务端功能](#server-features)
- [客户端功能](#client-features)
- [快速开始](#quick-start)
- [端点设置](#endpoint-setup)
- [安装端点](#install-the-endpoint)
- [更新端点](#updating-the-endpoint)
- [TrustTunnel Flutter 客户端 1.0 警告](#trusttunnel-flutter-client-10-warning)
- [端点配置向导](#endpoint-configuration-wizard)
- [Let's Encrypt 证书生命周期](#lets-encrypt-certificate-lifecycle)
- [运行端点](#running-endpoint)
- [导出客户端配置](#export-client-configuration)
- [客户端设置](#client-setup)
- [安装客户端](#install-the-client)
- [更新客户端](#updating-the-client)
- [客户端配置向导](#client-configuration-wizard)
- [运行客户端](#running-client)
- [客户端](#clients)
- [参见](#see-also)
- [路线图](#roadmap)
- [许可证](#license)
## 介绍
TrustTunnel 是一个现代、开源的 VPN 协议,最初由
[AdGuard VPN][adguard-vpn] 开发,现在可供任何人使用和审计。
它提供快速、安全、可靠的 VPN 连接,没有通常的折衷。
设计上,TrustTunnel 流量与常规 HTTPS 流量难以区分,
使其能够绕过限速和深度包检测,同时保持强大的隐私保护。
TrustTunnel 项目包括 VPN 端点(本仓库)、
[客户端库和 CLI][trusttunnel-client]
以及 [GUI 应用程序][trusttunnel-flutter-client]。
## 服务端功能
- **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
`:
```
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V
```
#### 更新端点
安装脚本始终安装最新可用版本。
因此,要更新安装,请再次运行安装命令:
```
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
```
这将重新运行安装程序并替换安装目录(默认为 `/opt/trusttunnel` 或通过 `-o DIR` 指定的目录)中的二进制文件。
#### TrustTunnel Flutter 客户端 1.0 警告
#### 端点配置向导
请参考 [CONFIGURATION.md](CONFIGURATION.md) 获取更详细的配置文档。
安装目录包含 `setup_wizard` 二进制文件,用于生成端点运行所需的配置文件:
```
cd /opt/trusttunnel/
./setup_wizard -h
```
设置向导支持交互模式,因此可以运行它并根据提示输入端点配置所需的数据。
```
cd /opt/trusttunnel/
sudo ./setup_wizard
```
向导将询问以下字段,部分字段具有默认值,可以安全使用:
- **监听地址** - 指定端点监听的地址。使用 `0.0.0.0:443` 用于原生部署(所有接口上的 HTTPS)。
如果使用 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][certbot])获取的证书文件。
- **存储 TLS 主机设置文件路径** - 存储 TLS 主机设置文件的路径。
此时,所有必需的配置文件都已创建并保存在磁盘上。
#### Let's Encrypt 证书生命周期
设置向导可以在初始设置期间获取 Let's Encrypt 证书,但你需要负责确保其长期有效(续期和服务重载/重启)。
如果使用 Certbot 管理证书并自动续期,请参考 [CERT_RENEWAL.md](CERT_RENEWAL.md) 中的指南。
#### 运行端点
安装的软件包包含 systemd 服务模板,名为
`trusttunnel.service.template`。
可以使用该模板将端点设置为 systemd 服务:
```
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
```
#### 导出客户端配置
端点二进制文件可以以两种格式生成客户端配置:
##### 深链接格式(默认)
生成一个适合二维码和移动应用的紧凑 `tt://?` URI:
```
# - 客户端名称,这些凭据将包含在配置中
# - 客户端用于连接的 `ip`、`ip:port`、`domain` 或 `domain:port`
# 如果仅指定了 `ip` 或 `domain`,则使用 `listen_address` 字段中的端口
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c -a
# 或显式指定格式:
./trusttunnel_endpoint vpn.toml hosts.toml -c -a --format deeplink
```
这会输出一个 `tt://?` 深链接 URI,可以:
- 直接与移动客户端共享
- 与 [CLI 客户端][trusttunnel-client] 或 [TrustTunnel Flutter 客户端][trusttunnel-flutter-client] 使用
还可以提供其他选项:
- `--name `:为客户端应用中的服务器设置自定义显示名称。
- `--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 -a \
--name "My Secure VPN" \
--dns-upstream 1.1.1.1 --dns-upstream tls://8.8.8.8
```
使用 `--generate-client-random-prefix` 时,端点还会将生成的允许规则追加到 `rules.tl` 文件中,该文件由 `vpn.toml` 引用。
**注意**:如果证书由受信任的 CA 签名(例如 Let's Encrypt),则会自动从深链接中省略以保持紧凑。自签名证书会自动包含在内。
##### TOML 格式(用于 CLI 客户端)
生成一个适用于 CLI 客户端的传统 TOML 配置文件:
```
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c -a --format toml
```
此输出一个适用于 CLI 客户端的 TOML 配置文件。
两种格式都包含连接到端点所需的所有信息。请参阅
[TrustTunnel Flutter 客户端文档][trusttunnel-flutter-configuration] 获取设置说明。
恭喜!端点设置完成!
### 客户端设置
多个客户端可用于连接到端点 — 完整列表请参见
[客户端](#客户端) 部分。以下说明涵盖官方 **[CLI 客户端][trusttunnel-client]** 设置。
#### 安装客户端
##### Linux / macOS
提供了一个安装脚本:
```
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
```
安装脚本将从最新的 GitHub 发布版本下载预编译包并解压到 `/opt/trusttunnel_client`。可以通过在命令末尾指定 `-o DIR` 标志来覆盖输出目录。
##### Windows
从
[TrustTunnel 客户端发布页面][trusttunnel-client-releases] 下载最新发布压缩包。
将压缩包解压到任意目录,例如 `C:\TrustTunnel\`。
##### 路由器设置
对于路由器部署,请参考特定路由器的客户端安装指南。
- 锐捷路由器:[TrustTunnel-Keenetic](https://github.com/artemevsevev/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` 指定的目录)中的二进制文件。
##### Windows
从
[发布页面][trusttunnel-client-releases] 下载最新版本并替换安装目录中的文件。
#### 客户端配置向导
安装目录包含 `setup_wizard` 二进制文件,用于生成客户端运行所需的配置文件。
##### Linux / macOS
```
cd /opt/trusttunnel_client/
./setup_wizard -h
```
要配置客户端以使用端点生成的配置,请运行以下命令:
```
./setup_wizard --mode non-interactive \
--endpoint_config \
--settings trusttunnel_client.toml
```
##### Windows
```
setup_wizard.exe --mode non-interactive ^
--endpoint_config ^
--settings trusttunnel_client.toml
```
在这两种情况下,`` 是端点生成的配置文件路径。
`trusttunnel_client.toml` 将包含客户端运行所需的所有配置。
#### 运行客户端
##### 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][trusttunnel-client] — Linux、macOS、Windows
#### GUI
[TrustTunnel Flutter Client][trusttunnel-flutter-client] —
iOS、Android(macOS、Windows 即将推出)。
可在 [App Store][app-store] 和 [Play Store][play-store] 上获取。
### 社区
#### GUI
[TrustTunnel-GUI-Client](https://github.com/blazuryk/TrustTunnel-GUI-Client) — Windows 下的 GUI 客户端,作为 [TrustTunnel Client][trusttunnel-client] 的 Python 包装器实现
[Surge](https://nssurge.com) — (商业)macOS 和 iOS 网络工具箱,提供实验性的 TrustTunnel 支持
## 参见
- [CONFIGURATION.md](CONFIGURATION.md) - 配置文档
- [DEVELOPMENT.md](DEVELOPMENT.md) - 开发文档
- [PROTOCOL.md](PROTOCOL.md) - 协议规范
- [CHANGELOG.md](CHANGELOG.md) - 更新日志
- [VERIFY_RELEASES.md](VERIFY_RELEASES.md) - 如何验证发布版本
## 路线图
虽然我们的 VPN 目前支持隧道传输 TCP/UDP/ICMP 流量,但我们计划添加对
客户端之间点对点通信的支持。
敬请期待即将发布的版本中此功能。
## 许可证
本项目根据 Apache 2.0 许可证授权。详细信息请参见 [LICENSE](LICENSE)。
标签:AdGuard VPN, HTTPS流量, TLS混淆, TrustTunnel, VPN客户端, VPN服务端, 可视化界面, 安全传输, 开源VPN, 抗深度包检测, 日志审计, 流量伪装, 流量隐蔽, 混淆VPN, 现代VPN协议, 端到端加密, 绕过DPI, 网络匿名, 网络安全, 网络隧道, 跨平台VPN, 通知系统, 隐私保护, 高速VPN