AmneziaWG

ZAAWANSUJ SWOJĄ KONFIGURACJĘ SERWERA! APLIKUJ AVA I URUCHOM Z 15% ZNIŻKI
UŻYJ KODU PROMOCYJNEGO:

Keywords

KeywordDefinition
🛡️ AmneziaWGA fork of WireGuard that randomizes packet headers, sizes, and timing to resist Deep Packet Inspection while keeping the same audited cryptography. It is the protocol that runs on your server.
🚀 AmneziaWG 2.0The current major version that uses dynamic header ranges (instead of fixed values), adds data-level padding (S4), and supports Custom Protocol Signature decoy packets for stronger DPI evasion.
🔍 Deep Packet Inspection (DPI)A network filtering technique used by ISPs and governments to identify and block VPN traffic by analyzing packet headers, sizes, and handshake patterns. AmneziaWG is specifically designed to defeat it.
WireGuardA fast, modern VPN protocol with a small codebase and kernel-level performance. It is easily fingerprinted by DPI systems due to its fixed packet structure, which is what AmneziaWG was built to fix.
🏠 Self-hosted VPNA VPN you deploy and manage on your own server (typically a VPS) rather than subscribing to a commercial provider. You control the keys, config, and infrastructure.
🐧 DKMS (Dynamic Kernel Module Support)A Linux framework that automatically recompiles kernel modules when the system kernel is updated. The AmneziaWG installer uses DKMS to build the high-performance kernel module.
🎭 ObfuscationThe practice of disguising VPN traffic to look like ordinary internet traffic. AmneziaWG obfuscates at the transport layer by randomizing headers, adding padding, sending decoy packets, and firing junk packets.
🔀 Split tunnelingA routing configuration where only specific traffic (e.g., blocked sites) goes through the VPN while the rest uses your direct connection. Useful in countries with partial censorship.
🖥️ KVM vs LXCKVM is full virtualization with a dedicated kernel, required for loading custom kernel modules like AmneziaWG. LXC is container-based virtualization that shares the host kernel and cannot load custom modules.
🎪 CPS (Custom Protocol Signature)An AmneziaWG 2.0 feature that sends decoy packets mimicking other protocols (QUIC, DNS, SIP) before the real handshake, fooling DPI systems into classifying the traffic as normal.

Self-Host an AmneziaWG VPN Server — Complete Guide

AmneziaWG

AmneziaWG is a protocol designed to solve a specific problem: how do you get WireGuard’s speed when the networks you’re connecting through actively try to block it? It’s a fork of WireGuard built by the Amnezia VPN team, and it does one thing that the original doesn’t — it randomizes the transport layer so Deep Packet Inspection systems can’t fingerprint it. The encryption underneath stays exactly the same. What changes is how the packets look on the wire.

The broader landscape of VPN obfuscation has been an arms race for years. Tools like Shadowsocks, VLESS+Reality, and OpenVPN with obfs4 all attempt to disguise traffic in different ways — some as proxies, some as full tunnels, some with heavy performance costs. AmneziaWG sits in a specific niche: it’s a full VPN tunnel with WireGuard-level performance and built-in DPI resistance, all in one package. And since it’s open-source, you can self-host it on your own server.

But here’s the problem that makes this necessary. You set up WireGuard. It works perfectly — fast, clean, reliable. Then one day it stops. No error message, no timeout, no connection refused. The packets just vanish. That’s what DPI blocking looks like in practice: your tunnel is still running, your config is still correct, and nothing gets through. This is the reality in Russia (where WireGuard has roughly a 12% success rate), Iran (98% packet loss), and a growing list of countries including China, Egypt, UAE, Turkey, Belarus, Uzbekistan, Kazakhstan, Myanmar, and Pakistan.

VPN obfuscation

Traditional alternatives don’t fully solve this. Shadowsocks is a proxy, not a full VPN tunnel — your DNS and non-TCP traffic still leak. OpenVPN with obfs4 works but carries roughly 25% performance overhead. VLESS+Reality offers strong obfuscation but is proxy-based and complex to configure. AmneziaWG fills the gap: a complete VPN tunnel with WireGuard’s speed and DPI resistance baked in.

This guide walks you through deploying a fully functional AmneziaWG 2.0 server on any KVM VPS in under 15 minutes using a single community installer script. By the end, you’ll have a working VPN tunnel you can connect to from any device. The steps are provider-agnostic — they work on any VPS with root SSH access, whether that’s from AlexHost, AvaHost, or elsewhere. This is written for intermediate tech users who are comfortable with SSH and basic Linux commands.

One clarification before we start: AmneziaWG is the protocol. AmneziaVPN is the client app that connects to it. They’re related but distinct — like TLS is to your browser. You’ll need the app to connect, but the protocol is what runs on your server.

But before we deploy anything, you need to understand what makes AmneziaWG different from WireGuard — and why that difference matters when DPI is watching.


What Is AmneziaWG? (The Mental Model)

WireGuard is elegant by design. It has a small codebase, uses modern cryptography, and runs in the Linux kernel for near-native performance. But that elegance comes with a visibility problem: every WireGuard packet carries the same fixed header structure, the same fixed packet sizes, and the same handshake pattern. To a Deep Packet Inspection system, a WireGuard tunnel has a signature as clear as a barcode. Once a DPI box learns that signature, it can drop every packet without blocking the port or closing the connection.

DPI
AmneziaWG is a fork of WireGuard-Go created by the Amnezia VPN team. It inherits WireGuard’s architectural simplicity — same Curve25519 key exchange, same ChaCha20-Poly1305 encryption, same Noise IK handshake. All of the cryptography is unchanged and equally audited. What AmneziaWG modifies is the transport layer: the packet headers, the packet sizes, and the timing patterns.

Think of it this way. WireGuard is like a courier who always wears the same uniform — fast, reliable, and efficient. But anyone watching the road learns to recognize that uniform and can stop the courier at any checkpoint. AmneziaWG is the same courier carrying the same packages, but they change uniforms at every checkpoint. Same person, same cargo, completely different appearance.

The version history matters here. AmneziaWG 1.x introduced custom headers that differed from WireGuard’s fixed values — it helped for a while, but DPI systems adapted. AmneziaWG 2.0, released in late 2025, randomizes everything: headers change per packet, padding varies per message, and decoy packets mimic other protocols before the real handshake begins. There is no universal signature to detect because every AmneziaWG 2.0 server generates its own unique parameter set. Each server speaks its own dialect.

When all obfuscation parameters are set to zero, AmneziaWG behaves identically to WireGuard — it’s fully backward compatible at the protocol level. But with parameters active (which is the default), it becomes something WireGuard cannot be: a fast VPN tunnel that DPI systems struggle to identify.

So how exactly does AmneziaWG scramble its traffic? Let’s look at the four obfuscation layers that make DPI blind — and why they add almost no speed cost.


How AmneziaWG Hides From DPI (Without Losing Speed)

AmneziaWG 2.0 uses four layered obfuscation techniques that work together. Each one targets a different way DPI systems identify VPN traffic. Together, they make every server’s traffic look unique.

Dynamic Headers (H1–H4)

WireGuard uses fixed 32-bit message type identifiers:

  • 1 — for initiation
  • 2 — for response
  • 3 — for cookie reply
  • 4 — for data

A DPI box scanning traffic just looks for these values. AmneziaWG 2.0 replaces each fixed value with a random number drawn from a configured range. The initiation header (H1) might be any value between 234567 and 345678. The response header (H2) might be between 3456789 and 4567890. These ranges never overlap — the protocol still needs to distinguish packet types internally — but to an outside observer, there’s no single header value to latch onto. Every packet looks different from the last.

Random Padding (S1–S4)

WireGuard’s initiation packet is always exactly 148 bytes. Its response is always exactly 92 bytes. These fixed sizes are another fingerprint. AmneziaWG adds random padding to each packet type: the initiation becomes 148+S1 bytes, the response becomes 92+S2 bytes, the cookie reply becomes 64+S3 bytes, and every data packet gets S4 bytes of padding. S3 and S4 are new in version 2.0 — and S4 is the most significant addition because it touches every single data packet, making session-wide traffic analysis much harder.

There’s one critical constraint: S1+56 must not equal S2. Since the original size difference between initiation and response is 56 bytes (148−92), if the padding values happened to compensate for exactly that difference, the two padded packets would end up the same size — recreating the fingerprint AmneziaWG is trying to eliminate. The installer’s parameter generator enforces this constraint automatically.

Custom Protocol Signature (I1–I5)

Before the real WireGuard handshake begins, the AmneziaWG client sends up to five decoy packets that mimic other protocols — QUIC, DNS, SIP, or custom byte patterns. The server ignores these packets entirely. It just waits for the real handshake.

  • A simple configuration: Sends 128 random bytes <r 128>.
  • A sophisticated configuration: Sends bytes that look like a QUIC connection initiation (<b 0xc000000001><r 64><t>), complete with a Unix timestamp.

