AmneziaWG

POWIĘKSZ SWOJĄ KONFIGURACJĘ SERWERA! ZASTOSUJ AVA I URUCHOM Z 15% ZNIŻKI
UŻYJ PROMOCJI:

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 WireGuard, który randomizuje nagłówki pakietów, rozmiary i czasy transmisji, aby przeciwdziałać głębokiej inspekcji pakietów, zachowując jednocześnie tę samą sprawdzoną kryptografię. Jest to protokół, który działa na Twoim serwerze.
🚀 AmneziaWG 2.0Obecna główna wersja, która wykorzystuje dynamiczne zakresy nagłówków (zamiast stałych wartości), dodaje wypełnienie na poziomie danych (S4) i obsługuje pakiety zastępcze z niestandardowym podpisem protokołu dla silniejszego unikania DPI.
🔍 Głęboka inspekcja pakietów (DPI)Technika filtrowania sieciowego stosowana przez dostawców usług internetowych i podmioty rządowe do identyfikacji i blokowania ruchu VPN poprzez analizowanie nagłówków pakietów, rozmiarów i wzorców handshake. AmneziaWG jest specjalnie zaprojektowany, aby temu przeciwdziałać.
WireGuardSzybki, nowoczesny protokół VPN z małą bazą kodu i wydajnością na poziomie jądra. Jest łatwo identyfikowalny przez systemy DPI z powodu swojej stałej struktury pakietów, co zostało rozwiązane w AmneziaWG.
🏠 VPN hostowany samodzielnieVPN, który wdrażasz i zarządzasz na własnym serwerze (zwykle VPS), zamiast subskrybować u dostawcy komercyjnego. Kontrolujesz klucze, konfigurację i infrastrukturę.
🐧 DKMS (Dynamic Kernel Module Support)Framework Linux, który automatycznie rekompiluje moduły jądra, gdy jądro systemu jest aktualizowane. Instalator AmneziaWG wykorzystuje DKMS do budowy modułu jądra o wysokiej wydajności.
🎭 ObfuskacjaPraktyka maskowania ruchu VPN, aby wyglądał jak zwykły ruch internetowy. AmneziaWG obfuskacja na poziomie transportu poprzez randomizację nagłówków, dodawanie wypełnienia, wysyłanie pakietów zastępczych i generowanie śmieciowych pakietów.
🔀 Split tunnelingKonfiguracja routingu, w której tylko określony ruch (np. zablokowane strony) 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 wykorzystuje współdzielone jądro 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, wprowadzając w błąd systemy DPI, klasyfikując ruch jako normalny.

Samodzielnie wdrażany serwer VPN AmneziaWG — Kompletny przewodnik

AmneziaWG

AmneziaWG to protokół zaprojektowany w celu rozwiązania konkretnego problemu: jak osiągnąć prędkości WireGuard, gdy sieci, do których się łączysz, aktywnie próbują je zablokować? Jest to fork WireGuard stworzony przez zespół Amnezia VPN i robi to, czego oryginał nie robi — randomizuje warstwę transportu, aby systemy głębokiej inspekcji 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 konkretną 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 wdrożyć go na własnym serwerze.

Ale oto problem, który czyni to koniecznym. Ustawiasz WireGuard. Działa perfekcyjnie — szybko, czysto, niezawodnie. A potem pewnego pięknego dnia, przestaje. Żadna wiadomość o błędzie, żadnego przekroczenia czasu, żadnego odrzucenia połączenia. Pakiety po prostu znikają. Tak wygląda blokowanie DPI w praktyce: twój tunel nadal działa, twoja konfiguracja jest nadal poprawna, a nic nie przechodzi. To rzeczywistość w Rosji (gdzie WireGuard ma około 12% wskaźnika sukcesu), Iranie (98% utraty pakietów) i rosnącej liczbie krajów, w tym Chinach, Egipcie, ZEA, Turcji, Białorusi, Uzbekistanie, Kazachstanie, Mjanmie i Pakistanie.

VPN Obfuskacja

