DefGuard/wireguard-rs
GitHub: DefGuard/wireguard-rs
一个跨平台 Rust 库,为内核态和用户态 WireGuard 实现提供统一的编程接口。
Stars: 292 | Forks: 28
**defguard_wireguard_rs** 是一个多平台 Rust 库,提供统一的高级 API,用于使用原生 OS 内核和用户空间 WireGuard 协议实现来管理 WireGuard 接口。
它可用于创建您自己的 [WireGuard:tm:](https://www.wireguard.com/) VPN 服务器或客户端,以实现安全且私密的网络连接。
它是作为 [defguard](https://github.com/defguard/defguard) 安全平台的一部分开发的,并用于 [gateway/server](https://github.com/defguard/gateway) 以及 [desktop client](https://github.com/defguard/client)。
## 支持的平台
- 原生 OS 内核:Linux, FreeBSD (以及 pfSense/OPNSense), NetBSD, Windows
- 用户空间:Linux, macOS, FreeBSD, NetBSD
### 独特功能
- **Peer 路由** - 参见 [WGApi](https://docs.rs/defguard_wireguard_rs/latest/defguard_wireguard_rs/struct.WGApi.html) 文档。
- 配置 **DNS 解析器** - 参见 [WGApi](https://docs.rs/defguard_wireguard_rs/latest/defguard_wireguard_rs/struct.WGApi.html) 文档。
- 在 FreeBSD 上,网络接口使用 **ioctl** 进行管理。
- 在 Linux 上,使用 **netlink** 处理网络路由。
- **fwmark** 处理
### Windows 支持
请注意,[WireGuard-NT](https://git.zx2c4.com/wireguard-nt/about/) [dll 文件](https://download.wireguard.com/wireguard-nt/) 必须放置在相对于您的二进制文件的 `resources-windows/binaries/wireguard.dll` 路径下。
#### Windows 开发
进行 Windows 开发您需要:
1. `stable-x86_64-pc-windows-gnu` Rust 工具链。使用 `rustup` 更改工具链:
```
rustup install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu
```
2. 安装 [MSYS2](https://www.msys2.org/)
3. 然后在 MSYS2 终端中运行:
```
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-nasm
```
4. 最后将 msys 添加到您的 PATH:
```
# cmd
set PATH=C:\msys64\ucrt64\bin;%PATH%
# power-shell
$env:PATH = "C:\msys64\ucrt64\bin;" + $env:PATH
```
更多信息可以在 [这里](https://stackoverflow.com/a/79640980) 找到。
## 示例
- Client: https://github.com/DefGuard/wireguard-rs/blob/main/examples/client.rs
- Server: https://github.com/DefGuard/wireguard-rs/blob/main/examples/server.rs
## 文档
更多信息请参见 [文档](https://defguard.gitbook.io)。
## 社区与支持
通过 [GitHub Discussions](https://github.com/DefGuard/defguard/discussions/new/choose) 联系我们的社区
## 贡献
请查阅 [贡献指南](https://defguard.gitbook.io/defguard/for-developers/contributing) 了解如何开始为项目做贡献。您可能也会发现我们的 [环境设置指南](https://defguard.gitbook.io/defguard/for-developers/dev-env-setup) 很有用。
# 法律信息
WireGuard® 是 Jason A. Donenfeld 的 [注册商标](https://www.wireguard.com/trademark-policy/)。
标签:API, Defguard, DNS配置, FreeBSD, Fwmark, ioctl, Netlink, Rust, VPN, WireGuard, WireGuard-NT, 内核态, 加密通信, 可视化界面, 客户端开发, 用户态, 网关开发, 网络安全, 网络安全, 网络接口管理, 网络流量审计, 网络路由, 跨平台库, 通知系统, 通知系统, 隐私保护, 隐私保护