To a DPI system watching the session start, the first packets look like normal web traffic.

Junk Packets (Jc, Jmin, Jmax)

After the decoy packets, the client fires a configurable number of junk packets — pure noise with random sizes between Jmin and Jmax. These blur the timing and size profile of the session start, making it harder for DPI systems to identify where the real handshake begins.

The Speed Question

There’s a number that’s been circulating online: AmneziaWG has 65% overhead. That figure is real, but it refers to the userspace Go implementation — not the kernel module. The community installer used in this guide builds a DKMS kernel module, and the kernel module adds less than 12% overhead total — closer to 3% in real-world benchmarks. On an uncensored network, you’d see roughly 95 Mbps through WireGuard and 92 Mbps through AmneziaWG 2.0. In a censored network, the comparison is 92 Mbps versus zero.

The following table summarizes the parameters the installer generates automatically:

ParameterGenerated RangeExample Value
Jc

(junk packet count)

4–8
6
Jmin

(min junk size)

40–89
55
Jmax

(max junk size)

Jmin+100 to Jmin+500
380
S1

(init padding)

15–150
72
S2

(response padding)

15–150, S1+56≠S2
56
S3

(cookie padding)

8–55
32
S4

(data padding)

4–27
16
H1

(init header range)

uint32 non-overlapping
234567-345678
H2

(response header range)

uint32 non-overlapping
3456789-4567890
H3

(cookie header range)

uint32 non-overlapping
56789012-67890123
H4

(data header range)

uint32 non-overlapping
456789012-567890123
I1

(CPS packet)

<r N>

format

<r 128>

You don’t need to set any of these manually. The installer generates cryptographically random, constraint-valid values every time.

Now that you know how the obfuscation works, let’s see how AmneziaWG stacks up against the alternatives you might be considering.


AmneziaWG vs Alternatives — Quick Decision Guide

VPNs
If you’re evaluating VPN protocols for a censored environment, you’ve probably come across several options. Here’s how they compare across the dimensions that matter:

WireGuardAmneziaWG 2.0OpenVPN+obfs4ShadowsocksVLESS+Reality
DPI resistanceLowHighMediumMediumVery High
Speed overhead~4%<12% (~3% real-world)~25%~8%~10%
Full VPN tunnelYesYesYesNo (proxy)No (proxy)
Runs in kernelYesYes (DKMS)NoNoNo
Setup complexityLowLow (with installer)HighMediumHigh
TransportUDPUDPTCP/UDPTCPTCP

The decision rules are straightforward:

  • No DPI in your country? Use plain WireGuard. It’s simpler and has a larger ecosystem.
  • Need maximum DPI resistance and OK with a proxy? VLESS+Reality is the strongest option for obfuscation, but it’s not a full tunnel.
  • Want both speed and a full tunnel with obfuscation? AmneziaWG 2.0 is the only option that delivers WireGuard-grade performance with real DPI resistance in a complete VPN tunnel.
  • Already using OpenVPN+obfs4 and it still works? No urgent need to switch, but AmneziaWG will be noticeably faster.

This article focuses on AmneziaWG because it’s the only protocol that gives you a full tunnel, kernel-level performance, and built-in obfuscation — all configured by a single script.

If AmneziaWG is the right choice for your situation, here’s exactly what you need before we start deploying.


What You’ll Need Before Starting

Before running the installer, make sure your environment meets these requirements:

RequirementDetailWhy
OSUbuntu 24.04 LTS (clean install). Ubuntu 25.10 is experimental. Debian 12/13 work but may need

curl pre-installed.
The installer is tested and fully supported on Ubuntu 24.04.
VPS specs1 vCore, 1 GB RAM, 25 GB storage. Any $3–5/month plan works.The installer needs ~2 GB disk and ~1 GB RAM during the DKMS build. The running VPN uses negligible resources.
VirtualizationKVM (not OpenVZ, not LXC).AmneziaWG loads a kernel module via DKMS. LXC shares the host kernel and cannot load custom modules.
SSH accessRoot or sudo user with password/key authentication.The installer must run as root.
SSH portDefault 22, or pre-opened in UFW if using a non-standard port.If SSH isn’t on port 22 and you don’t pre-open it, the installer’s firewall setup will lock you out.
Client appAmnezia VPN >= 4.8.12.7 (all platforms).AWG 2.0 parameters are not understood by older clients. The standard WireGuard client does not support AWG at all.

⚠️ Warning: LXC containers are not supported. If your VPS uses LXC virtualization, the DKMS kernel module build will fail. You must use KVM or bare-metal. Check with your provider if you’re unsure.

⚠️ Warning: If your SSH runs on a non-standard port (anything other than 22), you must open it in UFW before running the installer:

sudo ufw allow YOUR_PORT/tcp

Replace

YOUR_PORT

with your actual SSH port. The installer enables UFW with a default-deny policy — if your SSH port isn’t allowed, you’ll be locked out immediately.

💡 Tip: Wait 5–10 minutes after creating your VPS before running the installer. Cloud-init and background initialization processes can conflict with the

apt-get

calls the installer makes.

With your VPS ready and prerequisites confirmed, let’s deploy AmneziaWG 2.0 using the community installer script — the fastest and most transparent method.


Keywords

KeywordDefinition
🛡️ AmneziaWGA fork of WireGuard that randomizes packet headers, sizes, and timing to resist Deep Packet Inspection while keeping the same audited cryptography. It is the protocol that runs on your server.
🚀 AmneziaWG 2.0The current major version that uses dynamic header ranges (instead of fixed values), adds data-level padding (S4), and supports Custom Protocol Signature decoy packets for stronger DPI evasion.
🔍 Deep Packet Inspection (DPI)A network filtering technique used by ISPs and governments to identify and block VPN traffic by analyzing packet headers, sizes, and handshake patterns. AmneziaWG is specifically designed to defeat it.
WireGuardA fast, modern VPN protocol with a small codebase and kernel-level performance. It is easily fingerprinted by DPI systems due to its fixed packet structure, which is what AmneziaWG was built to fix.
🏠 Self-hosted VPNA VPN you deploy and manage on your own server (typically a VPS) rather than subscribing to a commercial provider. You control the keys, config, and infrastructure.
🐧 DKMS (Dynamic Kernel Module Support)A Linux framework that automatically recompiles kernel modules when the system kernel is updated. The AmneziaWG installer uses DKMS to build the high-performance kernel module.
🎭 ObfuscationThe practice of disguising VPN traffic to look like ordinary internet traffic. AmneziaWG obfuscates at the transport layer by randomizing headers, adding padding, sending decoy packets, and firing junk packets.
🔀 Split tunnelingA routing configuration where only specific traffic (e.g., blocked sites) goes through the VPN while the rest uses your direct connection. Useful in countries with partial censorship.
🖥️ KVM vs LXCKVM is full virtualization with a dedicated kernel, required for loading custom kernel modules like AmneziaWG. LXC is container-based virtualization that shares the host kernel and cannot load custom modules.
🎪 CPS (Custom Protocol Signature)An AmneziaWG 2.0 feature that sends decoy packets mimicking other protocols (QUIC, DNS, SIP) before the real handshake, fooling DPI systems into classifying the traffic as normal.

Self-Host an AmneziaWG VPN Server — Complete Guide

AmneziaWG

AmneziaWG is a protocol designed to solve a specific problem: how do you get WireGuard’s speed when the networks you’re connecting through actively try to block it? It’s a fork of WireGuard built by the Amnezia VPN team, and it does one thing that the original doesn’t — it randomizes the transport layer so Deep Packet Inspection systems can’t fingerprint it. The encryption underneath stays exactly the same. What changes is how the packets look on the wire.

The broader landscape of VPN obfuscation has been an arms race for years. Tools like Shadowsocks, VLESS+Reality, and OpenVPN with obfs4 all attempt to disguise traffic in different ways — some as proxies, some as full tunnels, some with heavy performance costs. AmneziaWG sits in a specific niche: it’s a full VPN tunnel with WireGuard-level performance and built-in DPI resistance, all in one package. And since it’s open-source, you can self-host it on your own server.

But here’s the problem that makes this necessary. You set up WireGuard. It works perfectly — fast, clean, reliable. Then one day it stops. No error message, no timeout, no connection refused. The packets just vanish. That’s what DPI blocking looks like in practice: your tunnel is still running, your config is still correct, and nothing gets through. This is the reality in Russia (where WireGuard has roughly a 12% success rate), Iran (98% packet loss), and a growing list of countries including China, Egypt, UAE, Turkey, Belarus, Uzbekistan, Kazakhstan, Myanmar, and Pakistan.

VPN obfuscation

Traditional alternatives don’t fully solve this. Shadowsocks is a proxy, not a full VPN tunnel — your DNS and non-TCP traffic still leak. OpenVPN with obfs4 works but carries roughly 25% performance overhead. VLESS+Reality offers strong obfuscation but is proxy-based and complex to configure. AmneziaWG fills the gap: a complete VPN tunnel with WireGuard’s speed and DPI resistance baked in.

