WireGuard na Debianie 11 – jak skonfigurować szybki VPN

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
12 min czytania

1. Czym jest WireGuard i dlaczego jest szybki?

WireGuard to protokół VPN wbudowany w jądro Linuksa (od 5.6), wykorzystujący nowoczesną kryptografię (m.in. ChaCha20, Curve25519). Jego główne cechy:

  • wysoka wydajność – mała baza kodu, brak „historycznego balastu” jak w OpenVPN czy IPsec;
  • niska latencja – świetnie nadaje się do gier, VoIP i pracy zdalnej w czasie rzeczywistym;
  • prosta konfiguracja – pojedynczy plik konfiguracyjny per interfejs, minimum parametrów;
  • bezpieczeństwo – nowoczesne algorytmy, wymuszone klucze asymetryczne (jak SSH).

Na Debianie 11 WireGuard jest dostępny jako moduł jądra + narzędzia użytkownika (wireguard-tools).

2. Wymagania wstępne

Przed rozpoczęciem przygotuj:

  • serwer z Debian 11 (np. VPS w dowolnej chmurze),
  • dostęp root lub użytkownik z sudo,
  • publiczny adres IP (IPv4, a opcjonalnie IPv6),
  • podstawową znajomość pracy w terminalu.

Przyjmijmy następujące założenia (możesz je zmienić pod siebie):

  • interfejs WireGuardwg0;
  • sieć VPN (IPv4)10.0.0.0/24;
  • adres serwera w tunelu10.0.0.1;
  • port WireGuard51820/udp (domyślny i zalecany).

3. Instalacja WireGuard na Debianie 11

3.1 Aktualizacja systemu

Wykonaj aktualizację pakietów:

sudo apt update && sudo apt upgrade -y

3.2 Instalacja pakietów WireGuard

Na Debianie 11 zainstaluj pakiety:

sudo apt install -y wireguard wireguard-tools

wireguard-tools dostarcza m.in. polecenia wg i wg-quick używane do zarządzania tunelami.

4. Generowanie kluczy (serwer i klienci)

Każdy „uczestnik” VPN (serwer, laptop, telefon) musi mieć parę kluczy: prywatny + publiczny.

4.1 Klucze serwera

Utwórz katalog i wygeneruj klucze:

sudo mkdir -m 700 /etc/wireguard
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Sprawdź zawartość plików z kluczami:

cat server_private.key
cat server_public.key

Pliki powinny mieć uprawnienia tylko dla roota (umask 077 to wymusza).

4.2 Klucz klienta (przykład – laptop)

Wygeneruj parę kluczy dla pierwszego klienta (na serwerze):

cd /etc/wireguard
umask 077
wg genkey | tee client1_private.key | wg pubkey > client1_public.key

W analogiczny sposób wygenerujesz klucze dla kolejnych klientów (client2, phone itd.).

5. Konfiguracja serwera: /etc/wireguard/wg0.conf

Utwórz plik konfiguracyjny:

sudo nano /etc/wireguard/wg0.conf

Wklej szablon (podstaw swoją zawartość kluczy):

[Interface]
# Prywatny klucz serwera
PrivateKey = TU_WKLEJ_ZAWARTOSC_server_private.key
# Adres serwera w sieci VPN
Address = 10.0.0.1/24
# Port nasłuchiwania
ListenPort = 51820

# Włączenie routingu IPv4
PostUp = sysctl -w net.ipv4.ip_forward=1
PostDown = sysctl -w net.ipv4.ip_forward=0

# NAT (masquerade) dla wychodzącego ruchu VPN
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

Uwaga: zmień eth0 na nazwę swojej karty sieciowej (sprawdź ip a).

PostUp i PostDown uruchamiają się przy starcie/zatrzymaniu tunelu i włączają routing + NAT.

Jeśli korzystasz z UFW zamiast gołych iptables, reguły NAT możesz przenieść do UFW (opis w dalszej części).

Zabezpiecz plik konfiguracyjny:

sudo chmod 600 /etc/wireguard/wg0.conf

6. Włączenie routingu IP w systemie

Na stałe włącz routing IPv4 w systemie:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-sysctl.conf
sudo sysctl -p /etc/sysctl.d/99-sysctl.conf

W pliku wg0.conf mamy dodatkowo PostUp/PostDown, ale dobrą praktyką jest włączenie routingu także globalnie.

7. Zapora sieciowa (iptables / UFW)

7.1 Otworzenie portu WireGuard (iptables)

Jeśli używasz surowych iptables, otwórz port UDP 51820:

sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

Dodatkowo reguły NAT masz już w PostUp/PostDown w wg0.conf.

7.2 UFW – prostsza konfiguracja

Jeżeli masz UFW, wykonaj:

sudo apt install -y ufw
sudo ufw allow 51820/udp
sudo ufw enable

Reguły NAT można dodać w /etc/ufw/before.rules, ale prostym i popularnym rozwiązaniem jest pozostawienie NAT w PostUp/PostDown (jak wyżej).

