mullvad/gotatun

GitHub: mullvad/gotatun

Rust 编写的用户空间 WireGuard 实现,提供跨平台 VPN 隧道能力并兼容标准 WireGuard 工具链。

Stars: 1204 | Forks: 28

# GotaTun 一个用户空间的 [WireGuard®](https://www.wireguard.com/) 实现,也是 [BoringTun](https://github.com/cloudflare/boringtun) 的一个分支。 ### 构建 - 仅库文件:`cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]` - 可执行文件:`cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]` #### 安装 默认情况下,可执行文件放置在 `./target/release` 文件夹中。您可以手动将其复制到所需位置,或使用 `cargo install --bin gotatun --path .` 进行安装。 #### Nix 要构建可执行文件,只需运行 `nix build .#gotatun`。最终的二进制文件将位于 `result/bin/gotatun`。 ### 运行 根据规范,要启动隧道,请使用: `gotatun [-f/--foreground] INTERFACE-NAME` 然后可以使用 [wg](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg.8) 将隧道配置为常规的 WireGuard 隧道,或使用任何其他工具。 也可以通过将环境变量 `WG_QUICK_USERSPACE_IMPLEMENTATION` 设置为 `gotatun` 来配合 [wg-quick](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8) 使用。例如: `sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION` *请注意,如果您安装了 wireguard kernel module,Linux 上的 `wg-quick` 将忽略 `WG_QUICK_USERSPACE_IMPLEMENTATION`。* ### 测试 测试此项目有一些要求: - `sudo`:创建隧道所需。运行 `cargo test` 时,系统会提示您输入密码。 - Docker:您可以在[这里](https://www.docker.com/get-started)安装。如果您使用的是 Ubuntu/Debian,可以运行 `apt-get install docker.io`。 ## 支持的平台 Target triple |Binary|Library| ------------------------------|:----:|------| x86_64-unknown-linux-gnu | ✓ | ✓ | aarch64-unknown-linux-gnu | ✓ | ✓ | aarch64-apple-darwin | ✓ | ✓ | x86_64-pc-windows-msvc | | ✓ | x86_64-pc-windows-gnullvm | | ✓ | aarch64-pc-windows-msvc | | ✓ | aarch64-pc-windows-gnullvm | | ✓ | x86_64-linux-android | | ✓ | aarch64-linux-android | | ✓ | aarch64-apple-ios | | ✓ | 其他目标可能可行,但我们仅针对这些进行测试 #### Linux 支持 `x86-64` 和 `aarch64` 架构。其行为应与 [wireguard-go](https://git.zx2c4.com/wireguard-go/about/) 相同,但有以下区别: `gotatun` 启动时会降低权限。权限降低后,无法设置 `fwmark`。如果需要 `fwmark`(例如使用 `wg-quick` 时),请使用 `--disable-drop-privileges` 运行或设置环境变量 `WG_SUDO=1`。 您需要使用以下命令赋予可执行文件 `CAP_NET_ADMIN` 能力:`sudo setcap cap_net_admin+epi gotatun`。不需要 sudo。 #### macOS 其行为与 [wireguard-go](https://git.zx2c4.com/wireguard-go/about/) 类似。具体来说,显式接口名称必须是 `utun[0-9]+`,或者使用 `utun` 让内核选择最低可用编号。如果您选择 `utun` 作为接口名称,并且定义了环境变量 `WG_TUN_NAME_FILE`,则内核选择的接口的实际名称将写入该变量指定的文件中。 ## UAPI 扩展 有关 `wg` 配置协议的扩展,请参阅 [UAPI](./UAPI.md)。 ## 审计 该项目已进行过独立的安全审计。 请参阅 [audit](./audits/README.md) 目录。 ## 许可证 该项目采用 [3-Clause BSD License](https://opensource.org/licenses/BSD-3-Clause) 授权。 ### 贡献 除非您明确声明,否则您有意提交以包含在作品中的任何贡献,均应根据 3-Clause BSD License 的定义,按上述方式许可,无需任何附加条款或条件。 WireGuard 是 Jason A. Donenfeld 的注册商标。GotaTun 未得到 Jason A. Donenfeld 的赞助或认可。
标签:BoringTun分支, DNS解析, Google搜索, GotaTun, Linux网络工具, Rust, Tun设备, VPN, WireGuard, 加密通信, 可视化界面, 基础设施, 开源项目, 用户态网络, 网络安全, 网络安全协议, 网络流量审计, 通知系统, 通知系统, 隐私保护, 隧道协议