NoctisNode
← PoradnikiSieci2026-10-238 min

WireGuard PersistentKeepalive 25 i PresharedKey na VPS

PersistentKeepalive = 25 wysyła keepalive co 25 s, aby NAT utrzymywał tunel otwarty; ustaw go na kliencie za NAT. PresharedKey dodaje symetryczne zabezpieczenie na wypadek ataków kwantowych.

Krótko: `PersistentKeepalive = 25` każe WireGuard wysyłać do peera co 25 sekund mały uwierzytelniony pakiet, który podtrzymuje mapowania NAT i stanowego firewalla, dzięki czemu druga strona nadal może do Ciebie dotrzeć. Zwykle ustawiasz go tylko na peerze za NAT (laptop, telefon lub domowy router), a nie na VPS z publicznym IP. `PresharedKey` to opcjonalny dodatkowy 256-bitowy sekret symetryczny dla każdej pary peerów, generowany przez `wg genpsk`, który jest wmieszany w handshake jako zabezpieczenie przed przyszłymi atakami kwantowymi na Curve25519.

Ten poradnik wyjaśnia obie opcje i podaje działającą konfigurację serwera i klienta dla VPS z WireGuard. Pełną konfigurację VPN z NAT i DNS znajdziesz w poradniku o VPN WireGuard.

Co tak naprawdę robi PersistentKeepalive = 25

WireGuard jest z założenia cichy: gdy nie płyną dane, nic nie wysyła. To dobre dla prywatności i baterii, ale routery wykonujące NAT i śledzenie połączeń usuwają bezczynne mapowania UDP, często po 30 sekundach, a czasem po kilku minutach. Gdy mapowanie zniknie, pakiety z serwera nie mogą dotrzeć do klienta za NAT, dopóki klient znów czegoś nie wyśle.

`PersistentKeepalive` to interwał w sekundach. Przy `25` peer wysyła pusty, zaszyfrowany keepalive, ilekroć przez 25 sekund niczego nie wysłał. Wartość 25 jest zalecana w dokumentacji WireGuard, bo pozostaje bezpiecznie poniżej najkrótszych typowych timeoutów UDP. Domyślnie ustawienie jest wyłączone (`0`), a narzut to mały pakiet mniej więcej co 25 sekund na peera.

WartośćEfektKiedy używać
0 lub nieustawioneBrak keepalive; tunel milczy w bezczynnościOba peery mają publiczne IP albo klient zawsze sam inicjuje ruch
25Keepalive co 25 s bezczynnościKlient za NAT lub CGNAT, który musi być osiągalny
15–20Częstsze keepaliveSieci z nietypowo agresywnymi timeoutami UDP
60+Mniej pakietów, większe ryzyko utraty mapowaniaRzadko przydatne; większość urządzeń NAT wcześniej usuwa mapowanie

Która strona potrzebuje PersistentKeepalive

Ustaw keepalive na peerze, do którego nie da się dotrzeć bezpośrednio, czyli na tym za NAT. Ten peer wysyła pakiety na zewnątrz, odświeżając własne mapowanie NAT. VPS z publicznym adresem IPv4 nie ma przed sobą NAT, więc nie potrzebuje tej opcji, by pozostać osiągalnym, i sam nie utrzyma otwartego zdalnego NAT, bo endpoint klienta poznaje tylko z pakietów klienta.

Jeśli klient tylko przegląda sieć przez tunel, łączy się ponownie natychmiast, gdy wysyła ruch, więc keepalive jest opcjonalny. Potrzebujesz go, gdy serwer lub inne peery muszą inicjować połączenia do klienta, na przykład SSH do domowej maszyny, monitoring lub łącze site-to-site.

  • ▹Laptop lub telefon za NAT do VPS: ustaw `PersistentKeepalive = 25` tylko na kliencie.
  • ▹VPS do VPS, oba z publicznymi IP: zwykle zostaw nieustawione; zobacz [poradnik o siatce WireGuard](/guides/wireguard-mesh-vps-cluster).
  • ▹Domowy serwer za CGNAT wystawiony przez VPS: ustaw go na domowym serwerze, inaczej VPS w ciągu kilku minut straci ścieżkę.
  • ▹Klienci mobilni: keepalive kosztuje trochę baterii; włączaj go tylko wtedy, gdy urządzenie musi być osiągalne.

PresharedKey: opcjonalna warstwa symetryczna

Handshake WireGuard korzysta z wymiany kluczy Curve25519. Wystarczająco duży komputer kwantowy mógłby teoretycznie ją złamać, a przeciwnik mógłby nagrywać ruch dziś i odszyfrować go później. `PresharedKey` wmiesza w handshake dodatkowy 256-bitowy klucz symetryczny. Klucze symetryczne tej długości nie są uważane za praktycznie łamalne przez znane algorytmy kwantowe, więc jeśli PSK pozostanie tajny, nagrany ruch pozostaje chroniony nawet po złamaniu części z kluczem publicznym.

PSK jest przypisany do pary peerów, musi być identyczny w sekcjach `[Peer]` obu peerów i powinien być unikalny dla każdej pary. Nie zastępuje kluczy prywatnych; to dodatkowa warstwa. Jeśli PSK się nie zgadzają, handshake po cichu się nie udaje i w `wg show` nie zobaczysz `latest handshake`.

  • ▹Wygeneruj go przez `wg genpsk`, które wypisuje losowy 32-bajtowy klucz zakodowany w base64.
  • ▹Przekaż go kanałem, któremu już ufasz, np. przez SSH, nigdy przez czat ani e-mail.
  • ▹Używaj jednego PSK na parę: w siatce pięciu węzłów to dziesięć różnych PSK.
  • ▹Rotuj go jak każdy inny sekret, gdy urządzenie zostanie zgubione lub wycofane.

