TrustTunnel/TrustTunnel

GitHub: TrustTunnel/TrustTunnel

TrustTunnel 是一个现代、开源的 VPN 协议项目,旨在提供快速、安全且难以被检测的流量隧道解决方案。

Stars: 2773 | Forks: 174

TrustTunnel

客户端 · 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