Tradycyjne alternatywy nie rozwiązują tego problemu w pełni. Shadowsocks to proxy, a nie pełny tunel VPN — twój ruch DNS i nie-TCP nadal będą przeciekać. 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 w konfiguracji. 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 VPS KVM w mniej niż 15 minut, korzystając z jednego skryptu instalacyjnego społeczności. Na koniec będziesz miał działający tunel VPN, do którego możesz się połączyć z dowolnego urządzenia. Kroki są niezależne od dostawcy — działają na każdym VPS z dostępem SSH i uprawnieniami root, niezależnie od tego, czy z AvaHost, czy innego. Jest to napisane dla użytkowników o ś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ą ze sobą powiązane, ale różne — 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 wdrożymy cokolwiek, musisz zrozumieć, co sprawia, że AmneziaWG różni się od WireGuard — i dlaczego ta różnica ma znaczenie, gdy DPI cię obserwuje.


Co to jest AmneziaWG? (Model mentalny)

WireGuard jest elegancki w swoim projekcie. Ma małą bazę kodu, wykorzystuje nowoczesną kryptografię i działa w jądrze Linuxa dla niemal natywnej wydajności. Ale ta elegancja ma problem z widocznością: każdy pakiet WireGuard niesie ze sobą tę samą stałą strukturę nagłówka, te same stałe rozmiary pakietów i ten sam wzór handshake. Dla systemu głębokiej inspekcji pakietów tunel WireGuard ma podpis tak wyraźny jak kod kreskowy. Gdy urządzenie DPI pozna ten podpis, może odrzucić każdy pakiet, nie blokując portu ani nie zamykając połączenia.

DPI
AmneziaWG to fork WireGuard-Go stworzony przez zespół Amnezia VPN. Dziedziczy architektoniczną prostotę WireGuard — ten sam wymiana kluczy Curve25519, ten sam szyfr ChaCha20-Poly1305, ten sam handshake Noise IK. Cała kryptografia pozostaje niezmieniona i jest również weryfikowana. Co zmienia AmneziaWG, to warstwa transportowa: nagłówki pakietów, rozmiary pakietów i wzory czasowe.

Pomyśl o tym w ten sposób. WireGuard jest jak kurier, który zawsze nosi ten sam mundur — szybki, niezawodny i wydajny. Ale każdy, kto obserwuje drogę, uczy się rozpoznawać ten mundur i może zatrzymać kuriera na każdym punkcie kontrolnym. AmneziaWG to ten sam kurier, który przewozi te same paczki, ale zmienia swój mundur na każdym punkcie kontrolnym. Ta sama osoba, ten sam ładunek, całkowicie 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 pomogło przez jakiś czas, ale systemy DPI się dostosowały. AmneziaWG 2.0, wydany pod koniec 2025 roku, randomizuje wszystko: nagłówki zmieniają się z pakietu na pakiet, wypełnienie różni się z wiadomości na wiadomość, a pakiety zastępcze naśladują inne protokoły przed rozpoczęciem rzeczywistego handshake. Nie ma uniwersalnego podpisu do wykrywania, ponieważ każdy serwer AmneziaWG 2.0 generuje swój własny unikalny zestaw parametrów. Każdy serwer mówi swoim własnym dialektem.

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

Jak dokładnie AmneziaWG szyfruje swój ruch? Przyjrzyjmy się czterem poziomom obfuskacji, które sprawiają, że DPI jest ślepe — i dlaczego dodają prawie żadnych kosztów prędkości.


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

AmneziaWG 2.0 wykorzystuje cztery poziomy obfuskacji, które współdziałają. Każdy z nich celuje w 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 mieć dowolną wartość od 234567 do 345678. Nagłówek odpowiedzi (H2) może wynosić od 3456789 do 4567890. Te zakresy nigdy się nie pokrywają — protokół nadal musi wewnętrznie rozróżniać typy pakietów — ale dla zewnętrznego obserwatora nie ma jednego wartości nagłówka, na którą można się skupić. Każdy pakiet wygląda inaczej niż poprzedni.

Losowe wypełnienie (S1–S4)

Pakiet inicjacyjny WireGuard zawsze ma dokładnie 148 bajtów. Jego odpowiedź zawsze ma 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ą nowe w wersji 2.0 — a S4 jest najważniejszym dodatkiem, ponieważ wpływa na każdy pojedynczy pakiet danych, co znacznie utrudnia analizę ruchu na poziomie sesji.

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

Niestandardowy podpis protokołu (I1–I5)

Przed rozpoczęciem rzeczywistego handshake klient AmneziaWG wysyła do pięciu pakietów zastępczych, które naśladują inne protokoły — QUIC, DNS, SIP lub niestandardowe wzory bajtów. Serwer całkowicie ignoruje te pakiety. Po prostu czeka na prawdziwy handshake.

  • Prosta konfiguracja: Wysyła 128 losowych bajtów <r 128>.
  • Skomplikowana konfiguracja: Wysyła bajty, które wyglądają jak inicjowanie połączenia QUIC (<b 0xc000000001><r 64><t>), z czasem Unix.