This guide walks you through deploying a fully functional AmneziaWG 2.0 server on any KVM VPS in under 15 minutes using a single community installer script. By the end, you’ll have a working VPN tunnel you can connect to from any device. The steps are provider-agnostic — they work on any VPS with root SSH access, whether that’s from AlexHost, AvaHost, or elsewhere. This is written for intermediate tech users who are comfortable with SSH and basic Linux commands.

One clarification before we start: AmneziaWG is the protocol. AmneziaVPN is the client app that connects to it. They’re related but distinct — like TLS is to your browser. You’ll need the app to connect, but the protocol is what runs on your server.

But before we deploy anything, you need to understand what makes AmneziaWG different from WireGuard — and why that difference matters when DPI is watching.


What Is AmneziaWG? (The Mental Model)

WireGuard is elegant by design. It has a small codebase, uses modern cryptography, and runs in the Linux kernel for near-native performance. But that elegance comes with a visibility problem: every WireGuard packet carries the same fixed header structure, the same fixed packet sizes, and the same handshake pattern. To a Deep Packet Inspection system, a WireGuard tunnel has a signature as clear as a barcode. Once a DPI box learns that signature, it can drop every packet without blocking the port or closing the connection.

DPI
AmneziaWG is a fork of WireGuard-Go created by the Amnezia VPN team. It inherits WireGuard’s architectural simplicity — same Curve25519 key exchange, same ChaCha20-Poly1305 encryption, same Noise IK handshake. All of the cryptography is unchanged and equally audited. What AmneziaWG modifies is the transport layer: the packet headers, the packet sizes, and the timing patterns.

Think of it this way. WireGuard is like a courier who always wears the same uniform — fast, reliable, and efficient. But anyone watching the road learns to recognize that uniform and can stop the courier at any checkpoint. AmneziaWG is the same courier carrying the same packages, but they change uniforms at every checkpoint. Same person, same cargo, completely different appearance.

The version history matters here. AmneziaWG 1.x introduced custom headers that differed from WireGuard’s fixed values — it helped for a while, but DPI systems adapted. AmneziaWG 2.0, released in late 2025, randomizes everything: headers change per packet, padding varies per message, and decoy packets mimic other protocols before the real handshake begins. There is no universal signature to detect because every AmneziaWG 2.0 server generates its own unique parameter set. Each server speaks its own dialect.

When all obfuscation parameters are set to zero, AmneziaWG behaves identically to WireGuard — it’s fully backward compatible at the protocol level. But with parameters active (which is the default), it becomes something WireGuard cannot be: a fast VPN tunnel that DPI systems struggle to identify.

So how exactly does AmneziaWG scramble its traffic? Let’s look at the four obfuscation layers that make DPI blind — and why they add almost no speed cost.


How AmneziaWG Hides From DPI (Without Losing Speed)

AmneziaWG 2.0 uses four layered obfuscation techniques that work together. Each one targets a different way DPI systems identify VPN traffic. Together, they make every server’s traffic look unique.

Dynamic Headers (H1–H4)

WireGuard uses fixed 32-bit message type identifiers:

  • 1 — for initiation
  • 2 — for response
  • 3 — for cookie reply
  • 4 — for data

A DPI box scanning traffic just looks for these values. AmneziaWG 2.0 replaces each fixed value with a random number drawn from a configured range. The initiation header (H1) might be any value between 234567 and 345678. The response header (H2) might be between 3456789 and 4567890. These ranges never overlap — the protocol still needs to distinguish packet types internally — but to an outside observer, there’s no single header value to latch onto. Every packet looks different from the last.

Random Padding (S1–S4)

WireGuard’s initiation packet is always exactly 148 bytes. Its response is always exactly 92 bytes. These fixed sizes are another fingerprint. AmneziaWG adds random padding to each packet type: the initiation becomes 148+S1 bytes, the response becomes 92+S2 bytes, the cookie reply becomes 64+S3 bytes, and every data packet gets S4 bytes of padding. S3 and S4 are new in version 2.0 — and S4 is the most significant addition because it touches every single data packet, making session-wide traffic analysis much harder.

There’s one critical constraint: S1+56 must not equal S2. Since the original size difference between initiation and response is 56 bytes (148−92), if the padding values happened to compensate for exactly that difference, the two padded packets would end up the same size — recreating the fingerprint AmneziaWG is trying to eliminate. The installer’s parameter generator enforces this constraint automatically.

Custom Protocol Signature (I1–I5)

Before the real WireGuard handshake begins, the AmneziaWG client sends up to five decoy packets that mimic other protocols — QUIC, DNS, SIP, or custom byte patterns. The server ignores these packets entirely. It just waits for the real handshake.

  • A simple configuration: Sends 128 random bytes <r 128>.
  • A sophisticated configuration: Sends bytes that look like a QUIC connection initiation (<b 0xc000000001><r 64><t>), complete with a Unix timestamp.

To a DPI system watching the session start, the first packets look like normal web traffic.

Junk Packets (Jc, Jmin, Jmax)

After the decoy packets, the client fires a configurable number of junk packets — pure noise with random sizes between Jmin and Jmax. These blur the timing and size profile of the session start, making it harder for DPI systems to identify where the real handshake begins.

The Speed Question

There’s a number that’s been circulating online: AmneziaWG has 65% overhead. That figure is real, but it refers to the userspace Go implementation — not the kernel module. The community installer used in this guide builds a DKMS kernel module, and the kernel module adds less than 12% overhead total — closer to 3% in real-world benchmarks. On an uncensored network, you’d see roughly 95 Mbps through WireGuard and 92 Mbps through AmneziaWG 2.0. In a censored network, the comparison is 92 Mbps versus zero.

The following table summarizes the parameters the installer generates automatically:

ParameterGenerated RangeExample Value
Jc

(junk packet count)

4–8
6
Jmin

(min junk size)

40–89
55
Jmax

(max junk size)

Jmin+100 to Jmin+500
380
S1

(init padding)

15–150
72
S2

(response padding)

15–150, S1+56≠S2
56
S3

(cookie padding)

8–55
32
S4

(data padding)

4–27
16
H1

(init header range)

uint32 non-overlapping
234567-345678
H2

(response header range)

uint32 non-overlapping
3456789-4567890
H3

(cookie header range)

uint32 non-overlapping
56789012-67890123
H4

(data header range)

uint32 non-overlapping
456789012-567890123
I1

(CPS packet)

<r N>

format

<r 128>

You don’t need to set any of these manually. The installer generates cryptographically random, constraint-valid values every time.

Now that you know how the obfuscation works, let’s see how AmneziaWG stacks up against the alternatives you might be considering.


AmneziaWG vs Alternatives — Quick Decision Guide

VPNs
If you’re evaluating VPN protocols for a censored environment, you’ve probably come across several options. Here’s how they compare across the dimensions that matter:

WireGuardAmneziaWG 2.0OpenVPN+obfs4ShadowsocksVLESS+Reality
DPI resistanceLowHighMediumMediumVery High
Speed overhead~4%<12% (~3% real-world)~25%~8%~10%
Full VPN tunnelYesYesYesNo (proxy)No (proxy)
Runs in kernelYesYes (DKMS)NoNoNo
Setup complexityLowLow (with installer)HighMediumHigh
TransportUDPUDPTCP/UDPTCPTCP

The decision rules are straightforward:

  • No DPI in your country? Use plain WireGuard. It’s simpler and has a larger ecosystem.
  • Need maximum DPI resistance and OK with a proxy? VLESS+Reality is the strongest option for obfuscation, but it’s not a full tunnel.
  • Want both speed and a full tunnel with obfuscation? AmneziaWG 2.0 is the only option that delivers WireGuard-grade performance with real DPI resistance in a complete VPN tunnel.
  • Already using OpenVPN+obfs4 and it still works? No urgent need to switch, but AmneziaWG will be noticeably faster.

This article focuses on AmneziaWG because it’s the only protocol that gives you a full tunnel, kernel-level performance, and built-in obfuscation — all configured by a single script.

If AmneziaWG is the right choice for your situation, here’s exactly what you need before we start deploying.


What You’ll Need Before Starting

Before running the installer, make sure your environment meets these requirements:

RequirementDetailWhy
OSUbuntu 24.04 LTS (clean install). Ubuntu 25.10 is experimental. Debian 12/13 work but may need

curl pre-installed.
The installer is tested and fully supported on Ubuntu 24.04.
VPS specs1 vCore, 1 GB RAM, 25 GB storage. Any $3–5/month plan works.The installer needs ~2 GB disk and ~1 GB RAM during the DKMS build. The running VPN uses negligible resources.
VirtualizationKVM (not OpenVZ, not LXC).AmneziaWG loads a kernel module via DKMS. LXC shares the host kernel and cannot load custom modules.
SSH accessRoot or sudo user with password/key authentication.The installer must run as root.
SSH portDefault 22, or pre-opened in UFW if using a non-standard port.If SSH isn’t on port 22 and you don’t pre-open it, the installer’s firewall setup will lock you out.
Client appAmnezia VPN >= 4.8.12.7 (all platforms).AWG 2.0 parameters are not understood by older clients. The standard WireGuard client does not support AWG at all.

