rodit-org/altuntun

GitHub: rodit-org/altuntun

基于 Rust 的 WireGuard 用户态实现,相比 boringtun 提供更好的错误处理和 namespace 支持。

Stars: 65 | Forks: 4

# AltunTun **AltunTun** 是 [WireGuard®](https://www.wireguard.com/) 协议的一个实现,由两部分组成: * 可执行程序 `altuntun-cli`,这是 Linux 和 macOS 的一个 [userspace WireGuard](https://www.wireguard.com/xplatform/) 实现。 * 库 `altuntun`,实现了底层的 WireGuard 协议,但不包括需要以平台惯用方式实现的 network 或 tunnel 协议栈。 ## 为什么选择 AltunTun 我以 boringtun 为起点创建了 altuntun,但我发现 boringtun 是一个勉强可用的 wireguard 实现。以下是我的不满之处: * 当 boringtun 启动时无法创建 boringtun.out 文件时,它会静默失败。这通常是因为这不是你第一次运行它,而是第二次或之后,所以文件已经存在。对我来说,这是意外行为,错误处理也很糟糕,而且排查这个问题让我很恼火。 * 它不支持 namespaces。 * 其默认性能还有提升空间,但修复它的 PR 已经挂起好几个月了。 * 无论按什么合理的标准衡量,我都没看到维护者非常积极响应。 * 维护者并不与主要的 wireguard C/Linux 维护者积极合作。 ## AltunTun 和 Boringtun 之间的区别 * 为了可读性,我重构了许多变量的名称。 * 应用了悬而未决的 PR 以添加 namespaces、改进默认性能并修复虚假 re-keying 错误。 * 大多数依赖项已更新,除了 clap 和 base64::encode。 ## 待改进之处 * 使用 tokio 代替当前的方法(有人曾在此尝试:[https://github.com/lz1998/wg-rs](https://github.com/lz1998/wg-rs)) * 错误类型应支持 StdError 和 Display ## 许可证 该项目采用 3-Clause BSD 许可证授权。 更多信息请访问 [WireGuard.com](https://www.wireguard.com/)。 ### 贡献 除非你明确声明,否则根据 3-Clause BSD 许可证的定义,你故意提交以包含在本作品中的任何贡献,均应按上述方式许可,不附带任何额外条款或条件。 如果你想为这个项目做贡献,请联系 。 ## 如何从源代码安装 * sudo apt install pkg-config * git clone [https://github.com/cableguard/altuntun.git](https://github.com/cableguard/altuntun.git) * cargo build --bin altuntun-cli --release * 默认情况下,可执行程序放置在 `./target/release` 文件夹中。你可以手动将其复制到所需位置,或使用 `cargo install --bin altuntun --path .` 进行安装。 你可能需要在 .bashrc 中添加以下行: * sudo setcap cap_net_admin+epi ./PATH/altuntun-cli ## 如何使用 要启动 tunnel,请使用: `altuntun-cli [-f/--foreground] TUNNAME` `altuntun` 启动时会降低权限(drop privileges)。降低权限后,将无法设置 `fwmark`。如果需要 `fwmark`(例如在使用 `wg-quick` 时),请使用 `--disable-drop-privileges` 运行或设置环境变量 `WG_SUDO=1`。 你需要使用以下命令赋予可执行程序 `CAP_NET_ADMIN` 能力:`sudo setcap cap_net_admin+epi altuntun`。 你可以通过将环境变量 `WG_QUICK_USERSPACE_IMPLEMENTATION` 设置为 `altuntun` 来使用 [wg-quick](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8)。例如: `sudo WG_QUICK_USERSPACE_IMPLEMENTATION=altuntun-cli WG_SUDO=1 wg-quick up CONFIGURATION` ## 支持的平台 * 仅在 AMD/Intel 上进行了测试 * 支持 `x86-64` 架构。 WireGuard 是 Jason A. Donenfeld 的注册商标。AltunTun 未获得 Jason A. Donenfeld 的认可。
标签:AltunTun, BoringTun替代, Rust, Socket编程, UDP, VPN, WireGuard, 内核驱动, 加密隧道, 可视化界面, 密码学, 开源, 手动系统调用, 用户态实现, 系统工具, 网络协议, 网络安全, 网络库, 网络流量审计, 网络通信, 虚拟专用网络, 通知系统, 通知系统, 隐私保护, 隧道