13 个稳定版本 (3 个主要版本)

3.0.0 2023年4月23日
3.0.0-rc12023年1月14日
2.0.5 2022年5月6日
2.0.2 2021年12月25日
0.2.0 2019年10月3日

#960 in 网络编程

Download history 6185/week @ 2024-03-13 6251/week @ 2024-03-20 4081/week @ 2024-03-27 7737/week @ 2024-04-03 6135/week @ 2024-04-10 6912/week @ 2024-04-17 7662/week @ 2024-04-24 5369/week @ 2024-05-01 7088/week @ 2024-05-08 9809/week @ 2024-05-15 6316/week @ 2024-05-22 6568/week @ 2024-05-29 5990/week @ 2024-06-05 9062/week @ 2024-06-12 6133/week @ 2024-06-19 7532/week @ 2024-06-26

每月 30,762 次下载
用于 wireguard-p2p

MIT 许可证

145KB
3K SLoC

wireguard-uapi-rs

Build Status codecov Crates version docs.rs MIT

此库在 Rust 中实现了 Linux 的 WireGuard Netlink API

  • 如果您只是阅读 WireGuard 设备接口,此库完全支持该功能。
  • 如果您正在创建新的 WireGuard 设备接口,此库提供部分支持。创建和删除设备接口是可能的,但目前尚无法为这些设备添加 IP 地址。

以下是一个快速示例。

use failure;
use wireguard_uapi::{DeviceInterface, WgSocket};

fn main() -> Result<(), failure::Error> {
  let mut wg = WgSocket::connect()?;
  let device = wg.get_device(DeviceInterface::from_name("wgtest0"))?;

  print_device(&device);
  Ok(())
}

权限

编译的二进制文件需要 CAP_NET_ADMIN 能力来读取网络接口。如果您在使用此库时遇到访问错误,请确保编译的可执行文件具有该权限。如果您信任编译的二进制文件,一种授予其权限的方法是

sudo setcap CAP_NET_ADMIN=+eip ./my-compiled-binary

免责声明

这不是官方 WireGuard 产品。(尽管我很感兴趣将其变为官方产品。)

请随意提交错误报告。

依赖项

~2MB
~48K SLoC