Menu
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

WireGuard VPN na VPS - instalacja i konfiguracja

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Bezpieczeństwo

WireGuard to nowoczesny protokół VPN, który zrewolucjonizował podejście do sieci prywatnych. Zamiast setek linii konfiguracji i skomplikowanej infrastruktury certyfikatów (jak w OpenVPN), WireGuard konfiguruje się w kilkanaście minut. Działa jako moduł jądra Linuxa, jest szybszy, prostszy i ma mniejszą powierzchnię ataku. Doskonały do bezpiecznego dostępu do VPS, łączenia serwerów w prywatną sieć lub tunelowania całego ruchu.

Co to jest WireGuard?

WireGuard to darmowy, otwarty protokół VPN, który tworzy szyfrowany tunel między urządzeniami. Od wersji 5.6 jest wbudowany w jądro Linuxa, a oficjalne aplikacje są na Windows, macOS, Androida i iOS. Nie ma tu serwera certyfikatów ani loginów: każde urządzenie (peer) ma parę kluczy, a w konfiguracji wpisujesz klucze publiczne urządzeń, którym ufasz. Ruch idzie po UDP i jest szyfrowany ChaCha20-Poly1305.

W praktyce WireGuard na VPS daje Ci własny serwer VPN: laptop i telefon łączą się z VPS-em, a ruch wychodzi do internetu z jego adresu IP albo trafia tylko do prywatnej sieci Twoich serwerów. Wymagania są małe:

  • Wirtualizacja KVM - własne jądro, moduł WireGuard działa od razu. Na kontenerach (OpenVZ, LXC) moduł zależy od hosta, często zostaje tylko wolniejszy wireguard-go.
  • System - Ubuntu 20.04+ lub Debian 11+ (pakiet wireguard w oficjalnych repozytoriach).
  • Zasoby - dla kilku urządzeń wystarczy 1 vCPU i 512 MB do 1 GB RAM. Przy full tunnel liczy się limit transferu w planie.
  • Publiczny adres IPv4 i możliwość otwarcia portu UDP (także w zaporze w panelu dostawcy).

Jeśli dopiero wybierasz serwer, porównanie planów i scenariuszy znajdziesz w poradniku jaki VPS wybrać.

Instalacja WireGuard na Ubuntu/Debian

# Ubuntu 20.04+ / Debian 11+ (WireGuard jest w oficjalnych repozytoriach)
apt update
apt install -y wireguard wireguard-tools

# Sprawdzenie wersji
wg --version

# Włączenie IP forwarding (wymagane dla full-tunnel VPN), trwale po restarcie
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl --system

Generowanie kluczy - serwer i klient

WireGuard używa kryptografii krzywych eliptycznych (Curve25519). Każdy peer - serwer i każdy klient - ma własną parę kluczy:

# Na serwerze VPS - generuj klucze serwera
cd /etc/wireguard
umask 077   # bezpieczne uprawnienia (tylko root)

wg genkey | tee server_private.key | wg pubkey > server_public.key

cat server_private.key   # skopiuj - potrzebny w konfiguracji
cat server_public.key    # skopiuj - podasz klientom

# Na komputerze klienta - generuj klucze klienta
wg genkey | tee client_private.key | wg pubkey > client_public.key

Konfiguracja serwera - /etc/wireguard/wg0.conf

# /etc/wireguard/wg0.conf (serwer VPS)

[Interface]
Address = 10.8.0.1/24          # IP serwera w sieci VPN
ListenPort = 51820              # port UDP
PrivateKey = KLUCZ_PRYWATNY_SERWERA

# Routing - przekazuj ruch klientów do internetu (full tunnel)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Klient 1 (laptop)
[Peer]
PublicKey = KLUCZ_PUBLICZNY_KLIENTA_1
AllowedIPs = 10.8.0.2/32       # IP klienta 1 w sieci VPN

# Klient 2 (telefon)
[Peer]
PublicKey = KLUCZ_PUBLICZNY_KLIENTA_2
AllowedIPs = 10.8.0.3/32

Uwaga: zamień eth0 na nazwę swojego interfejsu sieciowego (sprawdź przez ip a - może to być ens3, ens18 lub inne).

Konfiguracja klienta

# /etc/wireguard/wg0.conf (klient - Linux)

[Interface]
Address = 10.8.0.2/24          # IP klienta w sieci VPN
PrivateKey = KLUCZ_PRYWATNY_KLIENTA
DNS = 1.1.1.1                  # opcjonalnie: DNS przez VPN

[Peer]
PublicKey = KLUCZ_PUBLICZNY_SERWERA
Endpoint = IP_TWOJEGO_VPS:51820   # publiczny adres IP i port serwera
AllowedIPs = 0.0.0.0/0           # full tunnel (cały ruch przez VPN)
# AllowedIPs = 10.8.0.0/24       # split tunnel (tylko sieć VPN)