8. Start i autostart WireGuard na Debianie 11

8.1 Ręczne uruchomienie tunelu

Włącz tunel:

sudo wg-quick up wg0

Potwierdź status interfejsu:

sudo wg

Wyłącz tunel:

sudo wg-quick down wg0

8.2 Autostart przy starcie systemu

Włącz usługę w systemd:

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Lub jednocześnie włącz i uruchom:

sudo systemctl enable --now wg-quick@wg0

To standardowy i niezawodny sposób na automatyczne uruchamianie WireGuard przy starcie systemu.

9. Konfiguracja klienta (laptop z Linuksem / Windows / macOS)

Konfiguracja klientów w WireGuardzie jest zawsze podobna – różni się tylko sposób „importu” pliku. Załóżmy, że chcesz, aby laptop miał adres VPN 10.0.0.2/32 i wysyłał cały ruch internetowy przez VPN (full tunnel).

9.1 Dodanie klienta do serwera

Otwórz i edytuj plik /etc/wireguard/wg0.conf:

sudo nano /etc/wireguard/wg0.conf

Dopisz sekcję peera z kluczem publicznym klienta:

[Peer]
# Laptop
PublicKey = TU_WKLEJ_ZAWARTOSC_client1_public.key
AllowedIPs = 10.0.0.2/32

Zapisz plik, a następnie przeładuj tunel:

sudo wg-quick down wg0
sudo wg-quick up wg0

Alternatywnie możesz dodać peer „na żywo” (zmiana nieprzetrwa restartu usługi bez edycji pliku):

sudo wg set wg0 peer TU_PUBLIC_KEY_CLIENTA allowed-ips 10.0.0.2/32

9.2 Plik konfiguracyjny klienta: wg0.conf (na laptopie)

Utwórz plik wg0.conf na kliencie z poniższą zawartością:

[Interface]
PrivateKey = TU_WKLEJ_ZAWARTOSC_client1_private.key
Address = 10.0.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = TU_WKLEJ_ZAWARTOSC_server_public.key
Endpoint = PUBLICZNY_IP_SERWERA:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Objaśnienia najważniejszych parametrów:

  • Address – adres klienta w sieci VPN;
  • DNS – serwer DNS (np. Cloudflare 1.1.1.1, Google 8.8.8.8);
  • Endpoint – publiczny IP serwera (lub domena) + port WireGuard;
  • AllowedIPs = 0.0.0.0/0 – całość ruchu przez VPN (full tunnel);
  • PersistentKeepalive = 25 – utrzymuje połączenie przez NAT (heartbeat), ważne np. w sieci LTE.

Linux (Debian/Ubuntu na laptopie)

Zainstaluj klienta WireGuard:

sudo apt install -y wireguard

Skopiuj plik i ustaw uprawnienia:

sudo cp wg0.conf /etc/wireguard/
sudo chmod 600 /etc/wireguard/wg0.conf

Uruchom połączenie:

sudo wg-quick up wg0

Wyłącz połączenie:

sudo wg-quick down wg0

Autostart (jeżeli chcesz):

sudo systemctl enable --now wg-quick@wg0

Windows / macOS

Postępuj według kroków:

  1. Pobierz oficjalną aplikację WireGuard od producenta.
  2. Uruchom, wybierz Importuj tunel z pliku (Import tunnel(s) from file) i wskaż wg0.conf klienta.
  3. Kliknij Aktywuj (Activate).

Od tej chwili cały ruch laptopa idzie przez Twój Debian 11 + WireGuard.

10. Konfiguracja klienta mobilnego (Android / iOS) – szybki VPN w telefonie

10.1 Tworzenie pliku konfiguracyjnego klienta mobilnego

Na serwerze, w katalogu /etc/wireguard/, wygeneruj klucze telefonu:

cd /etc/wireguard
umask 077
wg genkey | tee phone_private.key | wg pubkey > phone_public.key

Dodaj peera telefonu do serwera i przeładuj tunel:

[Peer]
# Telefon
PublicKey = TU_PHONE_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32

Przeładuj usługę:

sudo wg-quick down wg0
sudo wg-quick up wg0

Stwórz plik phone.conf do importu na telefonie:

[Interface]
PrivateKey = TU_PHONE_PRIVATE_KEY
Address = 10.0.0.3/32
DNS = 1.1.1.1

[Peer]
PublicKey = TU_SERVER_PUBLIC_KEY
Endpoint = PUBLICZNY_IP_SERWERA:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

10.2 Import przez kod QR

Najwygodniej zaimportować konfigurację przez kod QR. Wygeneruj go na serwerze:

sudo apt install -y qrencode
cd /etc/wireguard
qrencode -t ansiutf8 < phone.conf

Na telefonie postępuj tak:

  1. Zainstaluj aplikację WireGuard z Google Play / App Store.
  2. W aplikacji naciśnij + → Utwórz z kodu QR (Create from QR code).
  3. Zeskanuj kod z terminala.
  4. Nazwij połączenie i włącz przełącznik – tunel jest aktywny.

