mirror of
https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git
synced 2026-10-14 05:41:56 +00:00
[GH-ISSUE #169] Where can I find the source code of the AmneziaWG 2.0 kernel module? #103
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
amnezia-vpn/amneziawg-linux-kernel-module#103
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Alkaidere on GitHub (Apr 27, 2026).
Original GitHub issue: https://github.com/amnezia-vpn/amneziawg-linux-kernel-module/issues/169
Hi!
A few months ago I was testing AmneziaWG. At that time, its H parameters could only be fixed values instead of ranges, and there were no S3, S4, or I parameters. After testing for several days, I was very happy to find a tool that offered both strong performance and good resistance to blocking. However, it suddenly got blocked by DPI.
Recently, I learned that AmneziaWG had been updated to version 2.0, so I tried multiple ways to install it:
First, I tried the https://github.com/amnezia-vpn/amnezia-client project. My computer runs Ubuntu 22.04, so can't download Amnezia VPN APP version 4.8.12.9 or higher, which prevented me from deploying AmneziaWG 2.0 on my vps. Although I later solved the issue, I found that the AWG 2.0 installed on the VPS was running in Docker, which had a noticeable impact on performance.
Next, I tried https://github.com/amnezia-vpn/amneziawg-go. The project documentation clearly states support for the new parameters. After installation, it was indeed AmneziaWG 2.0, but being a userspace implementation, it also caused significant performance overhead.
Then I spent a lot of effort on https://github.com/amnezia-vpn/amneziawg-linux-kernel-module. The master branch of this repository still only supports the old parameters. Recently I tested #165 and after some repairs, this PR about AWG 2.0 seems to be functioning normally now.
And I came across this project: https://github.com/bivlked/amneziawg-installer. The kernel version of AmneziaWG installed by that script is also 2.0, but it's installed by adding a PPA(ppa:amnezia/ppa), Does this mean that the official AWG 2.0 kernel version is already available? If so, why hasn't it's source code been released in the amneziawg-linux-kernel-module repository? Will it be released later? Around when will it be?
Thanks a lot, have a good day!
@bivlked commented on GitHub (Apr 27, 2026):
@Alkaidere I answered the same question in our installer issue earlier today (cross-link below) — short version: master HEAD
ac946a9(= tagv1.0.20260329-2) already contains the AWG 2.0 implementation. The PPAamneziawg-dkmspackage is built from this exact tree.Cross-ref: bivlked/amneziawg-installer#61
@ygurov / @pokamest — closing as answered seems fine if you agree.
@coyotle commented on GitHub (Jun 2, 2026):
amneziawg-dkms installed from ppa has module
version: 1.0.20251009. Is this correct information?@bivlked commented on GitHub (Aug 7, 2026):
Sorry, this sat for two months. The number is real, it is just not the protocol version. Your build does have AmneziaWG 2.0 in it.
Your own paste shows it. The
amneziawg-dkmsversion1.0.0-0~202603291904+ac946a9~ubuntu24.04.1names commitac946a9, and that tree already carries the 2.0 work:src/device.hhasstruct magic_header headers[4], the rangedH1-H4headers that 2.0 introduced;src/netlink.cdeclaresWGDEVICE_A_I1throughWGDEVICE_A_I5and wires all five in both directions, set intowg->ispecs[...]and read back out.The
1.0.20251009thatmodinfoshows is a literal string fromsrc/version.h, whichsrc/main.cpasses toMODULE_VERSION. Nothing derives it from the code:That guard matters.
src/KbuilddefinesWIREGUARD_VERSIONfrom a make variable whenever one is set, andsrc/Makefilesets it to1.0.0, so that is what a plainmakebuild puts in this field. DKMS sets nothing, becausesrc/dkms.confhas noMAKEline, and that is why your package shows the header string instead.Same thing one level up, in the package version itself: the leading
1.0.0is packaging, it sits insrc/dkms.confasPACKAGE_VERSION, and it has not moved. The timestamp and the+<commit>suffix are the parts worth reading.Checked today, 7 August 2026:
src/version.hon master says3.0.20260805, and the Launchpad API has noble publishing1.0.0-0~202608051436+ce16310~ubuntu24.04.1, which is that same commit. So the string lines up with the code now, but only because someone keeps editing it by hand.If you want the AmneziaWG 3.0 picture for self-hosted setups, including which values have to match on both ends, #207 covers it. I put my measurements there.