PersistentKeepalive = 25         # wysyłaj keepalive co 25s (ważne za NAT)

Klienci WireGuard: Windows, macOS, Android i iOS (kod QR)

Na Windows i macOS zainstaluj oficjalną aplikację WireGuard ze strony wireguard.com (macOS: App Store), a następnie zaimportuj plik .conf o tej samej treści co konfiguracja klienta Linux powyżej. Na telefonie najwygodniej jest zeskanować kod QR wygenerowany na serwerze:

# Na serwerze: klucze i konfiguracja dla telefonu
apt install -y qrencode
cd /etc/wireguard
wg genkey | tee telefon_private.key | wg pubkey > telefon_public.key

# Plik telefon.conf: jak konfiguracja klienta powyżej,
# z PrivateKey = zawartość telefon_private.key i Address = 10.8.0.3/24

# Kod QR w terminalu - zeskanuj w aplikacji WireGuard (Dodaj tunel - Skanuj kod QR)
qrencode -t ansiutf8 < telefon.conf

# Po zeskanowaniu usuń plik z kluczem prywatnym telefonu
rm telefon.conf telefon_private.key

Każdy nowy klient to nowa sekcja [Peer] w wg0.conf serwera z kolejnym adresem (10.8.0.4/32, 10.8.0.5/32...). Zmiany wczytasz bez zrywania połączeń pozostałych klientów:

# Przeładowanie peerów bez restartu interfejsu
wg syncconf wg0 <(wg-quick strip wg0)

UFW - reguły firewalla

# Otwórz port UDP 51820 na serwerze VPS
ufw allow 51820/udp
ufw allow OpenSSH    # WAŻNE: nie zablokuj SSH!
ufw enable

# Sprawdzenie
ufw status verbose

Uruchamianie - wg-quick

# Na serwerze - uruchom interfejs
wg-quick up wg0

# Autostart po restarcie serwera
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

# Na kliencie - włącz/wyłącz VPN
wg-quick up wg0
wg-quick down wg0

# Sprawdzenie statusu
wg show

Weryfikacja połączenia

# Na serwerze - lista peerów i statystyki
wg show

# Przykładowy output:
# interface: wg0
#   public key: ABC...
#   listening port: 51820
#
# peer: XYZ... (klucz publiczny klienta)
#   endpoint: 1.2.3.4:12345
#   allowed ips: 10.8.0.2/32
#   latest handshake: 5 seconds ago   <-- połączony!
#   transfer: 1.23 MiB received, 456 KiB sent

# Na kliencie - ping serwera VPN
ping 10.8.0.1

# Sprawdzenie publicznego IP (powinno być IP VPS)
curl ifconfig.me

Najczęstsze problemy i jak je naprawić

  • Brak "latest handshake" w wg show - port UDP nie dochodzi do serwera. Sprawdź ufw status, zaporę w panelu dostawcy VPS, zgodność portu w Endpoint oraz to, czy klucz publiczny serwera u klienta i klucz klienta w [Peer] są poprawne (zamienione klucze to częsty błąd).
  • Handshake jest, ale nie ma internetu - sprawdź sysctl net.ipv4.ip_forward (musi być 1), nazwę interfejsu w regule MASQUERADE (eth0 vs ens3) i czy AllowedIPs klienta to 0.0.0.0/0.
  • Strony nie otwierają się po nazwie, a ping po IP działa - problem z DNS. Ustaw w kliencie DNS = 1.1.1.1 albo DNS działający na serwerze VPN.
  • Część stron ładuje się, duże pliki się zawieszają - zbyt duże MTU (typowe na LTE i łączach PPPoE). Dodaj w [Interface] klienta MTU = 1380 i sprawdź ponownie.
  • Tunel znika po restarcie VPS - brak systemctl enable wg-quick@wg0.

Typowe zastosowania WireGuard na VPS

  • Bezpieczny dostęp do VPS - zamknij wszystkie porty (SSH, HTTP, DB) i otwórz tylko port WireGuard. Usługi dostępne tylko przez VPN - niewidzialne z internetu.
  • Prywatna sieć między serwerami - połącz kilka VPS w jedną sieć przez WireGuard. Baza danych dostępna tylko w sieci VPN (np. 10.8.0.0/24), backupy przez zaszyfrowany tunel.
  • Prywatność internetowa - full tunnel (AllowedIPs = 0.0.0.0/0) ukrywa Twój rzeczywisty IP. Ruch wychodzi z IP Twojego VPS.
  • Obejście restrykcji sieci - korporacyjne lub akademickie sieci blokujące określone protokoły lub porty. WireGuard na porcie 443 (UDP) często przechodzi niezauważony.

