[GH-ISSUE #37] How do i use this? #12

Open
opened 2026-10-13 21:02:12 +00:00 by bsakaguchi · 12 comments
Owner

Originally created by @lands39 on GitHub (Aug 22, 2024).
Original GitHub issue: https://github.com/amnezia-vpn/amneziawg-go/issues/37

Hi! i run a VPN server for myself and for a friend based in russia. Due to russian censorship clamping down hard on VPNs, my VPN no longer reliably works for him. How would he go about setting this up? neither of us can figure out where the resulting DLL should go because the wireguard installation folder doesn't have any DLLs, only the exe for the wireguard client.

Originally created by @lands39 on GitHub (Aug 22, 2024). Original GitHub issue: https://github.com/amnezia-vpn/amneziawg-go/issues/37 Hi! i run a VPN server for myself and for a friend based in russia. Due to russian censorship clamping down hard on VPNs, my VPN no longer reliably works for him. How would he go about setting this up? neither of us can figure out where the resulting DLL should go because the wireguard installation folder doesn't have any DLLs, only the exe for the wireguard client.
Author
Owner

@zimbabwe303 commented on GitHub (Aug 25, 2024):

You don't need to mess with the dll, it's for creating your own WireGuard client programs. Your friend should download this instead: https://github.com/amnezia-vpn/amnezia-client

<!-- gh-comment-id:2308951893 --> @zimbabwe303 commented on GitHub (Aug 25, 2024): You don't need to mess with the dll, it's for creating your own WireGuard client programs. Your friend should download this instead: https://github.com/amnezia-vpn/amnezia-client
Author
Owner

@lands39 commented on GitHub (Aug 25, 2024):

he wants to use this on windows, not on his phone

<!-- gh-comment-id:2308952175 --> @lands39 commented on GitHub (Aug 25, 2024): he wants to use this on windows, not on his phone
Author
Owner

@zimbabwe303 commented on GitHub (Aug 26, 2024):

There is a version for every OS out there, including Windows. Here is the direct link: https://github.com/amnezia-vpn/amnezia-client/releases/download/4.7.0.0/AmneziaVPN_4.7.0.0_x64.exe

<!-- gh-comment-id:2309571896 --> @zimbabwe303 commented on GitHub (Aug 26, 2024): There is a version for every OS out there, including Windows. Here is the direct link: https://github.com/amnezia-vpn/amnezia-client/releases/download/4.7.0.0/AmneziaVPN_4.7.0.0_x64.exe
Author
Owner

@zimbabwe303 commented on GitHub (Aug 26, 2024):

Once he installed and started the client, he should select the "Файл с настройками подключения" (File with connection settings) option and choose the wg-quick configuration file (wg0.conf) that you make for him. Then he clicks "Connect" and that's basically it.

<!-- gh-comment-id:2309593151 --> @zimbabwe303 commented on GitHub (Aug 26, 2024): Once he installed and started the client, he should select the "Файл с настройками подключения" (File with connection settings) option and choose the wg-quick configuration file (wg0.conf) that you make for him. Then he clicks "Connect" and that's basically it.
Author
Owner

@zimbabwe303 commented on GitHub (Aug 26, 2024):

And another, probably more appropriate client application specifically for AmneziaWG: https://github.com/amnezia-vpn/amneziawg-windows-client

On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the [Interface] section of the wg0.conf file:

Jc = 3
Jmin = 40
Jmax = 70
S1 = 0
S2 = 0
H1 = 1
H2 = 2
H3 = 3
H4 = 4
<!-- gh-comment-id:2309817439 --> @zimbabwe303 commented on GitHub (Aug 26, 2024): And another, probably more appropriate client application specifically for AmneziaWG: https://github.com/amnezia-vpn/amneziawg-windows-client On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the **[Interface]** section of the wg0.conf file: ``` Jc = 3 Jmin = 40 Jmax = 70 S1 = 0 S2 = 0 H1 = 1 H2 = 2 H3 = 3 H4 = 4 ```
Author
Owner

@flexuz1 commented on GitHub (Aug 30, 2024):

I want to install AWG client on Synology. How do I do that?

<!-- gh-comment-id:2321303603 --> @flexuz1 commented on GitHub (Aug 30, 2024): I want to install AWG client on Synology. How do I do that?
Author
Owner

@Pr0mises commented on GitHub (Oct 16, 2025):

@zimbabwe303 Sry for replaying in this kinda dead issue and pinging you. What does that mean

On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the [Interface] section of the wg0.conf file:

Don't I need to use the amnziavpn-go on my vps (server side) where I connect to? Only the client matters?

There is not a lot of information regarding amnezia and what does what. I just want to be prepared for when I travel and don't want to do troubleshooting with my phone

<!-- gh-comment-id:3409730175 --> @Pr0mises commented on GitHub (Oct 16, 2025): @zimbabwe303 Sry for replaying in this kinda dead issue and pinging you. What does that mean > On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the **[Interface]** section of the wg0.conf file: Don't I need to use the amnziavpn-go on my vps (server side) where I connect to? Only the client matters? There is not a lot of information regarding amnezia and what does what. I just want to be prepared for when I travel and don't want to do troubleshooting with my phone
Author
Owner

@zimbabwe303 commented on GitHub (Oct 23, 2025):

@zimbabwe303 Sry for replaying in this kinda dead issue and pinging you. What does that mean

On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the [Interface] section of the wg0.conf file:

Don't I need to use the amnziavpn-go on my vps (server side) where I connect to? Only the client matters?

There is not a lot of information regarding amnezia and what does what. I just want to be prepared for when I travel and don't want to do troubleshooting with my phone

I am not an expert and did not study the code, so I may be wrong, but I know the general principle behind "spoofing". Only the parameters S1 (Init packet junk size) and S2 (Response packet junk size) are the ones which screw up the original WireGuard servers: they see junk and don't know how much data to skip to find the actual data stream after the handshake. Keep these parameters at 0 and you should be okay to connect to any normal WireGuard server. The censorship boxes usually analyze only the handshakes to prevent slowing down the whole Internet, and it is too resource-intensive to analyze the whole traffic (the so called "active probing"), after all electricity is not completely free even for the governments (though in Russia the ISPs are paying for the censorship boxes and obviously for the consequent electricity bills - how handy).

<!-- gh-comment-id:3438541023 --> @zimbabwe303 commented on GitHub (Oct 23, 2025): > [@zimbabwe303](https://github.com/zimbabwe303) Sry for replaying in this kinda dead issue and pinging you. What does that mean > > > On the server side you can use the standard WireGuard daemon, on the client side just add the following AmneziaWG-specific options to the **[Interface]** section of the wg0.conf file: > > Don't I need to use the amnziavpn-go on my vps (server side) where I connect to? Only the client matters? > > There is not a lot of information regarding amnezia and what does what. I just want to be prepared for when I travel and don't want to do troubleshooting with my phone I am not an expert and did not study the code, so I may be wrong, but I know the general principle behind "spoofing". Only the parameters S1 (Init packet junk size) and S2 (Response packet junk size) are the ones which screw up the original WireGuard servers: they see junk and don't know how much data to skip to find the actual data stream after the handshake. Keep these parameters at 0 and you should be okay to connect to any normal WireGuard server. The censorship boxes usually analyze only the handshakes to prevent slowing down the whole Internet, and it is too resource-intensive to analyze the whole traffic (the so called "active probing"), after all electricity is not completely free even for the governments (though in Russia the ISPs are paying for the censorship boxes and obviously for the consequent electricity bills - how handy).
Author
Owner

@Pr0mises commented on GitHub (Oct 23, 2025):

The censorship boxes usually analyze only the handshakes to prevent slowing down the whole Internet, and it is too resource-intensive to analyze the whole traffic (the so called "active probing"), after all electricity is not completely free even for the governments (though in Russia the ISPs are paying for the censorship boxes and obviously for the consequent electricity bills - how handy).

Thanks for your answer!
That means if I set both to 0 the handshake is still detectable and if a GFW blocks the normal wireguard handshake it also blocks the amnezia handshake?
Using amnezia with s1 and s2 == 0 or using plain wireguard has the same result?

<!-- gh-comment-id:3438734511 --> @Pr0mises commented on GitHub (Oct 23, 2025): > The censorship boxes usually analyze only the handshakes to prevent slowing down the whole Internet, and it is too resource-intensive to analyze the whole traffic (the so called "active probing"), after all electricity is not completely free even for the governments (though in Russia the ISPs are paying for the censorship boxes and obviously for the consequent electricity bills - how handy). Thanks for your answer! That means if I set both to 0 the handshake is still detectable and if a GFW blocks the normal wireguard handshake it also blocks the amnezia handshake? Using amnezia with s1 and s2 == 0 or using plain wireguard has the same result?
Author
Owner

@marek22k commented on GitHub (Oct 23, 2025):

Regarding parameters:
I wrote a blog post about AmneziaWG. In it, I explain the parameters, their meaning, and their recommended values.
For compatibility with vanilla WireGuard maybe also take a look at How to convert an existing WireGuard config to Amnezia?.

<!-- gh-comment-id:3439099122 --> @marek22k commented on GitHub (Oct 23, 2025): Regarding parameters: I wrote a blog post about [AmneziaWG](https://mk16.de/blog/amneziawg-en/). In it, I explain the parameters, their meaning, and their recommended values. For compatibility with vanilla WireGuard maybe also take a look at [How to convert an existing WireGuard config to Amnezia?](https://web.archive.org/web/20250407135142/https://zaneschepke.com/wgtunnel-docs/features.html#how-to-convert-an-existing-wireguard-config-to-amnezia).
Author
Owner

@zimbabwe303 commented on GitHub (Oct 24, 2025):

That means if I set both to 0 the handshake is still detectable and if a GFW blocks the normal wireguard handshake it also blocks the amnezia handshake?

Sorry, I was sort of contradicting myself in my answer (I've edited it a bit now): indeed the censorship boxes analyze only the handshakes to save power, so to prevent detection junk must be inserted before the handshake, so the boxes would see only junk instead of the actual handshake, which comes later. The original WireGuard protocol allows for some junk before the actual handshake, the server will simply discard such data, and that's very convenient! The amount of such data is defined by the Jc, Jmin and Jmax parameters. On the other hand S1>0 and S2>0 allow for even deeper obfuscation by inserting more junk into the handshake itself: such type of obfuscation is already a breaking modification of the original WireGuard protocol, so for those parameters to work the server should also have AmneziaWG installed.

Using amnezia with s1 and s2 == 0 or using plain wireguard has the same result?

Not the same. The handshake will be undetectable as long as you use the AmneziaWG client instead of the original implementation. Just set up the Jc, Jmin and Jmax parameters to some reasonable values. I currently use Jc=100, Jmin=50, Jmax=1500 with AirVPN and it works. Their servers use the original WireGuard implementation while my client is AmneziaWG.

<!-- gh-comment-id:3443347292 --> @zimbabwe303 commented on GitHub (Oct 24, 2025): > That means if I set both to 0 the handshake is still detectable and if a GFW blocks the normal wireguard handshake it also blocks the amnezia handshake? Sorry, I was sort of contradicting myself in my answer (I've edited it a bit now): indeed the censorship boxes analyze only the handshakes to save power, so to prevent detection junk must be inserted _before_ the handshake, so the boxes would see only junk instead of the actual handshake, which comes later. The original WireGuard protocol allows for some junk before the actual handshake, the server will simply discard such data, and that's very convenient! The amount of such data is defined by the Jc, Jmin and Jmax parameters. On the other hand S1>0 and S2>0 allow for even deeper obfuscation by inserting more junk into the handshake itself: such type of obfuscation is already a breaking modification of the original WireGuard protocol, so for those parameters to work the server should also have AmneziaWG installed. > Using amnezia with s1 and s2 == 0 or using plain wireguard has the same result? Not the same. The handshake will be undetectable as long as you use the AmneziaWG client instead of the original implementation. Just set up the Jc, Jmin and Jmax parameters to some reasonable values. I currently use Jc=100, Jmin=50, Jmax=1500 with AirVPN and it works. Their servers use the original WireGuard implementation while my client is AmneziaWG.
Author
Owner

@zimbabwe303 commented on GitHub (Oct 24, 2025):

Regarding parameters: I wrote a blog post about AmneziaWG. In it, I explain the parameters, their meaning, and their recommended values. For compatibility with vanilla WireGuard maybe also take a look at How to convert an existing WireGuard config to Amnezia?.

Thank you. I wonder why these parameters are not documented in README.md and everyone have to scour the Internet to find out their meaning.

<!-- gh-comment-id:3443393619 --> @zimbabwe303 commented on GitHub (Oct 24, 2025): > Regarding parameters: I wrote a blog post about [AmneziaWG](https://mk16.de/blog/amneziawg-en/). In it, I explain the parameters, their meaning, and their recommended values. For compatibility with vanilla WireGuard maybe also take a look at [How to convert an existing WireGuard config to Amnezia?](https://web.archive.org/web/20250407135142/https://zaneschepke.com/wgtunnel-docs/features.html#how-to-convert-an-existing-wireguard-config-to-amnezia). Thank you. I wonder why these parameters are not documented in README.md and everyone have to scour the Internet to find out their meaning.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amneziawg-go#12
No description provided.