Sobre el proyecto

awgctrl-go es una biblioteca Go para controlar dispositivos WireGuard y AmneziaWG en Linux. Es una bifurcación de WireGuard/wgctrl-go ampliada con soporte completo de AmneziaWG v2, incluida la lectura y escritura de parámetros de ofuscación AWG mediante netlink, validación de parámetros, generación automática y soporte de daemon en espacio de usuario. En comparación con wgctrl-go original, la bifurcación añade la capacidad de escribir y leer parámetros de AmneziaWG, AdvancedSecurity a nivel de par, generación y validación automáticas de parámetros AWG, soporte de daemon AWG en espacio de usuario, una API context.Context y una sola ida y vuelta de netlink. Soporte de plataformas: Linux admite WireGuard en kernel, AmneziaWG en kernel, WireGuard en espacio de usuario y AmneziaWG en espacio de usuario. FreeBSD y OpenBSD solo admiten WireGuard en kernel y en espacio de usuario. Windows solo admite WireGuard en espacio de usuario. El soporte de AWG en kernel y espacio de usuario es exclusivo de Linux. Los requisitos incluyen Go 1.26 o posterior, un kernel Linux con el módulo AmneziaWG (modprobe amneziawg) o el daemon de espacio de usuario amneziawg-go, y privilegios de root o la capacidad CAP_NET_ADMIN. Se afirma que la biblioteca funciona con cualquier módulo de kernel AmneziaWG v2, incluido el módulo original; el README recomienda una bifurcación parcheada para producción porque valida los parámetros AWG antes de aplicarlos, atiende clientes WireGuard plano, AWG 1.0 y AWG 2.0 en una sola interfaz, corrige volcados de netlink con muchos pares y compila en kernels Linux más nuevos y RHEL 10. Solo ese módulo informa el tipo de par detectado mediante campos como Peer.AWGPeerFlagsKnown, FixedHeaders y NoS4. La instalación se realiza mediante go get github.com/advanced-wg/awgctrl-go. El README muestra fragmentos de inicio rápido para leer un dispositivo (listado de nombre de interfaz, indicador IsAmnezia, pares, AdvancedSecurity, contadores RX/TX), habilitar la ofuscación AWG llamando a GenerateAmneziaParams y Validate antes de ConfigureDevice, y añadir un par con AdvancedSecurity habilitado. Los enlaces de documentación cubren una referencia de parámetros AWG (Jc, Jmin, Jmax, S1-S4, H1-H4, I1-I5 con límites, reglas y ejemplos), seguridad avanzada de pares, ejemplos prácticos y la referencia completa de la API en pkg.go.dev. El proyecto tiene licencia MIT, con derechos de autor atribuidos a Matt Layher (2018-2022) y Advanced-WG, V. Bantserov (2025).