#wireguard #networking #protocols #tunnel #speed #boringtun #portability

boringtun-easytier

为便携性和速度设计的WireGuard®协议的实现。针对EasyTier修改的版本。

1个不稳定版本

0.6.0 2024年6月2日

#4#便携性

Download history 328/week @ 2024-06-01 156/week @ 2024-06-08 12/week @ 2024-06-15 7/week @ 2024-06-22 45/week @ 2024-06-29 151/week @ 2024-07-06 116/week @ 2024-07-13 106/week @ 2024-07-20 155/week @ 2024-07-27 543/week @ 2024-08-03

936 每月下载量
用于 easytier

BSD-3-Clause

265KB
5.5K SLoC

boringtun logo banner

BoringTun

警告

BoringTun目前正在重构。您现在可能不应该依赖于或链接到master分支。相反,您应该使用crates.io页面。

  • boringtun: crates.io
  • boringtun-cli crates.io

BoringTun是为便携性和速度设计的WireGuard®协议的实现。

BoringTun已成功部署在数百万台iOSAndroid消费设备上,以及数千台Cloudflare Linux服务器上。

该项目由两部分组成

  • 可执行文件boringtun-cli,适用于Linux和macOS的用户空间WireGuard实现。
  • boringtun,可用于在各种平台上实现快速高效的WireGuard客户端应用程序,包括iOS和Android。它实现了底层的WireGuard协议,不包含网络或隧道栈,这些可以以平台习惯的方式实现。

安装

您可以使用cargo安装此项目

cargo install boringtun-cli

构建

  • 仅库:cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]
  • 可执行文件: cargo build --bin boringtun-cli --release [--target $(TARGET_TRIPLE)]

默认情况下,可执行文件放在 ./target/release 文件夹中。您可以手动将其复制到所需的文件夹,或者使用以下命令安装:cargo install --bin boringtun --path .

运行

根据规范,启动隧道使用

boringtun-cli[-f/--前台] INTERFACE-NAME

然后可以使用 wg 配置隧道,就像常规 WireGuard 隧道一样,或使用任何其他工具。

也可以通过设置环境变量 WG_QUICK_USERSPACE_IMPLEMENTATIONboringtunwg-quick 一起使用。例如:

sudoWG_QUICK_USERSPACE_IMPLEMENTATION=boringtun-cliWG_SUDO=1wg-quick upCONFIGURATION

测试

测试此项目有一些要求

  • sudo:创建隧道所需的。当你运行 cargo test 时,会提示你输入密码。
  • Docker:你可以从这里 安装 它。如果你使用 Ubuntu/Debian,你可以运行 apt-get install docker.io

支持的平台

目标三元组 二进制
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-64aarch64armv7 架构。行为应该与 wireguard-go 相同,以下有区别

boringtun 在启动时会降级权限。当权限降级时,无法设置 fwmark。如果需要 fwmark,例如在使用 wg-quick 时,请使用 --disable-drop-privileges 或设置环境变量 WG_SUDO=1

您需要使用以下命令给可执行文件分配 CAP_NET_ADMIN 权限: sudo setcap cap_net_admin+epi boringtun。sudo 不是必需的。

macOS

该行为与wireguard-go类似。具体来说,接口名称必须为utun[0-9]+,表示显式接口名称,或者utun,以便内核选择最低可用的接口。如果您选择utun作为接口名称,并且定义了环境变量WG_TUN_NAME_FILE,则内核选择的实际接口名称将写入由该变量指定的文件。


FFI绑定

该库公开了一组C ABI绑定,这些绑定在wireguard_ffi.h头文件中定义。C绑定可以与C/C++、Swift(使用桥接头)或C#(使用DLLImport并设置CallingConventionCdecl)一起使用。

JNI绑定

该库公开了一组Java本地接口绑定,这些绑定在src/jni.rs中定义。

许可证

该项目受3-Clause BSD许可证许可。

贡献

除非您明确声明,否则根据3-Clause BSD许可证定义的,您有意提交供工作包含的贡献,将按上述方式许可,不附加任何额外条款或条件。

如果您想为此项目做出贡献,请阅读我们的CONTRIBUTING.md


WireGuard是Jason A. Donenfeld的注册商标。BoringTun不是由Jason A. Donenfeld赞助或认可的。


lib.rs:

WireGuard协议客户端的简单实现。

git clone https://github.com/cloudflare/boringtun.git

依赖项

~10–20MB
~371K SLoC