Coraz więcej osób korzysta z własnej sieci VPN zamiast polegać na płatnych, gotowych usługach: jest to tańsze, zapewnia lepszą prywatność i daje pełną kontrolę nad serwerem. Jedną z najskuteczniejszych opcji dla regionów z agresywnym blokowaniem sieci jest AmneziaWG, protokół opracowany przez projekt Amnezia na bazie WireGuard.
Klasyczny WireGuard jest szybki i niezawodny, ale ma stałą strukturę pakietów i przewidywalny mechanizm uzgadniania, który systemy DPI (Deep Packet Inspection) mogą niezawodnie identyfikować i blokować. AmneziaWG rozwiązuje ten problem: dodaje niepotrzebne pakiety do zwykłego połączenia WireGuard, losowo modyfikuje nagłówki i zmienia rozmiar pól uzgadniania — dzięki czemu charakterystyczny podpis WireGuarda znika, a ruch nie wyróżnia się już na tle zwykłego ruchu UDP.
Już korzystasz z klasycznego tunelu i zastanawiasz się, czy warto go zmienić? Porównaj to z prostą konfiguracją OpenVPN/PPTP w artykule „ Konfiguracja serwera VPN w systemie Linux: PPTP czy OpenVPN?” , albo z czystym WireGuard (bez zaciemniania) w artykule „Jak skonfigurować Wireguard VPN na serwerze”.
Ten poradnik przedstawia konfigurację serwera AmneziaWG ręcznie, bez Dockera ani panelu webowego – co zajmuje najmniej miejsca na samym serwerze VPS, a konfiguracja odbywa się w całości z poziomu wiersza poleceń. To najlżejsza opcja, która dobrze sprawdza się na budżetowych serwerach VPS, ponieważ nie wymaga graficznego interfejsu użytkownika, bazy danych ani odwrotnego proxy. Poniższy przykładowy serwer używa zastępczego adresu IP – zastąp go adresem swojego serwera VPS, gdziekolwiek się pojawi.
Czego potrzebujesz: VPS z Ubuntu 22.04/24.04 lub Debian 11/12, dostępem do roota i adresem IP swojego VPS. Nazwa domeny nie jest wymagana — AmneziaWG nie używa certyfikatów, więc nie ma potrzeby odnawiania ani oznaczania przez DPI niczego jako uzgadniania TLS.
Nie masz jeszcze serwera? Zobacz, jak zamówić serwer.
Łączenie się z serwerem
Windows (PuTTY)
Otwórz PuTTY, wpisz adres IP swojego VPS w polu Nazwa hosta, ustaw port na 22 i zaloguj się jako root, używając hasła wysłanego w wiadomości e-mail od dostawcy VPS.
Adres IP serwera: Twój adres IP
zaloguj się jako: root
Hasło: Twoje hasło
1. Otwórz PuTTY, wpisz adres IP swojego VPS w polu Nazwa hosta.
2. Ustaw port na 22.
3. Zaloguj się jako root.
4. Użyj hasła, które otrzymałeś e-mailem od dostawcy VPS.
Wynik powinien być następujący:
Szczegółowy opis łączenia się przez PuTTY/SSH znajdziesz w artykule Jak połączyć się z serwerem Linux przez SSH
Linux / macOS (terminal)
ssh root@YOUR_SERVER_IP
Wszystkie poniższe polecenia są uruchamiane na serwerze, w tej samej sesji SSH — obejmuje to sekcje od 2 do 5, a także kontrole po stronie serwera w sekcji 9. Sekcje 6–8 (instalowanie i konfigurowanie klienta VPN) są natomiast wykonywane na Twoim urządzeniu z systemem Windows/macOS/Linux, ponieważ to na nim musi działać sieć VPN. Każda z tych sekcji wyraźnie określa, które wiersze (jeśli w ogóle jakieś) nadal mają kontakt z serwerem.
Przygotowanie serwera
Zaktualizuj system
Przed zainstalowaniem czegokolwiek odśwież listę pakietów i uaktualnij zainstalowane pakiety:
apt update -y && apt upgrade -y
Jeśli spowoduje to aktualizację jądra, należy zrestartować komputer przed skompilowaniem modułu jądra AmneziaWG zgodnie z sekcją 3. W przeciwnym razie DKMS może skompilować z niewłaściwymi nagłówkami jądra, co uniemożliwi załadowanie modułu. (Aby odświeżyć wiedzę na temat apt i działania menedżerów pakietów Linuksa, zapoznaj się z artykułem Menedżery pakietów Linuksa ). Sprawdź:
cat /var/run/reboot-required
Włącz przekierowywanie IP
To ustawienie pozwala serwerowi przekazywać pakiety klientów do Internetu — w przeciwnym razie tunel zostanie utworzony, ale żaden ruch nie będzie przez niego przechodził.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
Pierwsze polecenie tworzy dedykowany plik konfiguracyjny, drugie stosuje go bez ponownego uruchamiania serwera.
Skonfiguruj zaporę sieciową (UFW)
Więcej informacji na temat reguł UFW znajdziesz w artykule Konfigurowanie zapory sieciowej w systemie Linux
Otwórz dwa porty, których będziesz potrzebować: 22/tcp dla SSH (pomiń tę regułę, bo ryzykujesz utratą dostępu do serwera) i 42666/udp, port, na którym AmneziaWG będzie nasłuchiwać.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
Obie reguły powinny zostać wyświetlone jako ALLOW w wynikach statusu ufw.
Instalowanie AmneziaWG
Debian nie obsługuje bezpośrednio pakietów PPA w stylu Ubuntu, więc repozytorium należy dodać ręcznie, a nie za pomocą polecenia add-apt-repository. Działa to tak samo w Ubuntu.
Dodaj repozytorium ręcznie
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Dodaj klucz podpisu GPG
Użyj zmienionego pliku kluczy zamiast przestarzałego polecenia apt-key i pobierz prawdziwy klucz podpisu PPA (odcisk palca 75C9DD72C799870E310542E24166F2C257290828):
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Zaktualizuj i zainstaluj
apt update
apt install -y amneziawg
Sprawdź, czy moduł został załadowany
modprobe amneziawg
lsmod | grep amnezia
Generowanie konfiguracji serwera i klienta
Zainstaluj narzędzia pomocnicze
Zainstaluj zależność kodu QR, a następnie utwórz dedykowany katalog roboczy i pobierz do niego skrypt community config-generator:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Jeśli python3-qrcode nie jest dostępny w repozytoriach Twojej dystrybucji, skorzystaj z polecenia pip3 install qrcode --break-system-packages (ta flaga jest wymagana w Debianie 12+/Ubuntu 24.04, które domyślnie blokują niezarządzane instalacje pip). Nie uruchamiaj obu instalacji — wybierz jedną.
Wygeneruj konfigurację serwera
Utwórz plik /etc/amnezia/amneziawg/awg0.conf. Możesz pozostawić domyślne wartości wewnętrznej podsieci tunelu i portu UDP lub ustawić własne:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
Flaga -i ustawia wewnętrzny adres sieciowy i maskę tunelu; -p ustawia port UDP serwera (ten sam, który został otwarty w kroku 2.3).
Utwórz szablon konfiguracji klienta
python3 awgcfg.py --create
Zapisuje szablon w tym samym folderze, na podstawie którego tworzone są konfiguracje poszczególnych klientów — zawiera on już klucz publiczny serwera, jego adres IP i parametry zaciemniania (Jc, Jmin, Jmax, S1, S2, H1–H4), które odróżniają AmneziaWG od zwykłego WireGuard.
Dodaj klientów
Utwórz jeden wpis dla każdego urządzenia — nazwa może być dowolna, np. nazwa urządzenia:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Generuj pliki klientów i kody QR
python3 awgcfg.py -c -q
Folder ~/awg będzie teraz zawierał pliki takie jak laptop.conf i phone.conf, a także odpowiadające im kody QR w formacie PNG, które można zeskanować bezpośrednio do aplikacji mobilnej.
Folder ~/awg będzie teraz zawierał pliki takie jak laptop.conf i phone.conf, a także odpowiadające im kody QR w formacie PNG, które można zeskanować bezpośrednio do aplikacji mobilnej.
Uruchamianie usługi i włączanie automatycznego uruchamiania
Uruchom interfejs awg0 i włącz jego automatyczne uruchamianie po ponownym uruchomieniu:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
Status powinien wskazywać aktywny (wyjście) z jednostką włączoną podczas rozruchu. Jeśli konsola wydaje się „zawieszać” i wyświetlać logi, naciśnij Q, aby wyjść.
Sprawdź listę aktywnych węzłów i ruch między węzłami za pomocą:
awg show
Łączenie z systemu Windows
Wszystko w tej sekcji dzieje się na komputerze z systemem Windows, a nie przez SSH — klient VPN musi być zainstalowany na urządzeniu, które będzie faktycznie korzystać z tunelu. Jedynym krokiem związanym z serwerem jest pobranie polecenia SCP w wersji 6.2, a nawet to polecenie jest wpisywane na komputerze, pobierając plik wygenerowany przez serwer w sekcji 4.
Zainstaluj klienta
AmneziaWG ma dedykowaną aplikację dla systemu Windows — jej interfejs odzwierciedla standardowego klienta WireGuard, ale rozpoznaje parametry zaciemniania. Pobierz instalator z oficjalnego repozytorium projektu:
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
Powyższy link prowadzi do strony z aktualizacjami klienta Windows – pobierz stamtąd najnowszy plik .msi/.exe. To strona, którą można otworzyć w przeglądarce, a nie polecenie do wklejenia w terminalu.
Uruchom instalator i postępuj zgodnie z instrukcjami kreatora instalacji. Nie ma potrzeby zmiany ustawień domyślnych.
Importuj konfigurację
Skopiuj plik konfiguracyjny klienta z serwera na swój komputer — najłatwiejszym sposobem jest scp, uruchom go w programie PowerShell na swoim komputerze, a nie na serwerze:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
W aplikacji AmneziaWG kliknij „Importuj tunele z pliku”, wybierz laptop.conf i włącz przełącznik obok nowego tunelu.
Łączenie z macOS
Obsługiwane są dwie opcje:
- AmneziaWG (Mac App Store): lekki klient, działający w systemie macOS 12 i nowszych. Wyszukaj „AmneziaWG” w App Store, zainstaluj, a następnie użyj opcji „Importuj tunele z pliku” i wybierz plik .conf — ten sam schemat działania, co w przypadku klienta Windows.
- AmneziaVPN (pełna aplikacja, macOS 14+): pobierz plik .pkg z github.com/amnezia-vpn/amnezia-client/releases/latest, jeśli wolisz korzystać z pełnej wersji aplikacji Amnezia zamiast lekkiego klienta opartego wyłącznie na AmneziaWG.
W razie potrzeby najpierw skopiuj konfigurację klienta, tak samo jak w kroku 6.2:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Łączenie z Linuksa
Na komputerze stacjonarnym lub laptopie z systemem Linux masz dwie opcje:
- GUI: zainstaluj pełną wersję klienta stacjonarnego AmneziaVPN z github.com/amnezia-vpn/amnezia-client/releases, a następnie zaimportuj plik .conf w taki sam sposób, jak w systemach Windows/macOS.
- CLI, używające tego samego amneziawg-tools, co na serwerze (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
Uruchom ten kod, aby się rozłączyć.
awg-quick down awg0
Aby tunel uruchamiał się automatycznie przy logowaniu, włącz go jako usługę:
systemctl enable --now awg-quick@awg0
Weryfikacja połączenia
Po aktywowaniu tunelu z sekcji 6, 7 lub 8, wróć do swojego urządzenia (nie do sesji SSH) i otwórz w przeglądarce dowolne narzędzie sprawdzające „Jaki jest mój adres IP” – wyświetlony adres powinien odpowiadać adresowi IP Twojego serwera VPS. Aby zweryfikować z poziomu sesji SSH, uruchom polecenie awg show na serwerze i upewnij się, że klient wyświetla niedawne uzgadnianie i ruch różny od zera.
Numer referencyjny:
|
Pole |
Wartość: |
|
Adres |
YOUR_TUNNEL_IP (adres klienta wewnątrz tunelu, np. 10.10.8.2/32 — przypisany automatycznie podczas dodawania klienta w kroku 4.4) |
|
Punkt końcowy |
YOUR_SERVER_IP:42666 (Zewnętrzny adres IP serwera i port UDP, do którego łączy się klient.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
liczba i rozmiar pakietów „śmieciowych” wysyłanych przed uzgadnianiem — mogą się różnić między serwerem i klientem bez zrywania połączenia |
|
S1/S2 |
rozmiar pól wypełnienia uzgadniania — musi być zgodny bajt po bajcie między serwerem a każdym klientem |
|
H1–H4 |
nagłówki pakietów maskujące protokół jako zwykły ruch — muszą również dokładnie do siebie pasować i muszą się od siebie różnić |
Tylko S1/S2 i H1–H4 muszą być identyczne po obu stronach tunelu; Jc, Jmin i Jmax dotyczą wyłącznie tego, w jaki sposób każda strona wypełnia swój własny, niepotrzebny ruch wychodzący, więc wartości klienta i serwera mogą się zasadnie różnić, jak ma to miejsce w przykładzie powyżej.
Wniosek
Postępując zgodnie z tym przewodnikiem, Twój VPS uruchomi własny serwer AmneziaWG: protokół zgodny z WireGuardem z maskowaniem ruchu, który jest znacznie trudniejszy do odróżnienia dla systemów DPI od zwykłego ruchu UDP niż zwykły WireGuard. Usługa działa jako jednostka systemd awg-quick@awg0 i przetrwa restart serwera bez konieczności podejmowania jakichkolwiek działań z Twojej strony.
Wynikowe pliki .conf i kody QR w ~/awg działają nie tylko z klientem Windows, ale można je również zaimportować do aplikacji AmneziaWG lub Amnezia na systemy Android, iOS, macOS i Linux, a także do routerów Keenetic i OpenWrt.
Możesz dodać nowych klientów w dowolnym momencie, powtarzając kroki 4.4–4.5 (python3 awgcfg.py -a "name", następnie awgcfg.py -c -q) i ponownie uruchamiając interfejs za pomocą systemctl restart [email protected].
Kilka nawyków, które warto zachować, gdy serwer już działa:
- Utrzymuj system w stanie zaktualizowanym. Regularnie uruchamiaj ponownie polecenia apt update -y i apt upgrade -y oraz restartuj system po aktualizacji jądra, aby DKMS odbudował moduł amneziawg zgodnie z nowym jądrem.
- Utwórz kopię zapasową ~/awg. Zawiera ona klucz prywatny każdego klienta oraz parę kluczy serwera w pliku awg0.conf; jej utrata oznacza konieczność ponownego wygenerowania konfiguracji dla każdego urządzenia.
- Natychmiast cofnij utracone urządzenia. Usuń odpowiedni blok [Peer] z pliku /etc/amnezia/amneziawg/awg0.conf i uruchom systemctl restart. [email chroniony].
Jeżeli nie uda się nawiązać połączenia, sprawdź kolejno:
- status usługi (systemctl status [email chroniony])
- reguły zapory (status ufw — port 42666/udp musi być otwarty)
- status DKMS/modułu, jeśli interfejs w ogóle się nie uruchomi (status dkms, lsmod | grep amnezia)
- lista aktywnych równorzędnych użytkowników na serwerze (pokaz awg)
- że konfiguracja klienta wskazuje na poprawny adres IP serwera zewnętrznego
Porównujesz AmneziaWG z innymi opcjami przed podjęciem decyzji? Zobacz: Konfiguracja serwera VPN w systemie Linux: PPTP czy OpenVPN? oraz Jak skonfigurować Wireguard VPN na serwerze . Jeśli potrzebujesz tylko prostego serwera proxy zamiast pełnego tunelu VPN, konfiguracja 3proxy w systemie CentOS/ArchLinux jest lżejszą alternatywą. Informacje na temat ogólnego wzmacniania serwera po uruchomieniu sieci VPN można znaleźć w artykule: Użytkownicy systemu Linux: Zarządzanie i uprawnienia.