Menu
Szybki wybór
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.

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)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

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)

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

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

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.

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.