⚠️ Warning: LXC containers are not supported. If your VPS uses LXC virtualization, the DKMS kernel module build will fail. You must use KVM or bare-metal. Check with your provider if you’re unsure.

⚠️ Warning: If your SSH runs on a non-standard port (anything other than 22), you must open it in UFW before running the installer:

sudo ufw allow YOUR_PORT/tcp

Replace

YOUR_PORT

with your actual SSH port. The installer enables UFW with a default-deny policy — if your SSH port isn’t allowed, you’ll be locked out immediately.

💡 Tip: Wait 5–10 minutes after creating your VPS before running the installer. Cloud-init and background initialization processes can conflict with the

apt-get

calls the installer makes.

With your VPS ready and prerequisites confirmed, let’s deploy AmneziaWG 2.0 using the community installer script — the fastest and most transparent method.


Słowa kluczowe

Słowo kluczoweDefinicja
🛡️ AmneziaWGFork protokołu WireGuard, który randomizuje nagłówki pakietów, rozmiary i czasy transmisji w celu przeciwdziałania głębokim inspekcjom pakietów, zachowując tę samą sprawdzoną kryptografię. To protokół, który działa na Twoim serwerze.
🚀 AmneziaWG 2.0Obecna główna wersja, która wykorzystuje dynamiczne zakresy nagłówków (zamiast wartości stałych), dodaje padding na poziomie danych (S4) i obsługuje pakiety zastępcze z niestandardową sygnaturą protokołu dla silniejszego omijania DPI.
🔍 Deep Packet Inspection (DPI)Technika filtrowania sieci używana przez dostawców usług internetowych i podmioty rządowe do identyfikacji i blokowania ruchu VPN poprzez analizę nagłówków pakietów, rozmiarów i wzorców handshake’u. AmneziaWG został specjalnie zaprojektowany do przeciwdziałania temu.
WireGuardSzybki, nowoczesny protokół VPN z małą bazą kodu i wydajnością na poziomie jądra. Łatwo identyfikowalny przez systemy DPI ze względu na stałą strukturę pakietów, co zostało rozwiązane w AmneziaWG.
🏠 Self-hosted VPNVPN, który wdrażasz i zarządzasz na własnym serwerze (zazwyczaj VPS) zamiast subskrybować usługę komercyjnego dostawcy. Kontrolujesz klucze, konfigurację i infrastrukturę.
🐧 DKMS (Dynamic Kernel Module Support)Framework Linux, który automatycznie rekompiluje moduły jądra po aktualizacji jądra systemu. Instalator AmneziaWG używa DKMS do budowania wysokowydajnego modułu jądra.
🎭 ObfuscationPraktyka maskowania ruchu VPN, aby wyglądał jak zwykły ruch internetowy. AmneziaWG maskuje na warstwie transportu poprzez randomizację nagłówków, dodawanie paddingu, wysyłanie pakietów zastępczych i generowanie pakietów śmieci.
🔀 Split tunnelingKonfiguracja routingu, w której tylko określony ruch (np. zablokowane witryny) przechodzi przez VPN, podczas gdy inny ruch korzysta z bezpośredniego połączenia. Przydatne w krajach z częściową cenzurą.
🖥️ KVM vs LXCKVM to pełna wirtualizacja z dedykowanym jądrem wymaganym do ładowania niestandardowych modułów jądra, takich jak AmneziaWG. LXC to wirtualizacja kontenerów, która używa współdzielonego jądra hosta i nie może ładować niestandardowych modułów.
🎪 CPS (Custom Protocol Signature)Funkcja AmneziaWG 2.0, która wysyła pakiety zastępcze naśladujące inne protokoły (QUIC, DNS, SIP) przed rzeczywistym handshake’iem, wprowadzając w błąd systemy DPI poprzez klasyfikowanie ruchu jako normalnego.

🔄 Aktualizacja (lipiec 2026): Ten przewodnik zachowuje oryginalny opis, ale przypięty tag instalatora pokazany poniżej, v5.8.1, nie jest już aktualny. Najnowsza wersja amneziawg-installer to v5.18.4, która dodaje obsługę Debian 12 i 13, gotowe moduły jądra ARM64 i Raspberry Pi, Ubuntu 25.10 i 26.04, tryb kaskadowy i dalsze ulepszenia bezpieczeństwa.

Jeśli postępujesz zgodnie z tym przewodnikiem dzisiaj, zastąp starszą przypięty polecenie na wget https://raw.githubusercontent.com/bivlked/amneziawg-installer/v5.18.4/install_amneziawg_en.sh lub sprawdź bieżący tag na stronie najnowszych wydań przed wdrożeniem.


Samodzielne wdrażanie serwera VPN AmneziaWG — Kompletny przewodnik

AmneziaWG

AmneziaWG to protokół zaprojektowany do rozwiązania konkretnego problemu: jak osiągnąć prędkości WireGuard, gdy sieci, z którymi się łączysz, aktywnie próbują go blokować? Jest to fork WireGuard stworzony przez zespół Amnezia VPN i robi to, czego oryginał nie robi — randomizuje warstwę transportu, aby systemy głęboką inspekcją pakietów nie mogły go zidentyfikować. Szyfrowanie pozostaje dokładnie takie samo. Zmienia się tylko wygląd pakietów w sieci.

Szeroki krajobraz obfuskacji VPN był przez lata wyścigiem zbrojeń. Narzędzia takie jak Shadowsocks, VLESS+Reality i OpenVPN z obfs4 próbują maskować ruch na różne sposoby — niektóre jako proxy, niektóre jako pełne tunele, niektóre z wysokimi kosztami wydajności. AmneziaWG zajmuje określoną niszę: jest to pełny tunel VPN z wydajnością na poziomie WireGuard i wbudowaną ochroną przed DPI, wszystko w jednym pakiecie. A ponieważ jest open-source, możesz go wdrożyć na własnym serwerze.

Ale oto problem, który sprawia, że jest to konieczne. Konfigurujesz WireGuard. Działa idealnie — szybko, czyszczenie, niezawodnie. Potem pewnego dnia przestaje działać. Brak komunikatu o błędzie, brak timeout’u, brak odmowy połączenia. Pakiety po prostu znikają. To wygląda praktycznie blokowanie DPI: twój tunel wciąż działa, twoja konfiguracja wciąż jest poprawna, a nic nie przechodzi. To już rzeczywistość w niektórych krajach.

VPN Obfuscation

Tradycyjne alternatywy nie w pełni rozwiązują ten problem. Shadowsocks to proxy, a nie pełny tunel VPN — twój DNS i ruch non-TCP będą wciąż wyciekać. OpenVPN z obfs4 działa, ale ma około 25% narzutu wydajności. VLESS+Reality oferuje silną obfuskację, ale jest oparte na proxy i skomplikowane do skonfigurowania. AmneziaWG wypełnia lukę: jest to pełny tunel VPN z wydajnością na poziomie WireGuard i wbudowaną ochroną przed DPI.

Ten przewodnik przeprowadzi cię przez wdrożenie w pełni funkcjonalnego serwera AmneziaWG 2.0 na dowolnym KVM VPS w mniej niż 15 minut, używając jednego skryptu instalatora społeczności. Na koniec będziesz mieć działający tunel VPN, z którym możesz się połączyć z dowolnego urządzenia. Kroki są niezależne od dostawcy — działają na dowolnym VPS z dostępem SSH i uprawnieniami root, niezależnie od tego, czy pochodzi z AvaHost, czy innego dostawcy. To jest napisane dla użytkowników o pośrednim poziomie umiejętności technicznych, którzy czują się komfortowo pracując z SSH i podstawowymi poleceniami Linux.

Jedno wyjaśnienie przed rozpoczęciem: AmneziaWG to protokół. AmneziaVPN to aplikacja kliencka, która się z nim łączy. Są powiązane, ale odrębne — jak TLS dla twojej przeglądarki. Będziesz potrzebować aplikacji do połączenia, ale protokół to to, co działa na twoim serwerze.

Ale zanim cokolwiek wdrożymy, musisz zrozumieć, co odróżnia AmneziaWG od WireGuard — i dlaczego ta różnica ma znaczenie, gdy DPI cię obserwuje.


Co to jest AmneziaWG? (Model Mentalny)

WireGuard jest elegancki w swoim projektowaniu. Ma małą bazę kodu, wykorzystuje nowoczesną kryptografię i działa w jądrze Linuksa, osiągając niemal natywną wydajność. Ale ta elegancja ma problem widoczności: każdy pakiet WireGuard nosi tę samą stałą strukturę nagłówka, te same stałe rozmiary pakietów i ten sam wzorzec uzgadniania. Dla systemu głęboką inspekcji pakietów tunel WireGuard ma sygnaturę tak wyraźną jak kod kreskowy. Gdy urządzenie DPI nauczy się tej sygnatury, może odrzucić każdy pakiet bez blokowania portu ani zamykania połączenia.

