Konfiguracja serwera WireGuard w systemie Linux (wg0, NAT, Peers)
12 min czytania - 22 czerwca 2026

Praktyczna konfiguracja serwera WireGuard w systemie Linux: klucze, plik wg0.conf, NAT, zarządzanie peerami za pomocą syncconf oraz polecenia służące do rozwiązywania problemów, z których faktycznie korzystają administratorzy systemów.
Uruchom serwer WireGuard, jeśli chcesz uzyskać prywatny dostęp do hostowanej infrastruktury bez udostępniania portów administracyjnych w publicznej sieci internetowej. Wykorzystuje on uwierzytelnianie kluczem publicznym, działa w jądrach systemu Linux od wersji 5.6 i po uruchomieniu nie przeszkadza w pracy. W tym poście omówiono, kiedy należy używać serwera WireGuard, jak go uruchomić wg0oraz jak zapewnić sprawne działanie węzłów w codziennej eksploatacji.
Kiedy należy korzystać z serwera WireGuard
Większość konfiguracji można podzielić na trzy scenariusze: dostęp zdalny, połączenia między serwerami oraz routing między lokalizacjami.
W przypadku dostępu zdalnego uruchom serwer na VPS lub serwerze dedykowanym i przekieruj ruch administracyjny przez tunel. Skonfiguruj AllowedIPs na każdym węźle na prywatną podsieć zarządzania (na przykład 10.0.0.0/24), aby tylko ruch przeznaczony dla systemów wewnętrznych korzystał z tunelu. Cała pozostała komunikacja odbywa się przez lokalne połączenie użytkownika. Jeśli użytkownicy łączą się z sieci domowych lub komórkowych, należy dodać PersistentKeepalive = 25 po stronie klienta, aby zapobiec zerwaniu sesji NAT.
W przypadku połączeń między serwerami należy ustawić AllowedIPs wąskie. Zazwyczaj wystarcza pojedyncza /32 lub niewielką podsiecią zaplecza. Pozwala to uniknąć wprowadzania do tunelu niepowiązanego ruchu i zapewnia przewidywalność routingu.
W przypadku połączeń typu „site-to-site” sytuacja wygląda inaczej. Host WireGuard pełni rolę bramy między podsieciami, więc należy włączyć przekazywanie adresów IP, a reguły NAT muszą kierować ruch zwrotny przez właściwy interfejs.
| Wzorzec | AllowedIPs zakresu | Najlepsze dopasowanie | Złożoność konfiguracji |
|---|---|---|---|
| Dostęp zdalny | Prywatne podsieci, np. 10.0.0.0/24 | Dostęp administratorów i programistów | Niski |
| Serwer do serwera | Określone adresy IP lub podsieć zaplecza | Łącza typu punkt-punkt między hostami | Od niskiego do średniego |
| Między lokalizacjami | Cała zdalna sieć LAN, np. /24 | Trasowanie typu „brama-brama” | Od średniego do wysokiego |
| Dostęp do usług prywatnych | Tylko wewnętrzna podsieć (split-tunnel) | Izolacja usług zaplecza | Średnia |
Konfiguracja serwera
Serwer przechowuje klucz prywatny, domyślnie nasłuchuje na porcie UDP 51820 i kończy tunel. Ta sama podstawowa konfiguracja działa dla wszystkich trzech powyższych schematów.
Klucze i plik wg0.conf
Wygeneruj parę kluczy serwera:
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keyZabezpiecz klucz prywatny:
sudo chmod 600 /etc/wireguard/server_private.keyKlucz prywatny pozostaje na serwerze. Klucz publiczny jest tym, który przekazujesz innym użytkownikom.
Utwórz /etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32Znajdź interfejs wychodzący, do którego należy umieścić plik <PUBLIC_IFACE> :
ip -o -4 route show to default | awk '{print $5}'Przekierowanie, zapora sieciowa i NAT
Otwórz port nasłuchujący:
sudo ufw allow 51820/udpWłącz przekierowanie IP, dodając ten wiersz do pliku /etc/sysctl.conf:
net.ipv4.ip_forward = 1Zastosuj bez ponownego uruchamiania:
sudo sysctl -pPlik PostUp oraz PostDown w wg0.conf dodają i usuwają regułę maskowania NAT, gdy interfejs zostaje uruchomiony lub wyłączony. Bez nich ruch zwrotny z sieci LAN nigdy nie dotrze z powrotem do partnera.
Uruchomienie tunelu
wg-quick obsługuje interfejs, routing oraz PostUp/PostDown haki w jednym poleceniu:
sudo wg-quick up wg0Aby zapewnić automatyczne uruchamianie po ponownym uruchomieniu systemu, włącz jednostkę systemd:
sudo systemctl enable --now wg-quick@wg0Sprawdź stan za pomocą:
sudo wg showNajnowsza latest handshake potwierdza, że tunel działa. Jeśli wygląda na nieaktualny lub pusty, sprawdź zaporę sieciową, klucze po obu stronach oraz AllowedIPs.
Dodawanie i usuwanie partnerów
Każdy partner wymaga własnej pary kluczy. Należy ją wygenerować na kliencie, a następnie dodać klucz publiczny partnera do wg0.conf w nowym [Peer] bloku z AllowedIPs wpisem przypisującym jego adres IP tunelu.
Użyj /32 w przypadku pojedynczego urządzenia:
AllowedIPs = 10.8.0.3/32Zapobiega to przejmowaniu przez jeden węzeł adresów przypisanych innemu. W przypadku dostępu z podziałem tunelu należy wymienić tylko te prywatne podsieci, które powinny przechodzić przez tunel, na przykład AllowedIPs = 10.8.0.0/24.
Zastosuj zmiany w konfiguracji bez przerywania aktywnych sesji:
sudo wg syncconf wg0 <(wg-quick strip wg0)Usunięcie węzła partnera odbywa się w ten sam sposób. Należy usunąć jego [Peer] blok z wg0.conf i uruchom syncconf ponownie.
Rozwiązywanie problemów
Jeśli węzeł łączy się, ale nie może uzyskać dostępu do żadnych zasobów po drugiej stronie, przyczyną jest zazwyczaj jedna z czterech następujących sytuacji:
- Przekierowanie IP jest wyłączone
- Brakuje reguły maskowania NAT
- Nieprawidłowy interfejs wychodzący w regule NAT
AllowedIPsnie zawiera adresu docelowego
Sprawdź przekazywanie:
cat /proc/sys/net/ipv4/ip_forwardPowinno zwrócić 1. Jeśli zwraca 0, zmiana w sysctl nie została zastosowana lub nie została zapisana.
Sprawdź regułę NAT i interfejs wychodzący:
sudo iptables -t nat -L POSTROUTING
ip route get 1.1.1.1Drugie polecenie pokazuje rzeczywistą nazwę interfejsu wychodzącego, np. ens3, enp1s0lub eth0. Musi ona odpowiadać interfejsowi w regule MASQUERADE.
Jeśli brakuje samego uzgodnienia, sprawdź, czy port UDP 51820 jest otwarty w zaporze sieciowej i u każdego dostawcy usług internetowych wyższego szczebla oraz czy obie strony posiadają właściwy klucz publiczny drugiej strony.
W przypadku peerów znajdujących się za domowym lub mobilnym NAT-em, który przerywa nieaktywne sesje UDP, należy ustawić PersistentKeepalive = 25 na kliencie.
Rotacja kluczy i klucze wstępnie udostępnione
W przypadku tuneli działających przez miesiące klucze należy rotować mniej więcej raz w roku. Należy wygenerować nową parę kluczy, zaktualizować oba końce i zastosować za pomocą wg syncconf. Nie należy ponownie wykorzystywać klucza prywatnego w dwóch węzłach. Powoduje to konflikty routingu i zakłóca przesyłanie danych między nimi.
Aby zapewnić dodatkową warstwę bezpieczeństwa oprócz uwierzytelniania kluczem publicznym, należy dodać klucz wstępnie uzgodniony dla każdego węzła:
wg genpskDodaj wynik jako PresharedKey = <PSK> w [Peer] bloku po obu stronach. WireGuard włącza klucz PSK do procesu nawiązywania połączenia, więc osoba atakująca, która w jakiś sposób przejmie jeden z kluczy asymetrycznych, nadal nie będzie w stanie odszyfrować ruchu bez niego.
Przydatne polecenia do codziennego użytku:
| Polecenie | Cel |
|---|---|
wg show | Partnerzy, uzgodnienia, liczniki ruchu |
wg show wg0 transfer | Liczniki bajtów dla wg0 |
wg show all dump | Wyjście w formacie nadającym się do przetwarzania maszynowego dla skryptów monitorujących |
wg syncconf wg0 <(wg-quick strip wg0) | Zastosuj zmiany konfiguracji bez przerywania sesji |
wg genpsk | Generowanie klucza wstępnie udostępnionego |
Jeśli potrzebujesz stabilnego, publicznie dostępnego serwera do zakończenia tuneli WireGuard i kierowania prywatnego ruchu do swojej infrastruktury, zapoznaj się z planami VPS bez limitów transferu danych oferowanymi przez FDC.

Zmęczenie oczu spowodowane korzystaniem z urządzeń cyfrowych: jak chronić wzrok w świecie, w którym spędzamy dużo czasu przed ekranem
Cały dzień wpatrujesz się w ekran? Dowiedz się, jak zmniejszyć zmęczenie oczu spowodowane pracą z ekranem, korzystając ze sprawdzonych technik i narzędzi. Ten przewodnik jest niezbędny dla osób pracujących zdalnie, programistów i wszystkich osób z branży technologicznej.
4 min czytania - 21 maja 2025
Dlaczego warto mieć wydajny serwer VPS z nieograniczonym transferem danych
8 min czytania - 9 maja 2025

Masz pytania lub potrzebujesz niestandardowego rozwiązania?
Elastyczne opcje
Globalny zasięg
Natychmiastowe wdrożenie
Elastyczne opcje
Globalny zasięg
Natychmiastowe wdrożenie