返回更新列表
新发布Sep 2, 2026

gotatun v0.9.2

基于Rust的用户空间WireGuard®实现

分享

GotaTun

一个用户空间的 WireGuard® 实现,是 BoringTun 的分支。

许可证

除非另有说明,本仓库中的所有源代码均受 Mozilla Public License 2.0 版条款约束。该许可证的副本可在文件 "LICENSE" 中找到,或访问 https://www.mozilla.org/MPL/2.0/。

2026 年 3 月 5 日之前所做的贡献按旧的 BSD 3-clause 许可证授权。该许可证的副本可在文件 "LICENSE-CLOUDFLARE" 中找到。

贡献

除非您明确声明 otherwise,否则您有意提交以纳入本作品的任何贡献(如 MPL-2.0 许可证所定义)均应按上述许可证授权,不附加任何额外条款或条件。

构建

  • 仅库: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 像配置常规 WireGuard 隧道一样配置该隧道,或使用任何其他工具。

也可以通过将环境变量 WG_QUICK_USERSPACE_IMPLEMENTATION 设置为 gotatun 来与 wg-quick 一起使用。例如:

sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION

请注意,如果您在 Linux 上安装了 wireguard 内核模块,wg-quick 将忽略 WG_QUICK_USERSPACE_IMPLEMENTATION。

测试

测试此项目有几项要求:

  • sudo:创建隧道所需。运行 cargo test 时,系统会提示您输入密码。
  • Docker:您可以在此处安装。如果您使用的是 Ubuntu/Debian,可以运行 apt-get install docker.io。

支持的平台

目标三元组二进制库
x86_64-unknown-linux-gnu✓✓
aarch64-unknown-linux-gnu✓✓
riscv64gc-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 相同,但有以下区别:

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 类似。具体而言,接口名称必须为 utun[0-9]+ 以指定明确的接口名称,或使用 utun 让内核选择最低可用编号。如果您选择 utun 作为接口名称,并且定义了环境变量 WG_TUN_NAME_FILE,则内核所选接口的实际名称将写入该变量指定的文件中。

UAPI 扩展

有关 wg 配置协议的扩展,请参阅 UAPI。


审计

该项目已进行独立的安全审计。 请参阅 audit 目录。


WireGuard 是 Jason A. Donenfeld 的注册商标。GotaTun 未获得 Jason A. Donenfeld 的赞助或认可。

分类