 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  WireGuard VPN na VPS — instalacja i konfiguracja

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

Contabo

VPS w Niemczech — idealny jako serwer WireGuard VPN z dobrym transferem

VPS VPN

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Tani VPS w Polsce — do WireGuard dla prywatnego dostępu do sieci VPS

Tani VPS

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

## Powiązane strony

-   [Bezpieczeństwo WordPress na hostingu](/baza-wiedzy/bezpieczenstwo-wordpress-hosting)
-   [SSH — zabezpieczanie dostępu do serwera](/baza-wiedzy/ssh-penetration-testing)
-   [UFW — konfiguracja firewalla na Ubuntu](/baza-wiedzy/ufw-firewall-konfiguracja)
-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Porównanie serwerów VPS](/vps/)
-   [Wszystkie artykuły](/baza-wiedzy/)