DPI

AmneziaWG to fork WireGuard-Go stworzony przez zespół Amnezia VPN. Odziedziczył architektoniczną prostotę WireGuard — tę samą wymianę kluczy Curve25519, to samo szyfrowanie ChaCha20-Poly1305, ten sam handshake Noise IK. Cała kryptografia pozostaje niezmieniona i jest również zweryfikowana. To, co zmienia AmneziaWG, to warstwa transportu: nagłówki pakietów, rozmiary pakietów i wzorce czasowe.

Pomyśl o tym w ten sposób. WireGuard to kurier, który zawsze nosi ten sam mundur — szybki, niezawodny i wydajny. Ale każdy obserwujący drogę uczy się rozpoznawać ten mundur i może zatrzymać kuriera na każdym posterunku. AmneziaWG to ten sam kurier noszący te same paczki, ale zmienia swój mundur na każdym posterunku. Ta sama osoba, ten sam ładunek, zupełnie inny wygląd.

Historia wersji ma znaczenie. AmneziaWG 1.x wprowadził niestandardowe nagłówki, które różniły się od stałych wartości WireGuard — to przez pewien czas pomagało, ale systemy DPI się dostosowały. AmneziaWG 2.0, wydany pod koniec 2025 roku, randomizuje wszystko: nagłówki zmieniają się z pakietu na pakiet, padding zmienia się z wiadomości na wiadomość, a pakiety zastępcze naśladują inne protokoły przed rzeczywistym handshake’iem. Nie ma uniwersalnej sygnatury do wykrycia, ponieważ każdy serwer AmneziaWG 2.0 generuje swój własny unikalny zestaw parametrów. Każdy serwer mówi swoim dialektem.

Gdy wszystkie parametry obfuskacji są ustawione na zero, AmneziaWG zachowuje się identycznie jak WireGuard — jest w pełni wstecznie kompatybilny na poziomie protokołu. Ale z aktywnymi parametrami (co jest ustawieniem domyślnym), staje się tym, czym WireGuard nie może być: szybkim tunelem VPN, który systemy DPI trudno identyfikują.

Jak dokładnie AmneziaWG szyfruje swój ruch? Spójrzmy na cztery poziomy obfuskacji, które sprawiają, że DPI jest ślepe — i dlaczego dodają prawie żadnych kosztów szybkości.


Jak AmneziaWG ukrywa się przed DPI (bez utraty prędkości)

AmneziaWG 2.0 wykorzystuje cztery poziomy obfuskacji, które pracują razem. Każdy z nich atakuje inny sposób, w jaki systemy DPI identyfikują ruch VPN. Razem sprawiają, że ruch każdego serwera jest unikalny.

Dynamiczne nagłówki (H1–H4)

WireGuard używa stałych 32-bitowych identyfikatorów typu wiadomości:

  • 1 — dla inicjacji
  • 2 — dla odpowiedzi
  • 3 — dla odpowiedzi z ciasteczkiem
  • 4 — dla danych

Urządzenie DPI skanujące ruch po prostu szuka tych wartości. AmneziaWG 2.0 zastępuje każdą stałą wartość losową liczbą wybraną z określonego zakresu. Nagłówek inicjacji (H1) może być dowolną wartością od 234567 do 345678. Nagłówek odpowiedzi (H2) może być od 3456789 do 4567890. Te zakresy nigdy się nie nakładają — protokół nadal musi wewnętrznie rozróżniać typy pakietów — ale dla obserwatora z zewnątrz nie ma pojedynczej wartości nagłówka, na którą można by się zafiksować. Każdy pakiet wygląda inaczej niż poprzedni.

Losowe wypełnienie (S1–S4)

Pakiet inicjacji WireGuard ma zawsze dokładnie 148 bajtów. Jego odpowiedź ma zawsze dokładnie 92 bajty. Te stałe rozmiary to kolejny odcisk palca. AmneziaWG dodaje losowe wypełnienie do każdego typu pakietu: inicjacja staje się 148+S1 bajtów, odpowiedź staje się 92+S2 bajtów, odpowiedź z ciasteczkiem staje się 64+S3 bajtów, a każdy pakiet danych otrzymuje S4 bajtów wypełnienia. S3 i S4 są nowością w wersji 2.0 — a S4 to najważniejsze dodanie, ponieważ wpływa na każdy pojedynczy pakiet danych, znacznie utrudniając analizę ruchu na poziomie sesji.

Istnieje jedno krytyczne ograniczenie: S1+56 nie może być równe S2. Ponieważ pierwotna różnica rozmiaru między inicjacją a odpowiedzią wynosi 56 bajtów (148−92), jeśli wartości wypełnienia losowo kompensują dokładnie tę różnicę, dwa wypełnione pakiety będą miały ten sam rozmiar — odtwarzając odcisk palca, który AmneziaWG próbuje wyeliminować. Generator parametrów instalatora automatycznie zapewnia to ograniczenie.

Niestandardowy podpis protokołu (I1–I5)

Zanim rozpocznie się rzeczywisty uścisk dłoni, klient AmneziaWG wysyła do pięciu pakietów zastępczych, które naśladują inne protokoły — QUIC, DNS, SIP lub niestandardowe wzorce bajtów. Serwer całkowicie ignoruje te pakiety. Po prostu czeka na rzeczywisty uścisk dłoni.

  • Prosta konfiguracja: Wysyła 128 losowych bajtów <r 128>.
  • Złożona konfiguracja: Wysyła bajty, które wyglądają jak inicjacja połączenia QUIC (<b 0xc000000001><r 64><t>), ze znacznikiem czasu Unix.

Dla systemu DPI obserwującego początek sesji, pierwsze pakiety wyglądają jak zwykły ruch internetowy.

Pakiety śmieci (Jc, Jmin, Jmax)

Po pakietach zastępczych klient wysyła dostosowaną liczbę pakietów śmieci — czysty szum o losowych rozmiarach od Jmin do Jmax. Te pakiety zaciemniają profil czasu i rozmiaru początku sesji, utrudniając systemom DPI identyfikację miejsca, w którym rozpoczyna się rzeczywisty uścisk dłoni.

Pytanie o prędkość

W internecie krąży liczba: AmneziaWG ma 65% narzutu. Ta liczba jest rzeczywista, ale odnosi się do implementacji Go w przestrzeni użytkownika — nie do modułu jądra. Instalator społeczności używany w tym przewodniku buduje moduł jądra DKMS, a moduł jądra dodaje mniej niż 12% narzutu ogółem — bliżej 3% w rzeczywistych testach. W niecenzurowanej sieci uzyskałbyś około 95 Mbps przez WireGuard i 92 Mbps przez AmneziaWG 2.0. W cenzurowanej sieci porównanie wynosi 92 Mbps versus zero.

Poniższa tabela podsumowuje parametry, które instalator generuje automatycznie:

ParametrWygenerowany zakresPrzykładowa wartość
Jc (liczba pakietów śmieci)4–86
Jmin (min. rozmiar śmieci)40–8955
Jmax (max. rozmiar śmieci)Jmin+100 do Jmin+500380
S1 (wypełnienie inicjacji)15–15072
S2 (wypełnienie odpowiedzi)15–150, S1+56≠S256
S3 (wypełnienie ciasteczka)8–5532
S4 (wypełnienie danych)4–2716
H1 (zakres nagłówka inicjacji)uint32 bez nakładania się234567-345678
H2 (zakres nagłówka odpowiedzi)uint32 bez nakładania się3456789-4567890
H3 (zakres nagłówka ciasteczka)uint32 bez nakładania się56789012-67890123
H4 (zakres nagłówka danych)uint32 bez nakładania się456789012-567890123
I1 (pakiet CPS)<r N> format<r 128>

Nie musisz ręcznie ustawiać żadnego z tych parametrów. Instalator generuje kryptograficznie losowe wartości spełniające ograniczenia za każdym razem.

Teraz, gdy wiesz, jak działa obfuskacja, zobaczmy, jak AmneziaWG porównuje się z alternatywami, które możesz rozważać.


AmneziaWG vs Alternatywy — Przewodnik szybkiego podejmowania decyzji

VPN
Jeśli oceniasz protokoły VPN w środowisku cenzury, prawdopodobnie napotkałeś kilka opcji. Oto jak się one porównują pod względem kluczowych parametrów:

WireGuardAmneziaWG 2.0OpenVPN+obfs4ShadowsocksVLESS+Reality
Odporność na DPINiskaWysokaŚredniaŚredniaBardzo wysoka
Narzut prędkości~4%<12% (~3% w warunkach rzeczywistych)~25%~8%~10%
Pełny tunel VPNTakTakTakNie (proxy)Nie (proxy)
Działa w jądrzeTakTak (DKMS)NieNieNie
Złożoność konfiguracjiNiskaNiska (z instalatorem)WysokaŚredniaWysoka
TransportUDPUDPTCP/UDPTCPTCP