Dla systemu DPI obserwującego rozpoczęcie sesji pierwsze pakiety wyglądają jak zwykły ruch internetowy.

Śmieciowe pakiety (Jc, Jmin, Jmax)

Po pakietach zastępczych klient wysyła konfigurowalną liczbę śmieciowych pakietów — czysty hałas o losowych rozmiarach od Jmin do Jmax. Te pakiety rozmywają profil czasowy i rozmiarowy rozpoczęcia sesji, co utrudnia systemom DPI zidentyfikowanie, gdzie zaczyna się prawdziwy handshake.

Pytanie o prędkość

W internecie krąży liczba: AmneziaWG ma 65% narzutu. Ta liczba jest rzeczywista, ale odnosi się do implementacji użytkownika Go — a nie do modułu jądra. Skrypt instalacyjny społeczności użyty 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 nieskrępowanej sieci zobaczysz około 95 Mbps przez WireGuard i 92 Mbps przez AmneziaWG 2.0. W sieci z cenzurą porównanie to 92 Mbps w porównaniu do zera.

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

ParametrWygenerowany zakresPrzykładowa wartość
Jc (liczba śmieciowych pakietów)4–86
Jmin (min. rozmiar śmieci)40–8955
Jmax (max. rozmiar śmieci)Jmin+100 do Jmin+500380
S1 (wypełnienie inicjacyjne)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 inicjacyjnego)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&gt;

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

Teraz, gdy wiesz, jak działa obfuskacja, przyjrzyjmy się, jak AmneziaWG porównuje się do alternatyw, które możesz rozważać.


AmneziaWG vs Alternatywy — Szybki przewodnik decyzyjny

VPN
Jeśli oceniasz protokoły VPN dla cenzurowanego środowiska, prawdopodobnie napotkałeś kilka opcji. Oto jak porównują się 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 rzeczywistych warunkach)~25%~8%~10%
Pełny tunel VPNTakTakTakNie (proxy)Nie (proxy)
Działa w jądrzeTakTak (DKMS)NieNieNie
Kompleksowość 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 przeszkadzają ci proxy? VLESS+Reality to najsilniejsza opcja obfuskacji, ale to nie jest pełny tunel.
  • Chcesz zarówno prędkości, jak i pełnego tunelu z obfuskacją? AmneziaWG 2.0 to jedyna opcja, która oferuje 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 przełączania, ale AmneziaWG będzie zauważalnie szybszy.

Ten artykuł koncentruje 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 AmneziaWG jest odpowiednim wyborem dla twojej sytuacji, oto co potrzebujesz przed rozpoczęciem wdrożenia.


Co potrzebujesz przed rozpoczęciem

Przed uruchomieniem instalatora upewnij się, że twoje środowisko spełnia te wymagania:

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

⚠️ Ostrzeżenie: Kontenery LXC nie są wspierane. Jeśli twój VPS używa wirtualizacji LXC, budowa modułu jądra DKMS zakończy się niepowodzeniem. Musisz używać KVM lub bare-metal. Sprawdź z dostawcą, jeśli nie jesteś pewien.

⚠️ Ostrzeżenie: Jeśli twoje SSH działa na niestandardowym porcie (cokolwiek innego niż 22), musisz otworzyć go w UFW przed uruchomieniem instalatora:
sudo ufw allow YOUR_PORT/tcp
Zamień YOUR_PORT na swój rzeczywisty port SSH. Instalator zawiera UFW z domyślną polityką — jeśli twój port SSH nie jest dozwolony, natychmiast zostaniesz zablokowany.

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

Gdy twój VPS jest gotowy, a wymagania potwierdzone, przejdźmy do wdrożenia AmneziaWG 2.0 za pomocą skryptu instalacyjnego społeczności — najszybszej i najbardziej przejrzystej metody.


Metoda 1 — Wdrażanie za pomocą instalatora CLI (Zalecane)

To jest główna metoda instalacji. Pobierzesz skrypt instalacyjny przypisany do wersji, 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 zajmuje się wszystkim: instalacją pakietów, kompilacją modułu jądra, konfiguracją zapory, generowaniem parametrów i uruchamianiem usługi.

6.1 — Połącz się z VPS za pomocą SSH