11. Testowanie połączenia i diagnostyka

11.1 Ping po adresie VPN

Na kliencie przetestuj łączność z serwerem:

ping 10.0.0.1

Jeśli odpowiada, tunel działa.

11.2 Sprawdzenie IP publicznego

Na kliencie wejdź na stronę wyświetlającą Twoje IP (np. „what is my IP”).

Jeśli widzisz IP serwera, cały ruch idzie przez VPN.

11.3 Sprawdzenie stanu WireGuard

Na serwerze wyświetl status interfejsu i peerów:

sudo wg

Wynik zawiera m.in.:

  • publiczny klucz każdego peer-a,
  • ilość przesłanych pakietów,
  • ostatni handshake (czas),
  • AllowedIPs dla peerów.

11.4 Typowe problemy

  • brak połączenia – sprawdź, czy port 51820/udp jest otwarty (firewall, chmura), upewnij się, że Endpoint w kliencie zawiera aktualny IP/host i port, sprawdź PersistentKeepalive w klientach za NAT-em;
  • brak dostępu do internetu mimo działającego tunelu – sprawdź, czy działa NAT (reguły PostUp z MASQUERADE), upewnij się, że net.ipv4.ip_forward=1 jest ustawione;
  • brak dostępu do sieci lokalnej serwera – dodaj odpowiednie trasy i AllowedIPs (np. 10.0.0.0/24, 192.168.1.0/24), sprawdź, czy router w sieci lokalnej wie, jak wrócić do sieci VPN.

12. Jak przyspieszyć WireGuard na Debianie 11?

WireGuard z założenia jest szybki, ale kilka praktyk pozwala wycisnąć maksimum wydajności i zminimalizować opóźnienia.

  1. Dobór serwera – wybierz lokalizację blisko użytkowników (niższy ping) oraz maszynę z wysoką wydajnością jednego rdzenia, bo szyfrowanie liczone jest na CPU;
  2. Minimalne opóźnienia w DNS – ustaw szybki DNS (np. Cloudflare 1.1.1.1 lub Google 8.8.8.8) w sekcji [Interface] na kliencie;
  3. Uproszczenie routingu (AllowedIPs) – jeśli nie potrzebujesz full tunnel, użyj split tunnel i wpisz jedynie konkretne sieci, co upraszcza tablicę routingu;
  4. Prostsze reguły zapory – unikaj podwójnych NAT-ów i nadmiarowych filtrów, trzymaj UFW/iptables na rozsądnym minimum;
  5. Aktualny kernel i pakiety – nowsze jądro i aktualne pakiety WireGuard zwykle przekładają się na lepszą wydajność i bezpieczeństwo.

13. Bezpieczeństwo – dobre praktyki

  • prywatne klucze – traktuj jak hasła; przechowuj wyłącznie na właściwych urządzeniach, w plikach z uprawnieniami 600;
  • silne hasła i aktualizacje – stosuj mocne hasła do kont root/sudo i regularnie aktualizuj system (apt update && apt upgrade);
  • ograniczenie dostępu – rozważ filtrowanie portu 51820 po krajach/zakresach IP na firewallu oraz regularne usuwanie nieużywanych peerów z wg0.conf;
  • monitoring – obserwuj logi (journalctl -u wg-quick@wg0) i statystyki wg, aby szybko wykrywać anomalie.

14. Szybkie wdrożenie – alternatywa ze skryptem (dla mniej zaawansowanych)

Jeśli chcesz maksymalnie uprościć proces, możesz użyć gotowego skryptu instalacyjnego (np. od Angristan), który automatycznie:

  • zainstaluje WireGuard,
  • skonfiguruje serwer,
  • utworzy pierwszego klienta (z możliwością generowania plików .conf i kodów QR).

Uruchom instalację krok po kroku:

sudo apt update && sudo apt upgrade -y
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
sudo chmod +x wireguard-install.sh
sudo ./wireguard-install.sh

Podczas działania skryptu przeważnie wystarczy naciskać Enter i akceptować domyślne wartości. Po zakończeniu otrzymasz gotowy plik .conf i/lub kod QR dla klienta.

15. Rozszerzenia – wiele klientów, dostęp do sieci LAN, dual-stack IPv4/IPv6

  • wielu klientów – dla każdego generujesz osobną parę kluczy i AllowedIPs z unikalnym adresem VPN (np. 10.0.0.3/32, 10.0.0.4/32 itd.);
  • dostęp do sieci LAN serwera – dodaj do AllowedIPs na kliencie np. 10.0.0.0/24, 192.168.1.0/24 oraz odpowiednie trasy i reguły na routerze LAN;
  • IPv6 – dodaj np. fd24:609a:6c18::1/64 dla serwera i kolejne adresy /128 dla klientów, zgodnie z zaleceniami dla Debian 11.
Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *