NordSecurity/NepTUN

GitHub: NordSecurity/NepTUN

Rust 编写的跨平台 WireGuard 用户态实现,提供命令行工具和可嵌入式库。

Stars: 14 | Forks: 6

# NepTUN **NepTUN** 是 [WireGuard®](https://www.wireguard.com/) 协议的一个实现,旨在实现可移植性和速度。 该项目由两部分组成: * 可执行文件 `neptun-cli`,这是用于 Linux 和 macOS 的[用户空间 WireGuard](https://www.wireguard.com/xplatform/) 实现。 * 库 `neptun`,可用于在各种平台(包括 iOS 和 Android)上实现快速高效的 WireGuard 客户端应用。它实现了底层的 WireGuard 协议,但不包括网络或隧道堆栈,这些可以以符合平台特性的方式实现。 ### 构建 - 仅库文件:`cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]` - 可执行文件:`cargo build --bin neptun-cli --release [--target $(TARGET_TRIPLE)]` 默认情况下,可执行文件位于 `./target/release` 文件夹中。您可以手动将其复制到所需位置,或使用 `cargo install --bin neptun --path .` 进行安装。 ### 运行 根据规范,启动隧道请使用: `neptun-cli [-f/--foreground] INTERFACE-NAME` 然后可以使用 [wg](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg.8) 将其配置为常规的 WireGuard 隧道,或使用任何其他工具。 也可以通过将环境变量 `WG_QUICK_USERSPACE_IMPLEMENTATION` 设置为 `neptun` 来配合 [wg-quick](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8) 使用。例如: `sudo WG_QUICK_USERSPACE_IMPLEMENTATION=neptun-cli WG_SUDO=1 wg-quick up CONFIGURATION` ### 测试 测试本项目有一些要求: - `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 | ✓ | ✓ | armv7-unknown-linux-gnueabihf | ✓ | ✓ | x86_64-apple-darwin | ✓ | ✓ | x86_64-pc-windows-msvc | | ✓ | aarch64-apple-ios | | ✓ | armv7-apple-ios | | ✓ | armv7s-apple-ios | | ✓ | aarch64-linux-android | | ✓ | arm-linux-androideabi | | ✓ | 未来可能会添加其他平台 #### Linux 支持 `x86-64`、`aarch64` 和 `armv7` 架构。其行为应与 [wireguard-go](https://git.zx2c4.com/wireguard-go/about/) 相同,但有以下区别: `neptun` 启动时会降低权限。权限降低后,无法设置 `fwmark`。如果需要 `fwmark`(例如使用 `wg-quick` 时),请使用 `--disable-drop-privileges` 运行或设置环境变量 `WG_SUDO=1`。 您需要使用以下命令赋予可执行文件 `CAP_NET_ADMIN` 能力:`sudo setcap cap_net_admin+epi neptun`。不需要 sudo。 #### macOS 其行为与 [wireguard-go](https://git.zx2c4.com/wireguard-go/about/) 类似。具体而言,对于显式接口名称,接口名必须是 `utun[0-9]+`,或者使用 `utun` 让内核选择最低可用的编号。如果您选择 `utun` 作为接口名,并且定义了环境变量 `WG_TUN_NAME_FILE`,那么内核选择的接口的实际名称将被写入该变量指定的文件中。 ## 许可证 该项目基于 [3-Clause BSD License](https://opensource.org/licenses/BSD-3-Clause) 授权。 ### 贡献 除非您明确声明,否则您有意提交包含在作品中的任何贡献,均应按照 3-Clause BSD License 的定义进行许可,无需额外的条款或条件。 如果您想为这个项目做出贡献,请阅读我们的 [`CONTRIBUTING.md`]。 ## 致谢 该项目基于 Cloudflare 的 [BoringTun](https://github.com/cloudflare/boringtun) 项目。 WireGuard 是 Jason A. Donenfeld 的注册商标。NepTUN 未由 Jason A. Donenfeld 赞助或认可。
标签:Android, DNS解析, DSL, iOS, neptun, Rust, TUN, UDP, VPN, WireGuard, 加密通信, 可视化界面, 开源项目, 用户态协议栈, 系统库, 网络安全, 网络流量审计, 虚拟专用网络, 通知系统, 通知系统, 隐私保护, 隧道协议