Baza wiedzy Proste instrukcje dotyczące pracy z usługą Profitserver
Główny Baza wiedzy Podręcznik wdrażania serwera AmneziaWG

Podręcznik wdrażania serwera AmneziaWG


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.  

Domyślne okno konfiguracji PuTTY, przed wprowadzeniem jakichkolwiek danych połączenia.

2. Ustaw port na 22. 

Sesja została uzupełniona adresem IP VPS i portem 22, wybrano zapisaną sesję „Mój VPS” i można kliknąć Otwórz.

3. Zaloguj się jako root. 

Nowe okno terminala PuTTY otwierające sesję SSH i monitujące o podanie nazwy użytkownika.

4. Użyj hasła, które otrzymałeś e-mailem od dostawcy VPS.

Po wpisaniu root, PuTTY poprosi o podanie hasła konta.

Wynik powinien być następujący:

Pomyślne logowanie: baner z wiadomością dnia Debiana, po którym następuje monit powłoki roota (root@copywr:~#).

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
Aktualizacja Apt polega na pobraniu nowego pakietu jądra (linux-image-6.1.0-52-amd64) podczas aktualizacji systemu. Zakończenie odpowiedniej aktualizacji: initramfs zostaje zregenerowany, a odpowiednie usługi zostają ponownie uruchomione.

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.

sysctl --system stosuje każdy plik konfiguracyjny sysctl.d i potwierdza, że ​​net.ipv4.ip_forward = 1 jest teraz aktywny.

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.

Status Ufw potwierdza, że ​​protokoły 22/tcp i 42666/udp są dozwolone zarówno dla IPv4, jak i IPv6 przy aktywnej zaporze.

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

Dodaj repozytorium
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
Dane wyjściowe polecenia apt install -y amneziawg: DKMS buduje moduł jądra amneziawg na podstawie uruchomionego jądra i kończy instalację.

Sprawdź, czy moduł został załadowany

modprobe amneziawg
lsmod | grep amnezia
Modprobe amneziawg, a następnie lsmod, potwierdza, że ​​moduł amneziawg i jego zależności (curve25519, chacha20poly1305 itd.) są załadowane.

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ą.

Awgcfg.py to nieoficjalny skrypt społecznościowy (autorstwa użytkownika GitHub „remittor”), a nie oficjalne narzędzie projektu Amnezia. Powyższy adres URL wskazuje na surową zawartość Gista bez hasha rewizji, więc zawsze pobiera to, co autor ostatnio przesłał — cicha aktualizacja (lub usunięcie Gista) może bez ostrzeżenia zepsuć konfigurację. W miarę możliwości przypnij go do konkretnej wersji: otwórz historię rewizji Gista, skopiuj hash zatwierdzenia dla testowanej wersji i użyj URL formularza tego przewodnika. 

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).

Awgcfg.py --make tworzy plik /etc/amnezia/amneziawg/awg0.conf i wykrywa główny interfejs sieciowy serwera (ens3).

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.

Awgcfg.py --create zapisuje _defclient.config, szablon, na podstawie którego zostaną wygenerowane nowe konfiguracje klienta.

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"
Awgcfg.py -a rejestruje klientów „laptopa” i „telefonu”, każdemu przypisując własny tunelowy adres IP (10.10.8.2/32 i 10.10.8.3/32).

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.

Ten skrypt społecznościowy ma znaną wadę: jego uruchomienie może usunąć inne pliki .init/state, które mogłeś umieścić w tym samym folderze. Przechowuj katalog ~/awg wyłącznie na pliki AmneziaWG i utwórz kopię zapasową kluczy serwera (klucz prywatny [Interface] w pliku awg0.conf) w innym miejscu przed ponownym wygenerowaniem konfiguracji.
Zawartość wygenerowanego pliku laptop.conf: adres klienta, DNS, parametry zaciemniania i sekcja [Peer] wskazująca na serwer.

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.

Ten skrypt społecznościowy ma znaną wadę: jego uruchomienie może usunąć inne pliki .init/state, które mogłeś umieścić w tym samym folderze. Przechowuj katalog ~/awg wyłącznie na pliki AmneziaWG i utwórz kopię zapasową kluczy serwera (klucz prywatny [Interface] w pliku awg0.conf) w innym miejscu przed ponownym wygenerowaniem konfiguracji.

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ść.

Status Systemctl potwierdzający, że usługa awg-quick@awg0.service jest aktywna (wyłączona) i włączona, a polecenia konfiguracji ip/iptables interfejsu znajdują się w dzienniku.

Sprawdź listę aktywnych węzłów i ruch między węzłami za pomocą:

awg show
Program AWG wyświetla parametry zaciemniania interfejsu awg0 oraz jego dwóch skonfigurowanych urządzeń (laptopa i telefonu), z których każdy ma dozwolony adres IP.

Łą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:

Pusty wiersz poleceń programu Windows PowerShell na komputerze klienckim, gotowy do uruchomienia poniższego polecenia scp.
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

Wszystko tutaj dzieje się na Twoim Macu, a nie przez SSH. Poniższy wiersz „scp” jest wpisany w terminalu Maca, pobierając konfigurację wygenerowaną przez serwer w Sekcji 4 — nie działa on w ramach sesji SSH root na VPS.

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

Obie poniższe opcje działają na Twoim komputerze stacjonarnym/laptopie z systemem Linux, tzn. na osobnej sesji SSH (lub powłoce lokalnej) na tym komputerze — a nie na sesji SSH root na serwerze VPS z sekcji 1. Polecenia wyglądają identycznie jak te po stronie serwera, ponieważ po obu stronach używany jest ten sam pakiet amneziawg-tools. Jednak ich uruchomienie tutaj powoduje instalację i uruchomienie tunelu klienta na Twoim komputerze, a nie na serwerze.

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.

❮ Poprzedni artykuł Konfiguracja Hysteria2 i TUIC
Następny artykuł ❯ Przewodnik po rzeczywistości Xray VLESS: VPS, Windows, Mac, Android, iPhone

Zapytaj nas o VPS

Jesteśmy zawsze gotowi odpowiedzieć na Państwa pytania o każdej porze dnia i nocy.