Najczęstsze pytania

Co to jest WireGuard? +
WireGuard to darmowy, otwarty protokół i program do tworzenia szyfrowanych tuneli VPN. Od wersji 5.6 jest częścią jądra Linuxa, ma oficjalne aplikacje na Windows, macOS, Androida i iOS. Łączy urządzenia (peery) wymieniające klucze publiczne, działa po UDP i używa nowoczesnej kryptografii (Curve25519, ChaCha20-Poly1305). Najczęściej stawia się go na VPS jako własny serwer VPN.
Czym WireGuard różni się od OpenVPN? +
WireGuard to nowoczesny protokół VPN zaprojektowany od podstaw z myślą o prostocie i wydajności. Ma tylko ~4000 linii kodu (OpenVPN ma ~100 000+), co oznacza mniejszą powierzchnię ataku. Działa jako moduł jądra Linuxa (lub przestrzeni użytkownika), co daje niższe opóźnienia. Konfiguracja to kilkanaście linii zamiast skomplikowanych certyfikatów PKI. WireGuard jest szybszy, prostszy i bezpieczniejszy - OpenVPN ma przewagę jedynie w kompatybilności z starszymi systemami.
Jak wygenerować klucze WireGuard? +
Na serwerze: wg genkey | tee privatekey | wg pubkey > publickey. Plik privatekey zawiera klucz prywatny (trzymaj w tajemnicy!), publickey - klucz publiczny (wymieniaj z peerami). Każdy peer (serwer + klient) ma swoją parę kluczy. W konfiguracji wg0.conf podajesz swój klucz prywatny (PrivateKey =) i klucze publiczne peerów (PublicKey = w sekcji [Peer]).
Czy WireGuard ukrywa cały ruch internetowy? +
Zależy od konfiguracji AllowedIPs. Jeśli ustawisz AllowedIPs = 0.0.0.0/0 - cały ruch IPv4 klienta idzie przez VPN (full tunnel). Jeśli podasz konkretną sieć np. 10.8.0.0/24 - przez VPN idzie tylko ruch do tej podsieci, reszta bezpośrednio (split tunnel). Do prywatności internetowej potrzebujesz full tunnel + DNS forwarding przez VPS (ustaw DNS = 10.8.0.1 na kliencie, a na serwerze skonfiguruj dnsmasq lub systemd-resolved).
Jak sprawdzić czy WireGuard działa poprawnie? +
Użyj komendy wg show - wyświetla aktywne interfejsy, listę peerów, czas ostatniego handshake i statystyki ruchu (tx/rx bytes). Jeśli "latest handshake" jest aktualny (kilkadziesiąt sekund temu) - połączenie działa. Możesz też ping 10.8.0.1 z klienta (IP serwera w sieci VPN). Brak handshake to najczęściej problem z firewallem (port UDP 51820 zablokowany) lub nieprawidłowym kluczem publicznym.
Jak podłączyć telefon do WireGuard na VPS? +
Zainstaluj oficjalną aplikację WireGuard (Google Play lub App Store). Na serwerze przygotuj plik konfiguracji klienta (np. telefon.conf z jego kluczem prywatnym i kluczem publicznym serwera), dopisz telefon jako [Peer] w wg0.conf i wygeneruj kod QR komendą qrencode -t ansiutf8 < telefon.conf. W aplikacji wybierz dodanie tunelu ze skanowania kodu QR. Po zeskanowaniu usuń plik telefon.conf z serwera, bo zawiera klucz prywatny telefonu.
Jakiego portu używa WireGuard i czy działa po TCP? +
Domyślnie UDP 51820, ale port ustawiasz dowolnie w ListenPort. WireGuard działa wyłącznie po UDP, nie ma trybu TCP. Jeśli sieć blokuje UDP, potrzebne jest dodatkowe opakowanie ruchu (np. udp2raw) albo inny VPN działający po TCP. Pamiętaj o otwarciu portu zarówno w UFW, jak i w zaporze w panelu dostawcy VPS, jeśli ją ma.
Jaki VPS wystarczy do WireGuard? +
Do prywatnego VPN dla kilku urządzeń wystarczy najmniejszy plan: 1 vCPU i 512 MB do 1 GB RAM. Ważniejsze są wirtualizacja i transfer: najprościej jest na KVM, gdzie masz własne jądro z modułem WireGuard. Na kontenerach (OpenVZ, LXC) moduł zależy od hosta i często zostaje tylko wolniejsza implementacja w przestrzeni użytkownika (wireguard-go). Przy tunelowaniu całego ruchu sprawdź limit transferu w planie.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.