Otwórz terminal i połącz się z serwerem:
ssh root@<SERVER_IP>
Zamień <SERVER_IP> na rzeczywisty publiczny adres IP twojego VPS. Jeśli twój dostawca dał ci użytkownika nie-root, zaloguj się tym użytkownikiem, a następnie podnieś uprawnienia:
ssh <username>@<SERVER_IP>
sudo -i

Powinieneś zobaczyć baner powitalny Ubuntu 24.04, a następnie monit 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 instalacyjny, nadaj mu uprawnienia do wykonywania i uruchom go:

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

URL jest przypisany do wersji v5.8.1 — najnowszego wydania z kwietnia 2026 roku. To bezpieczeństwo łańcucha dostaw: zapewnia, że pobrany skrypt odpowiada przetestowanej wersji, nawet jeśli repozytorium zostało zaktualizowane od tego czasu.

Instalator zaczyna od sprawdzenia twojego 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 jakiekolwiek sprawdzenie zakończy się niepowodzeniem, instalator zatrzyma się i powie ci dlaczego. Napraw problem i uruchom polecenie ponownie.

6.3 — Przejdź przez monity instalatora

Instalator to maszyna stanów ośmiokrokowa z obsługą wznowienia po restarcie. Zapisuje swoje postępy w /root/awg/awgsetup_cfg.init, więc jeśli serwer się zrestartuje, wystarczy ponownie uruchomić to samo polecenie, a on wznowi tam, gdzie przerwał.

Krok 0: Inicjalizacja — Instalator sprawdza twój system, typ wirtualizacji, RAM i miejsce na dysku. Tworzy katalog roboczy /root/awg/ i ustawia plik blokady, aby zapobiec równoległym 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 Linuxa, UFW, Fail2Ban, narzędzia do generowania kodów QR i inne zależności.

📝 Uwaga: Instalator usuwa również kilka usług w tle, które zużywają zasoby na minimalnych instancjach VPS: snapd, modemmanager, networkd-dispatcher, unattended-upgrades, packagekit, lxd-agent-loader i udisks2. To jest zamierzone i bezpieczne dla minimalnych węzłów VPN, ale może zepsuć ogólne środowiska.

Gdy Krok 1 zostanie zakończony, instalator poprosi o restart:

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

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

sudo bash ./install_amneziawg_en.sh

Skrypt odczytuje swój zapisany stan i kontynuuje do Kroku 2, nie zadając ponownie żadnych pytań.

Krok 2: Budowa modułu jądra DKMS — Instalator kompiluje moduł jądra AmneziaWG w odniesieniu do twojego aktualnego jądra i rejestruje go w DKMS do automatycznej przebudowy 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.

Proszony 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 nie jest tracone.

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

sudo bash ./install_amneziawg_en.sh

Krok 3: Weryfikacja modułu po restarcie — Skrypt weryfikuje, czy moduł jądra jest załadowany (lsmod | grep amneziawg). Jeśli budowa DKMS nie powiodła się z jakiegokolwiek powodu, przechodzi do implementacji użytkownika Go z ostrzeżeniem o wyższym narzucie.

Krok 4: Konfiguracja zapory — UFW jest włączony z domyślną polityką odrzucania przychodzących. Instalator dodaje regułę ograniczającą SSH na porcie 22, otwiera twój 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). Te są również przypisane do wersji v5.8.1.

Krok 6: Interaktywna konfiguracja — Instalator teraz zadaje cztery pytania:

  • Port UDP (domyślny: 39743, zakres 1024–65535). Domyślny to losowy wysoki port — trzymaj go, chyba że twój ISP jest znany z blokowania wysokich portów UDP.
  • Podsieć tunelu (domyślny: 10.9.9.1/24). To jest twoja wewnętrzna sieć VPN. Serwer otrzymuje .1, klienci otrzymują .2 do .254, wspierając do 253 klientów.
  • Wyłącz IPv6 (domyślny: Y). Zalecane — wyłączenie IPv6 zapobiega wyciekaniu ruchu poza tunel na trasach IPv6.
  • Tryb routingu: Wybierz 1 dla całego ruchu, 2 dla Amnezia List + DNS (zalecane) lub 3 dla niestandardowych sieci. Tryb 2 kieruje tylko zablokowane publiczne zakresy IP i DNS przez VPN, utrzymując dostęp do twojej lokalnej sieci szybkim i bezpośrednim.