Generowanie kluczy i PresharedKey

Zainstaluj narzędzia w Debianie 12/13 lub Ubuntu 24.04 przez `apt install wireguard`, a następnie generuj klucze na maszynie, na której będzie przechowywany dany klucz prywatny. PSK można wygenerować po dowolnej stronie i skopiować na drugą. `umask 077` zapewnia, że pliki są czytelne tylko dla roota.

umask 077
cd /etc/wireguard

# on the VPS
wg genkey | tee server.key | wg pubkey > server.pub

# on the client
wg genkey | tee client.key | wg pubkey > client.pub

# once, on either side; copy to the other over SSH
wg genpsk > client.psk

Konfiguracja serwera na VPS: /etc/wireguard/wg0.conf

Serwer ma stały port nasłuchu i nie ma ani keepalive, ani `Endpoint` dla klienta, bo bieżący adres klienta poznaje z uwierzytelnionych pakietów.

[Interface]
Address = 10.8.0.1/24, fd08::1/64
ListenPort = 51820
PrivateKey = <contents of server.key>

[Peer]
# laptop
PublicKey = <contents of client.pub>
PresharedKey = <contents of client.psk>
AllowedIPs = 10.8.0.2/32, fd08::2/128

Note · Otwórz UDP 51820 w firewallu VPS i uruchom tunel przez `systemctl enable --now wg-quick@wg0`. Zanim wystawisz cokolwiek innego, zabezpiecz SSH zgodnie z poradnikiem o hardeningu SSH i sprawdź uprawnienia kluczy z poradnikiem o StrictModes.

Konfiguracja klienta za NAT

Klient wskazuje publiczny adres VPS i to on ma ustawiony keepalive. Użyj `AllowedIPs = 10.8.0.0/24, fd08::/64` tylko dla prywatnego tunelu albo `0.0.0.0/0, ::/0`, aby cały ruch szedł przez VPS.

[Interface]
Address = 10.8.0.2/32, fd08::2/128
PrivateKey = <contents of client.key>

[Peer]
PublicKey = <contents of server.pub>
PresharedKey = <contents of client.psk>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.8.0.0/24, fd08::/64
PersistentKeepalive = 25

Note · VPS Wisp w NoctisNode (1 vCPU, 1 GB RAM, $6 za 28-dniowy cykl) z dedykowanym IPv4 wystarczy jako osobisty endpoint WireGuard, a zapłacisz za niego w Monero lub innych kryptowalutach, podając przy rejestracji tylko e-mail i hasło.

Weryfikacja i rozwiązywanie problemów

Uruchom `wg show` po obu stronach. Zdrowy klient pokazuje niedawny `latest handshake`, `persistent keepalive: every 25 seconds` i `preshared key: (hidden)` dla peera.

  1. 01.Brak jakiegokolwiek handshake: sprawdź, czy UDP 51820 jest otwarty na VPS i czy `Endpoint` ma właściwe IP i port.
  2. 02.Handshake działa bez PSK, ale nie z nim: PresharedKey różni się między dwiema konfiguracjami; skopiuj go ponownie.
  3. 03.Tunel działa, ale po minucie serwer nie może dotrzeć do klienta: dodaj `PersistentKeepalive = 25` na kliencie.
  4. 04.Zmiana keepalive bez restartu: `wg set wg0 peer <server-public-key> persistent-keepalive 25`.
  5. 05.Dodanie PSK z pliku w locie: `wg set wg0 peer <public-key> preshared-key /etc/wireguard/client.psk`.

FAQ

QCo oznacza PersistentKeepalive 25 w WireGuard?

ASprawia, że peer wysyła zaszyfrowany pakiet keepalive po 25 sekundach bez innego ruchu. Utrzymuje to otwarte mapowania NAT i firewalla, więc tunel pozostaje osiągalny z drugiej strony.

QCzy PersistentKeepalive ustawić na serwerze czy na kliencie?

ANa peerze za NAT, czyli niemal zawsze na kliencie. VPS z publicznym IP go nie potrzebuje i sam nie utrzyma otwartego mapowania NAT klienta.

QCzy PresharedKey w WireGuard jest wymagany?

ANie, jest opcjonalny. Dodaje do handshake sekret symetryczny jako zabezpieczenie przed przyszłymi atakami kwantowymi na Curve25519, więc to dobry wybór domyślny dla długo działających tuneli.

QJak wygenerować PresharedKey dla WireGuard?

AUruchom `wg genpsk > peer.psk` i wpisz tę samą wartość w linii `PresharedKey` w sekcjach `[Peer]` obu peerów. Dla każdej pary peerów używaj innego PSK.

QCzy PersistentKeepalive zużywa dużo transferu?

ANie. Wysyła jeden mały pakiet mniej więcej co 25 sekund bezczynności, co na VPS jest pomijalne, choć na telefonach może nieznacznie skrócić czas pracy baterii.

WireGuard PersistentKeepalive 25 i PresharedKey na VPS · NoctisNode