
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 的赞助或认可。