💡 Wskazówka: MTU jest domyślnie ustawione na 1280. To jest minimalne MTU IPv6 i jest krytyczne dla sieci mobilnych i komórkowych. iOS jest surowe w kwestii Odkrywania MTU ścieżki, a sieci komórkowe często mają efektywne MTU poniżej domyślnego WireGuard 1420. Pozostaw 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 generuje wszystkie parametry obfuskacji AmneziaWG 2.0 automatycznie. Nie musisz ich dotykać. Każdy serwer otrzymuje unikalny zestaw wartości — nie ma uniwersalnego odcisku palca, który systemy DPI mogą wykryć.

6.4 — Zarządzanie klientami po instalacji

Skrypt zarządzania w /root/awg/manage_amneziawg.sh obsługuje wszystkie operacje cyklu życia klientów. 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 na gorąco przeładowywana — nie ma potrzeby restartowania usługi.

Dodaj tymczasowego klienta z automatycznym wygasaniem:

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

Zadanie cron sprawdza co pięć minut i automatycznie usuwa klienta, gdy wygasa. Konfiguracja, klucze i wpis serwera są wszystkie czyszczone.

Wyświetl 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

To 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 dla każdego 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 skompresowany archiwum w /root/awg/backups/, zawierające konfigurację serwera, konfiguracje klientów, klucze i dane o wygasaniu.

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

6.5 — Sprawdź, czy serwer działa

Przejdź przez te kontrole, aby potwierdzić, że wszystko działa:

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

Zweryfikuj status AmneziaWG i parametry:

sudo awg show awg0

Zweryfikuj zaporę:

sudo ufw status verbose

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

Zweryfikuj 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:

Zweryfikuj moduł jądra DKMS:

dkms status

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

Jeśli wszystkie pięć kontroli zakończy się pomyślnie, twój serwer AmneziaWG 2.0 działa i jest gotowy do przyjmowania połączeń.

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


Metoda 2 — Wdrażanie za pomocą aplikacji AmneziaVPN (Alternatywa)

Aplikacja desktopowa AmneziaVPN może automatycznie zainstalować AmneziaWG na twoim serwerze za pomocą SSH. Używa tego samego podstawowego skryptu instalacyjnego co metoda CLI, ale opakowuje wszystko w interfejs prowadzący. To jest idealne, jeśli chcesz mieć doświadczenie instalacji bez wysiłku.

  1. Pobierz AmneziaVPN z amnezia.org/en/downloads. Jest dostępna dla Windows, macOS, Linux, Android i iOS.
  2. Otwórz aplikację i kliknij ➕ (ikona plusa) lub Rozpocznij.
  3. Wybierz „VPN hostowany samodzielnie” z przedstawionych opcji.
  4. Wprowadź dane logowania do serwera:
    • Adres IP serwera (i port, jeśli SSH nie jest na 22, np. 203.0.113.10:2221)
    • Nazwa użytkownika SSH (np. root)
    • Hasło lub prywatny klucz SSH
  5. Wybierz typ instalacji:
    • Automatyczna — instaluje tylko AmneziaWG (zalecane)
    • Ręczna — wybierz konkretny protokół z listy
  6. Kliknij „Zainstaluj” — aplikacja łączy się z twoim serwerem za pomocą SSH i uruchamia instalację automatycznie. Zobaczysz wskaźnik postępu.
  7. Po instalacji, aplikacja tworzy gotowy do użycia 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 zaleca 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 twój serwer ma już zainstalowane oprogramowanie Amnezia, kliknij „Pomiń konfigurację” podczas tworzenia połączenia, a następnie użyj „Sprawdź serwer pod kątem wcześniej zainstalowanych usług Amnezia” w zakładce Zarządzanie.

Oto jak obie metody się porównują:

AspektInstalator CLIAplikacja AmneziaVPN
KontrolaPełna — widzisz każdy krok, możesz dostosowaćOgraniczona — aplikacja obsługuje wszystko
WidocznośćPrzejrzysta — wszystkie polecenia widoczneNieprzejrzysta — działa w tle
ElastycznośćNiższe routowanie, punkty końcowe, flagiUżywa tylko domyślnych
Łatwość użyciaWymaga znajomości SSHBrak pracy w terminalu
ZarządzaniePełny zestaw manage_amneziawg.shZarządzanie tylko przez aplikację
Najlepsze dlaNiezarządzany VPS, rozwiązywanie problemówSzybka konfiguracja, prowadzone doświadczenie

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


Łączenie pierwszego klienta

