WireGuard library for Go
Important
This project is a fork of the original wireguard-go project with some modifications. All credit goes to the original wireguard-go authors.
Warning
Code added in this fork on top of the original wireguard-go project has not been reviewed by a third party yet. The Amnesia client is currently experimental.
- replaced the built-in TUN and conn implementations with reusable gonnect/tun and batchudp libraries
- support on-the-fly attach/detach/swap operations for
BindandTuninstances - added usage examples
- added
Deviceconfiguration methods matching UAPI get/set options - added multi-controller peer and transport APIs with a guide
- added the
device.DeviceAPIinterface and independently closable wrappers with tracked resource ownership - added leveled logging
- implemented amneziawg-go-compatible obfuscation, including typed AWG 3.1 configuration fields
- added support for per-peer obfuscation options, migration notes, and receive-profile guidance in ARCHITECTURE.md
- added
amnesia, awgosubpackage that imports Amnezia service keys, self-hosted guestvpn://keys, and native WireGuard/AmneziaWG configs into backend-neutral profiles fordevice - added more end-to-end and compatibility tests with other WireGuard implementations
- added self-hosted Amnezia import e2e tests that parse
server-exported WireGuard and AmneziaWG
vpn:///.confguest inputs and verify ping and HTTP tunnel access throughwgo - added performance tests with a comparison against other WireGuard implementations
- WASM builds supported