Zasady podejmowania decyzji są proste:

  • Brak DPI w Twoim kraju? Użyj zwykłego WireGuard. Jest łatwiejszy i ma szerszy ekosystem.
  • Potrzebujesz maksymalnej ochrony przed DPI i nie masz nic przeciwko proxy? VLESS+Reality to najsilniejsza opcja do obfuskacji, ale nie jest to pełny tunel.
  • Chcesz zarówno szybkości, jak i pełnego tunelu z obfuskacją? AmneziaWG 2.0 to jedyna opcja, która zapewnia wydajność na poziomie WireGuard z rzeczywistą ochroną przed DPI w pełnym tunelu VPN.
  • Już używasz OpenVPN+obfs4 i nadal działa? Nie ma pilnej potrzeby przechodzenia, ale AmneziaWG będzie zauważalnie szybszy.

Ten artykuł skupia się na AmneziaWG, ponieważ jest to jedyny protokół, który zapewnia pełny tunel, wydajność na poziomie jądra i wbudowaną obfuskację — wszystko skonfigurowane za pomocą jednego skryptu.

Jeśli AmneziaW

Co musisz przygotować przed rozpoczęciem

Przed uruchomieniem instalatora upewnij się, że Twoje środowisko spełnia następujące wymagania:

WymaganieSzczegółyDlaczego
System operacyjnyUbuntu 24.04 LTS (czysta instalacja). Ubuntu 25.10 jest eksperymentalne. Debian 12/13 działa, ale może wymagać wstępnie zainstalowanego curl.Instalator jest testowany i w pełni obsługiwany na Ubuntu 24.04.
Specyfikacja VPS1 vCore, 1 GB RAM, 25 GB pamięci. Dowolny plan za 3–5 USD/miesiąc jest odpowiedni.Instalator wymaga ~2 GB miejsca na dysku i ~1 GB RAM podczas kompilacji DKMS. Działająca sieć VPN zużywa minimalne zasoby.
WirtualizacjaKVM (nie OpenVZ, nie LXC).AmneziaWG ładuje moduł jądra poprzez DKMS. LXC używa wspólnego jądra hosta i nie może ładować niestandardowych modułów.
Dostęp SSHUżytkownik root lub sudo z uwierzytelnianiem hasłem/kluczem.Instalator musi działać jako root.
Port SSHDomyślnie 22 lub wcześniej otwarty w UFW, jeśli używasz portu niestandardowego.Jeśli SSH nie działa na porcie 22 i nie otworzyłeś go wcześniej, konfiguracja zapory instalatora Cię zablokuje.
Aplikacja klienckaAmnezia VPN >= 4.8.12.7 (wszystkie platformy).Opcje AWG 2.0 nie są rozumiane przez starsze klienty. Standardowy klient WireGuard w ogóle nie obsługuje AWG.

⚠️ Ostrzeżenie: Kontenery LXC nie są obsługiwane. Jeśli Twój VPS używa wirtualizacji LXC, kompilacja modułu jądra DKMS się nie powiedzie. Musisz użyć KVM lub bare-metal. Skontaktuj się z dostawcą, jeśli nie jesteś pewny.

⚠️ Ostrzeżenie: Jeśli Twój SSH działa na porcie niestandardowym (innym niż 22), musisz otworzyć go w UFW przed uruchomieniem instalatora:
sudo ufw allow YOUR_PORT/tcp
Zastąp YOUR_PORT swoim rzeczywistym portem SSH. Instalator zawiera UFW z domyślną polityką — jeśli Twój port SSH nie jest dozwolony, zostaniesz natychmiast zablokowany.

💡 Wskazówka: Czekaj 5–10 minut po utworzeniu VPS przed uruchomieniem instalatora. Procesy cloud-init i inicjalizacji w tle mogą kolidować z wywołaniami apt-get, które wykonuje instalator.

Gdy Twój VPS jest gotowy i wymagania wstępne potwierdzone, wdrażamy AmneziaWG 2.0 za pomocą skryptu instalatora społeczności — najszybszej i najbardziej przejrzystej metody.


Metoda 1 — Wdrożenie za pomocą instalatora CLI (Rekomendowane)

To jest główna metoda instalacji. Pobierzesz skrypt instalatora z przypinaną wersją, uruchomisz go jako root, przejdziesz przez osiem zautomatyzowanych kroków (z dwoma oczekiwanymi restartami) i skończysz z w pełni skonfigurowanym serwerem AmneziaWG 2.0. Instalator obsługuje wszystko: instalację pakietów, kompilację modułu jądra, konfigurację zapory, generowanie parametrów i uruchomienie usługi.

6.1 — Połącz się z VPS za pośrednictwem SSH

Otwórz terminal i połącz się z serwerem:

ssh root@<SERVER_IP>

Zastąp <SERVER_IP> rzeczywistym publicznym adresem IP Twojego VPS. Jeśli dostawca dał Ci użytkownika innego niż root, zaloguj się tym użytkownikiem, a następnie podnieś uprawnienia:

ssh <username>@<SERVER_IP>
sudo -i

Powinieneś zobaczyć baner powitalny Ubuntu 24.04 i wiersz poleceń root:

Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-xx-generic x86_64)
...
root@vps:~#

6.2 — Pobierz i uruchom instalator

Pobierz skrypt instalatora, ustaw go jako wykonywalny i uruchom:

wget https://raw.githubusercontent.com/bivlked/amneziawg-installer/v5.8.1/install_amneziawg_en.sh

chmod +x install_amneziawg_en.sh

sudo bash ./install_amneziawg_en.sh

Adres URL jest przypinaną wersją do v5.8.1 — najnowszego wydania na kwiecień 2026 r. To bezpieczeństwo łańcucha dostaw: gwarantuje, że pobrany skrypt odpowiada testowanej wersji, nawet jeśli repozytorium zostało zaktualizowane od tego czasu.

Instalator rozpoczyna sprawdzanie systemu:

============================================
AmneziaWG 2.0 Installer v5.8.1
============================================
Checking system requirements...
OS: Ubuntu 24.04 LTS — OK
Virtualization: KVM — OK
RAM: 1024 MB — OK
Disk: 25 GB free — OK

Jeśli którekolwiek sprawdzenie nie powiedzie się, instalator zatrzymuje się i wyjaśnia dlaczego. Napraw problem i ponownie uruchom polecenie.

6.3 — Przejdź przez monity instalatora

Instalator to ośmiokrokowa maszyna stanów z obsługą wznowienia po restarcie. Zapisuje postęp do /root/awg/awgsetup_cfg.init, więc jeśli serwer się restartuje, po prostu uruchom to samo polecenie ponownie i będzie kontynuować od miejsca, w którym skończyło.

Krok 0: Inicjalizacja — Instalator sprawdza Twój system operacyjny, typ wirtualizacji, RAM i przestrzeń dyskową. Tworzy katalog roboczy /root/awg/ i ustawia plik blokady, aby zapobiec równoczesnym uruchomieniom.

Krok 1: Aktualizacja systemu i instalacja pakietów — Instalator uruchamia apt-get update && apt-get upgrade -y. Następnie instaluje AmneziaWG, DKMS, nagłówki Linux, UFW, Fail2Ban, narzędzia generowania kodów QR i inne zależności.

📝 Uwaga: Instalator usuwa również kilka usług działających w tle, które zużywają zasoby na minimalnych instancjach VPS: snapd, modemmanager, networkd-dispatcher, unattended-upgrades, packagekit, lxd-agent-loader i udisks2. Jest to celowe i bezpieczne dla minimalnych węzłów VPN, ale może przerwać środowiska ogólnego przeznaczenia.

Po zakończeniu kroku 1 instalator żąda restartu:

Reboot required. Reboot now? [y/n]:

Wpisz y i naciśnij Enter. Po powrocie serwera połącz się ponownie przez SSH i ponownie uruchom to samo polecenie:

sudo bash ./install_amneziawg_en.sh

Skrypt odczytuje zapisany stan i przechodzi do kroku 2 bez ponownego zadawania żadnych pytań.

Krok 2: Kompilacja modułu jądra DKMS — Instalator kompiluje moduł jądra AmneziaWG dla Twojego bieżącego jądra i rejestruje go w DKMS do automatycznego przebudowania przy przyszłych aktualizacjach jądra:

Step 2: Building AmneziaWG kernel module via DKMS...
Creating symlink /var/lib/dkms/amneziawg/2.0/source -> /usr/src/amneziawg-2.0
DKMS: add completed.
Kernel preparation completed.
Building module:
make -C /lib/modules/6.8.0-xx-generic/build M=/var/lib/dkms/amneziawg/2.0/build modules
DKMS: build completed.
DKMS: install completed.

Żądany jest drugi restart. Wpisz y i naciśnij Enter.

