这个项目能做什么
awgctrl-go 是一个用于在 Linux 上控制 WireGuard 和 AmneziaWG 设备的 Go 库。它是 WireGuard/wgctrl-go 的分叉版本,扩展了完整的 AmneziaWG v2 支持,包括通过 netlink 读写 AWG 混淆参数、参数验证、自动生成以及用户态守护进程支持。
与上游 wgctrl-go 相比,该分叉版本新增了写入和读取 AmneziaWG 参数、对等端级 AdvancedSecurity、AWG 参数的自动生成与验证、用户态 AWG 守护进程支持、context.Context API,以及单次 netlink 往返的能力。
平台支持:Linux 支持内核态 WireGuard、内核态 AmneziaWG、用户态 WireGuard 和用户态 AmneziaWG。FreeBSD 和 OpenBSD 仅支持内核态和用户态 WireGuard。Windows 仅支持用户态 WireGuard。AWG 的内核态和用户态支持仅限 Linux。
要求包括 Go 1.26 或更高版本、带有 AmneziaWG 模块(modprobe amneziawg)的 Linux 内核或 amneziawg-go 用户态守护进程,以及 root 权限或 CAP_NET_ADMIN 能力。该库据称可与任何 AmneziaWG v2 内核模块配合使用,包括上游模块;README 建议在生产环境中使用打过补丁的分叉版本,因为它会在应用 AWG 参数前进行验证,可在同一接口上为纯 WireGuard、AWG 1.0 和 AWG 2.0 客户端提供服务,修复了存在大量对等端时的 netlink 转储问题,并可在较新的 Linux 内核和 RHEL 10 上构建。只有该模块会通过 Peer.AWGPeerFlagsKnown、FixedHeaders 和 NoS4 等字段报告检测到的对等端类型。
安装方式为 go get github.com/advanced-wg/awgctrl-go。README 展示了快速入门代码片段:读取设备(列出接口名称、IsAmnezia 标志、对等端、AdvancedSecurity、RX/TX 计数器),在 ConfigureDevice 之前调用 GenerateAmneziaParams 和 Validate 来启用 AWG 混淆,以及添加启用了 AdvancedSecurity 的对等端。
文档链接涵盖 AWG 参数参考(Jc、Jmin、Jmax、S1-S4、H1-H4、I1-I5,含限制、规则和示例)、对等端高级安全、实用示例,以及 pkg.go.dev 上的完整 API 参考。该项目采用 MIT 许可证,版权归 Matt Layher(2018-2022)和 Advanced-WG, V. Bantserov(2025)所有。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。