Po instalacji masz trzy sposoby na zaimportowanie konfiguracji klienta do aplikacji Amnezia VPN. Wybierz ten, który pasuje do twojego urządzenia.

Metoda A: Kod QR (Mobilny)

Instalator wygenerował kod QR w /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 swoim ekranie. Na swoim telefonie otwórz aplikację Amnezia VPN, dotknij „Dodaj VPN”„Skanuj kod QR”, a następnie skieruj aparat na kod QR na swoim ekranie. Połączenie zostanie automatycznie zaimportowane.

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

Wyświetl skompresowany URI na swoim serwerze:

cat /root/awg/my_phone.vpnuri

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

URI to skompresowana wersja zlib, zakodowana w Base64, 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 klienta AmneziaWG dla Windows lub aplikację AmneziaVPN, kliknij „Importuj tunel(e) z pliku” i wybierz plik .conf.

Zweryfikuj połączenie

Po połączeniu zweryfikuj, czy tunel kieruje twój ruch przez serwer:
curl ifconfig.me
Wynik powinien pokazywać publiczny adres IP twojego serwera, a nie lokalny: 203.0.113.1

Aby uzyskać więcej szczegółów, w tym geograficzną lokalizację 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 działa z konfiguracjami AmneziaWG 2.0. Musisz używać 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 udany, ale brak ruchu” w sieciach mobilnych.

Gratulacje! Twój tunel VPN działa.


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ą na poziomie WireGuard. Cicha śmierć pakietów, która zabiła twoje połączenie WireGuard, nie jest już problemem — twój ruch wygląda jak nic, co system DPI może wiarygodnie zidentyfikować.

Oto najprzydatniejsze rzeczy, które możesz zrobić następnie:

  1. Dodaj klientów dla swojej rodziny lub zespołu — użyj skryptu zarządzania do generowania konfiguracji dla każdego urządzenia, które potrzebuje dostępu.
  2. Skonfiguruj split tunneling, jeśli nie potrzebujesz routingu pełnotunelowego — utrzymuje lokalny ruch szybkim i zmniejsza przepustowość na twoim VPS.
  3. Utwórz kopię zapasową swoich konfiguracji — uruchom polecenie kopii zapasowej i przechowuj archiwum w bezpiecznym miejscu. Jeśli twój serwer kiedykolwiek będzie wymagał odbudowy, to uratuje cię przed rozpoczęciem od nowa.

Skonfiguruj split tunneling, jeśli nie potrzebujesz, aby cały ruch był kierowany przez VPN. To jest szczególnie przydatne w krajach z częściową cenzurą — kieruj tylko zablokowane strony przez tunel i utrzymuj lokalny ruch bezpośrednim:

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 preferujesz inne resolver’y:

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 sekundy utrzymuje sesję UDP przez NAT — obniżenie jej do 25 może pomóc w sieciach, które szybko zrzucają bezczynne sesje UDP:

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

Zainstaluj na swoim routerze, aby uzyskać pokrycie całej sieci. AmneziaWG jest wspierane na routerach Keenetic za pomocą AWG Manager oraz na routerach ASUS działających na Asuswrt-Merlin za pomocą AmneziaWG dla Merlina.

Utwórz kopię zapasową swojej 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 z nowym adresem IP serwera.

Dla głębszej dokumentacji oficjalne dokumenty Amnezia znajdują się na docs.amnezia.org, a społeczność jest aktywna na Telegramie.

Podsumowanie

Po przejściu przez pełną konfigurację, co wyróżnia AmneziaWG 2.0, to nie tylko to, że działa — ale dlaczego działa niezawodnie tam, gdzie inni zawodzą. Zachowując sprawdzony rdzeń kryptograficzny WireGuard, jednocześnie fundamentalnie zmieniając, jak ruch wygląda w sieci, omija dokładne słabości, które wykorzystuje Głęboka Inspekcja Pakietów. Rezultatem jest konfiguracja, która w praktyce wydaje się tak 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 został stworzony, aby przetrwać rzeczywiste blokady.

Jeśli szukasz niezawodnego VPS do hostowania swojego serwera AmneziaWG — lub potrzebujesz zwiększyć liczbę punktów końcowych dla członków zespołu — AvaHost oferuje wirtualizację KVM z pełnym dostępem root, pamięcią NVMe i wsparciem dla Ubuntu 24.04, które jest wymagane w tej konfiguracji. Ich infrastruktura jest celowo zbudowana do rodzaju samodzielnych wdrożeń, które obejmuje ten przewodnik.