📝 Uwaga: Dwa restarty podczas instalacji są normalne i oczekiwane. Pierwszy ładuje nowe nagłówki jądra, drugi aktywuje nowo zbudowany moduł jądra. Skrypt zapisuje stan między restartami — nic się nie gubi.

Po drugim restarcie połącz się ponownie przez SSH i uruchom instalator jeszcze raz:

sudo bash ./install_amneziawg_en.sh

Krok 3: Weryfikacja modułu po restarcie — Skrypt weryfikuje, że moduł jądra jest załadowany (lsmod | grep amneziawg). Jeśli kompilacja DKMS z jakiegoś powodu nie powiodła się, przechodzi do implementacji Go w przestrzeni użytkownika z ostrzeżeniem o wyższych wydatkach.

Krok 4: Konfiguracja zapory — UFW jest włączony z domyślną polityką deny incoming. Instalator dodaje regułę ograniczającą szybkość SSH na porcie 22, otwiera port VPN dla ruchu UDP i konfiguruje reguły routingu dla interfejsu awg0.

Krok 5: Pobierz skrypty zarządzania — Skrypty zarządzania klientami (manage_amneziawg.sh i awg_common.sh) są pobierane do /root/awg/ z uprawnieniami tylko dla właściciela (700). Są one również przypinaną wersją do v5.8.1.

Krok 6: Konfiguracja interaktywna — Instalator teraz zadaje cztery pytania:

  • Port UDP (domyślnie: 39743, zakres 1024–65535). Domyślnie jest to losowy wysoki port — zachowaj go, chyba że wiadomo, że Twój ISP blokuje wysokie porty UDP.
  • Podsieć tunelu (domyślnie: 10.9.9.1/24). To jest Twoja wewnętrzna sieć VPN. Serwer otrzymuje .1, klienci otrzymują .2 do .254, obsługując do 253 klientów.
  • Wyłącz IPv6 (domyślnie: Y). Rekomendowane — wyłączenie IPv6 zapobiega wyciekowi ruchu poza tunel na trasach IPv6.
  • Tryb routinguWybierz 1 dla całego ruchu, 2 dla Amnezia List + DNS (rekomendowane) lub 3 dla niestandardowych sieci. Tryb 2 kieruje tylko zablokowane zakresy publicznych adresów IP i DNS przez VPN, utrzymując szybki i bezpośredni dostęp do sieci lokalnej.

💡 Porada: MTU jest domyślnie ustawiony na 1280. To jest minimalne MTU IPv6 i jest krytyczne dla sieci mobilnych i komórkowych. iOS jest ścisły w kwestii Path MTU Discovery, a sieci komórkowe często mają efektywne MTU poniżej domyślnego 1420 WireGuard. Zostaw to na 1280.

Krok 7: Uruchomienie usługi — Instalator generuje konfigurację serwera w /etc/amnezia/amneziawg/awg0.conf, tworzy dwie domyślne konfiguracje klientów (my_phone i my_laptop) w /root/awg/, generuje kody QR i uruchamia usługę systemd awg-quick@awg0.

Krok 8: Zakończenie — Zobaczysz komunikat o sukcesie:

VPN

Instalator automatycznie generuje wszystkie parametry obfuskacji AmneziaWG 2.0. Nie musisz ich dotykać. Każdy serwer otrzymuje unikalny zestaw wartości — nie ma uniwersjalnego odcisku palca dla systemów DPI do wykrycia.

6.4 — Zarządzanie klientami po instalacji

Skrypt zarządzania w /root/awg/manage_amneziawg.sh obsługuje wszystkie operacje cyklu życia klienta. Oto podstawowe polecenia:

Dodaj nowego klienta:

sudo bash /root/awg/manage_amneziawg.sh add my_desktop

To generuje plik .conf, kod QR i plik .vpnuri dla nowego klienta. Konfiguracja serwera jest przeładowywana na gorąco — nie jest wymagany restart usługi.

Dodaj tymczasowego klienta z automatycznym wygaśnięciem:

sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d

Zadanie cron sprawdza co pięć minut i automatycznie usuwa klienta po wygaśnięciu. Konfiguracja, klucze i wpis serwera są całkowicie czyszczone.

Wyświetl listę wszystkich klientów:

sudo bash /root/awg/manage_amneziawg.sh list

Clients:
  my_phone     (10.9.9.2/32)
  my_laptop    (10.9.9.3/32)
  my_desktop   (10.9.9.4/32)
  guest        (10.9.9.5/32) [expires in 6d 23h]

Dodaj flagę -v dla dodatkowych szczegółów, w tym kluczy publicznych i dat utworzenia.

Usuń klienta:

sudo bash /root/awg/manage_amneziawg.sh remove guest

Sprawdź pełny status serwera:

sudo bash /root/awg/manage_amneziawg.sh check

Pokazuje stan usługi, otwarty port, wszystkie parametry AWG 2.0, status modułu jądra, status UFW i status Fail2Ban w jednym widoku.

Wyświetl statystyki ruchu na klienta:

sudo bash /root/awg/manage_amneziawg.sh stats

Client          Received        Sent            Latest handshake
───────────────────────────────────────────────────────────────────
my_phone        1.24 GiB        356.7 MiB       2 minutes ago
my_laptop       892.3 MiB       128.4 MiB       15 seconds ago
my_desktop      0 B             0 B             (none)

Utwórz kopię zapasową:

sudo bash /root/awg/manage_amneziawg.sh backup

To tworzy skompresowane archiwum w /root/awg/backups/ zawierające konfigurację serwera, konfiguracje klientów, klucze i dane wygaśnięcia.

📝 Uwaga: Polecenia add i remove używają awg syncconf do przeładowania na gorąco. Konfiguracja serwera aktualizuje się natychmiast bez restartu usługi. Używaj restart tylko podczas zmiany parametrów po stronie serwera, takich jak port lub MTU.

6.5 — Sprawdź, czy serwer działa

Przejdź przez te sprawdzenia, aby potwierdzić, że wszystko działa prawidłowo:

Sprawdź usługę systemd:

sudo systemctl status awg-quick@awg0

● awg-quick@awg0.service - AmneziaWG Quick via awg-quick(8) for awg0
     Loaded: loaded (/lib/systemd/system/awg-quick@.service; enabled)
     Active: active (exited) since Thu 2026-04-09 14:32:01 UTC

Sprawdź status i parametry AmneziaWG:

sudo awg show awg0

Sprawdź zaporę:

sudo ufw status verbose

Status: active
Default: deny (incoming), allow (outgoing)
22/tcp                     LIMIT IN    Anywhere
39743/udp                  ALLOW IN    Anywhere

Sprawdź Fail2Ban:

sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  `- Total failed: 0
`- Actions
   |- Currently banned: 0
   `- Banned IP list:

Sprawdź moduł jądra DKMS:

dkms status

amneziawg/1.0.0, 6.8.0-110-generic, x86_64: installed

Jeśli wszystkie pięć sprawdzeń przejdzie pomyślnie, Twój serwer AmneziaWG 2.0 działa i jest gotów do akceptowania połączeń.

Twój serwer działa i został zweryfikowany. Jeśli wolisz podejście oparte na GUI zamiast terminala, oto alternatywna metoda korzystająca z aplikacji AmneziaVPN.


Metoda 2 — Wdrożenie za pomocą aplikacji AmneziaVPN (Alternatywa)

Aplikacja desktopowa AmneziaVPN może automatycznie zainstalować AmneziaWG na serwerze za pośrednictwem SSH. Wykorzystuje ten sam skrypt instalacyjny co metoda CLI, ale opakowuje wszystko w interfejs z przewodnikiem. Jest to idealne rozwiązanie, jeśli chcesz bezobsługową instalację.

  1. Pobierz AmneziaVPN ze strony amnezia.org/en/downloads. Dostępna jest dla systemów Windows, macOS, Linux, Android i iOS.
  2. Otwórz aplikację i kliknij ikonę ➕ (plus) lub Rozpocznij.
  3. Wybierz opcję „Self-hosted VPN” z dostępnych opcji.
  4. Wprowadź dane dostępu do serwera:
    • Adres IP serwera (i port, jeśli SSH nie działa na porcie 22, np. 203.0.113.10:2221)
    • Nazwa użytkownika SSH (np. root)
    • Hasło lub klucz prywatny SSH
  5. Wybierz typ instalacji:
    • Automatyczna — instaluje tylko AmneziaWG (rekomendowane)
    • Ręczna — wybierz konkretny protokół z listy
  6. Kliknij „Zainstaluj” — aplikacja łączy się z serwerem za pośrednictwem SSH i uruchamia instalację automatycznie. Zobaczysz wskaźnik postępu.
  7. Po instalacji aplikacja tworzy gotowy do użytku profil połączenia VPN.

Uwagi po instalacji:

  • Aplikacja instaluje AmneziaWG z losowym portem domyślnie. Niektórzy dostawcy usług internetowych blokują UDP na wysokich portach. Aplikacja rekomenduje zmianę na port poniżej 9999 (np. 585 lub 1234). Aby to zmienić: kliknij ikonę koła zębatego obok połączenia → zakładka Zarządzanie → zmień numer portu.
  • Jeśli na serwerze jest już zainstalowane oprogramowanie Amnezia, kliknij „Pomiń konfigurację” podczas tworzenia połączenia, a następnie użyj opcji „Sprawdź serwer pod kątem wcześniej zainstalowanych usług Amnezia” w zakładce Zarządzanie.

Oto porównanie obu metod:

AspektInstalator CLIAplikacja AmneziaVPN
KontrolaPełna — widzisz każdy krok, możesz dostosowaćOgraniczona — aplikacja obsługuje wszystko
PrzejrzystośćPrzejrzysta — wszystkie polecenia widoczneNieprzejrzysta — działa w tle
ElastycznośćNiestandardowe routowanie, endpoint, flagiTylko ustawienia domyślne
Łatwość użyciaWymaga znajomości SSHBez pracy z terminalem
ZarządzaniePełny zestaw manage_amneziawg.shTylko zarządzanie przez aplikację
Najlepsze dlaNiezarządzany VPS, rozwiązywanie problemówSzybka konfiguracja, doświadczenie z przewodnikiem

Niezależnie od tego, czy użyłeś CLI czy aplikacji, Twój serwer jest gotowy. Teraz połączmy Twoje pierwsze urządzenie.


Podłączanie Pierwszego Klienta

Po instalacji masz trzy sposoby na zaimportowanie konfiguracji klienta do aplikacji Amnezia VPN. Wybierz metodę odpowiednią dla Twojego urządzenia.

Metoda A: Kod QR (Urządzenia mobilne)

Instalator wygenerował kod QR w pliku /root/awg/my_phone.png. Pobierz go na swój komputer:

scp root@<SERVER_IP>:/root/awg/my_phone.png .

Otwórz plik PNG na ekranie. Na telefonie otwórz aplikację Amnezia VPN, naciśnij „Dodaj VPN”„Skanuj kod QR” i skieruj kamerę na kod QR wyświetlany na ekranie. Konfiguracja zaimportuje się automatycznie.

Metoda B: URI vpn:// (Klient Amnezia)

Wyświetl skompresowany URI na serwerze:

cat /root/awg/my_phone.vpnuri

Skopiuj cały ciąg vpn://… i wyślij go sobie — przez Telegram, e-mail lub aplikację do notatek. Na telefonie otwórz aplikację Amnezia VPN, naciśnij „Dodaj VPN”„Wklej ze schowka”. Konfiguracja zaimportuje się w jednym kroku.

URI to skompresowana przy użyciu zlib i zakodowana w Base64 wersja pełnego pliku konfiguracyjnego. Jest kompaktowa i zaprojektowana do szybkiego udostępniania.

Metoda C: Plik .conf (Desktop/Windows)

Pobierz plik konfiguracyjny:

scp root@<SERVER_IP>:/root/awg/my_phone.conf .

Otwórz klient AmneziaWG dla Windows lub aplikację AmneziaVPN desktop, kliknij „Importuj tunel(e) z pliku” i wybierz plik .conf.

Weryfikacja Połączenia

Po nawiązaniu połączenia sprawdź, czy tunel kieruje Twój ruch przez serwer:

curl ifconfig.me

Wynik powinien pokazać publiczny adres IP Twojego serwera, a nie lokalny: 203.0.113.1

Aby uzyskać więcej szczegółów, w tym lokalizację geograficzną serwera:

curl -s https://ipinfo.io/json

{
  "ip": "203.0.113.1",
  "city": "Amsterdam",
  "region": "North Holland",
  "country": "NL",
  ...
}

⚠️ Ostrzeżenie: Standardowy klient WireGuard nie współpracuje z konfiguracjami AmneziaWG 2.0. Musisz użyć aplikacji Amnezia VPN (wersja 4.8.12.7 lub nowsza) lub natywnego klienta AmneziaWG (wersja 2.0.0 lub nowsza na Windows/Android/iOS).

⚠️ Ostrzeżenie: Jeśli widzisz „Invalid key: s3″ na Windows, Twój klient AmneziaWG dla Windows jest przestarzały (wersja poniżej 2.0.0). Zaktualizuj do wersji 2.0.0+ lub przełącz się na aplikację Amnezia VPN.

💡 Wskazówka: Jeśli jesteś połączony, ale nie masz internetu, sprawdź, czy Twoja konfiguracja klienta ma MTU = 1280 w sekcji [Interface]. To jest najczęstsza przyczyna „handshake się powiedzie, ale brak ruchu”

Co dalej — rozszerzanie konfiguracji

Masz teraz tunel VPN odporny na DPI działający na własnym serwerze, pod twoją kontrolą, z prędkością porównywalną do WireGuard. Problem cichy śmierci pakietów, która zabijała twoje połączenie WireGuard, już nie istnieje — twój ruch wygląda jak coś, czego system DPI nie potrafi niezawodnie zidentyfikować.

Oto najpraktyczniejsze rzeczy, które możesz zrobić dalej:

  1. Dodaj klientów dla rodziny lub zespołu — użyj skryptu zarządzania, aby wygenerować konfiguracje dla każdego urządzenia, które potrzebuje dostępu.
  2. Skonfiguruj split tunneling, jeśli nie potrzebujesz pełnego routowania przez tunel — utrzymuje lokalny ruch szybki i zmniejsza przepustowość na twoim VPS.
  3. Wykonaj kopię zapasową konfiguracji — uruchom polecenie backup i przechowuj archiwum w bezpiecznym miejscu. Jeśli twój serwer kiedykolwiek będzie wymagać przebudowy, to jest to, co cię uratuje przed rozpoczęciem od nowa.

Skonfiguruj split tunneling, jeśli nie potrzebujesz całego ruchu kierowanego przez VPN. Jest to szczególnie przydatne w krajach z częściową cenzurą — kieruj tylko zablokowane strony przez tunel i utrzymuj lokalny ruch bezpośredni:

sudo bash /root/awg/manage_amneziawg.sh modify my_phone AllowedIPs "192.168.1.0/24,10.0.0.0/8"

Zmień DNS klienta, jeśli wolisz inne resolvery:

sudo bash /root/awg/manage_amneziawg.sh modify my_phone DNS "8.8.8.8,1.0.0.1"

Dostosuj PersistentKeepalive, jeśli jesteś w agresywnej konfiguracji NAT. Domyślna wartość 33 sekund utrzymuje sesję UDP przez NAT — obniżenie jej do 25 może pomóc w sieciach, które szybko usuwają bezczynne sesje UDP:

sudo bash /root/awg/manage_amneziawg.sh modify my_phone PersistentKeepalive 25

Zainstaluj na routerze, aby uzyskać pokrycie całej sieci. AmneziaWG jest obsługiwany na routerach Keenetic za pośrednictwem AWG Manager i na routerach ASUS z systemem Asuswrt-Merlin za pośrednictwem AmneziaWG dla Merlin.

Wykonaj kopię zapasową konfiguracji teraz, zanim cokolwiek się zmieni:

sudo bash /root/awg/manage_amneziawg.sh backup

Jeśli kiedykolwiek będziesz musiał migrować na nowy serwer, uruchom świeżą instalację, a następnie:

sudo bash /root/awg/manage_amneziawg.sh restore
sudo bash /root/awg/manage_amneziawg.sh regen

Polecenie restore przywraca twoje konfiguracje i klucze, a regen aktualizuje konfiguracje klientów nowym adresem IP serwera.

Aby uzyskać bardziej szczegółową dokumentację, oficjalna dokumentacja Amnezia znajduje się na stronie docs.amnezia.org, a społeczność jest aktywna na Telegramie.

Podsumowanie

Po przejściu przez pełną konfigurację, to co wyróżnia AmneziaWG 2.0, to nie tylko to, że działa — ale dlaczego działa niezawodnie tam, gdzie inne rozwiązania zawodzą. Zachowując sprawdzony kryptograficzny rdzeń WireGuard, jednocześnie fundamentalnie zmieniając wygląd ruchu w sieci, omija dokładnie te słabości, które Deep Packet Inspection wykorzystuje. Rezultatem jest konfiguracja, która w praktyce czuje się tak samo szybka i prosta jak WireGuard, ale znacznie bardziej odporna w wrogich środowiskach. Po wdrożeniu wartość staje się oczywista: nie tylko uruchamiasz VPN — uruchamiasz taki, który jest zbudowany, aby przetrwać rzeczywiste blokady.

Jeśli szukasz niezawodnego VPS do hostowania serwera AmneziaWG — lub potrzebujesz skalować się z dodatkowymi punktami końcowymi dla członków zespołu — AvaHost zapewnia wirtualizację KVM z pełnym dostępem root, magazynem NVMe i obsługą Ubuntu 24.04, które ta konfiguracja wymaga. Ich infrastruktura jest specjalnie zbudowana dla tego rodzaju samodzielnych wdrożeń, które obejmuje ten przewodnik.