SSD Nodes Learn 8GB RAM — $66/rok
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-01

WireGuard czy OpenVPN do własnego serwera VPN?

WireGuard jest szybszy, ma krótszą konfigurację i mniejszą powierzchnię audytu. Sprawdź 4 przypadki, w których OpenVPN nadal wygrywa, w tym TCP 443.

Krótka odpowiedź

WireGuard kontra OpenVPN, w przypadku jednej osoby uruchamiającej serwer VPN na własnym VPS, nie jest wyrównanym porównaniem: należy wybrać WireGuard. Jest mniejszy, działa w jądrze Linux, nawiązuje połączenie w ułamku sekundy, a działająca konfiguracja klienta zajmuje około dziesięciu wierszy. OpenVPN zachowuje cztery rzeczywiste zastosowania. Jeśli żadne z nich nie dotyczy danego przypadku, nie jest potrzebny.

Te cztery zastosowania to uzyskanie dostępu z sieci, która zezwala wyłącznie na TCP port 443, podłączenie do istniejącego urzędu certyfikacji, uwierzytelnianie nazwanych użytkowników za pomocą hasła lub drugiego składnika oraz mostkowanie w warstwie 2. Poniżej przedstawiono uzasadnienie tej rekomendacji oraz dokładny punkt, od którego każde z tych wyjątkowych zastosowań zaczyna mieć znaczenie.

Dlaczego WireGuard został wybrany przez administratorów własnych serwerów

Kod źródłowy jest wystarczająco mały, aby go przeczytać. Projekt WireGuard obejmuje implementację protokołu o wielkości około 4,000 wierszy kodu. OpenVPN ma ich ponad 100,000, jeśli uwzględnić bibliotekę OpenSSL, na której opiera każdą operację kryptograficzną. Rozmiar ma znaczenie, ponieważ każdy wiersz kodu zwiększa powierzchnię ataku, a ani administrator, ani osoba dokonująca przeglądu kodu nie przeczyta 100,000 wierszy. Można przeczytać 4,000.

Działa w jądrze. WireGuard znajduje się w głównym drzewie Linux od wersji 5.6, dlatego Ubuntu 24.04 i Debian 13 dostarczają go bez konieczności kompilacji. Pakiety są szyfrowane tam, gdzie już się znajdują, czyli w przestrzeni jądra, bez kopiowania ich do procesu w przestrzeni użytkownika i z powrotem. Należy sprawdzić to przed wykonaniem pozostałych czynności:

sudo modprobe wireguard && echo ok

Na VPS KVM polecenie wyświetla ok. W przypadku wirtualizacji kontenerowej współdzielącej jądro hosta, takiej jak OpenVZ lub LXC, kończy się ono błędem Operation not supported, ponieważ nie można załadować modułu do jądra, które nie należy do użytkownika.

Nie ma niczego do negocjowania. WireGuard ma jeden stały zestaw szyfrów: ChaCha20-Poly1305 do szyfrowania danych oraz klucze Curve25519. Nie ma wersji, do której można obniżyć poziom zabezpieczeń, ani opcji, którą można skonfigurować nieprawidłowo. OpenVPN negocjuje z każdym klientem szyfr oraz wersję TLS (transport layer security). Zapewnia to elastyczność, ale jest również miejscem występowania błędnej konfiguracji. Serwer pozostawiony z ustawieniem data-ciphers AES-256-GCM:AES-128-CBC bez problemu przełączy się na szyfr CBC dla klienta, który nie oferuje niczego lepszego, a dziennik nie zasygnalizuje tego jako problemu.

Port nie odpowiada. Pakiet WireGuard, który nie przejdzie kontroli uwierzytelniania wiadomości, jest odrzucany bez wysyłania jakiejkolwiek odpowiedzi, dlatego nmap -sU -p 51820 zwraca open|filtered niezależnie od tego, czy cokolwiek nasłuchuje. Serwer OpenVPN w trybie TCP kończy uzgadnianie TCP, zanim stwierdzi, że połączenie jest niedozwolone. Wystarcza to, aby skaner potwierdził obecność usługi. OpenVPN przez UDP z ustawieniem tls-crypt jest niemal równie bezgłośny. Jest to więc argument przeciwko uruchamianiu OpenVPN przez TCP, a nie przeciwko OpenVPN jako takiemu.

Roaming jest dostępny bez dodatkowych kosztów. Peer WireGuard jest identyfikowany na podstawie klucza publicznego, a nie adresu. Laptop przechodzi z sieci domowej do mobilnego hotspotu i wysyła pojedynczy handshake z nowego adresu, po czym serwer aktualizuje endpoint, na który odpowiada. Nic nie jest ponownie łączone, ponieważ wcześniej nie ustanowiono stałego połączenia. OpenVPN może działać podobnie z użyciem float, ale klient zwykle rozłącza i ponownie ustanawia pełną sesję TLS. Dlatego przerwa po otwarciu pokrywy laptopa jest zauważalna w OpenVPN, a nie występuje w WireGuard.

Szybkość w 2026: różnica się zmniejszyła

Przez wiele lat głównym argumentem dotyczącym szybkości było to, że OpenVPN kopiował każdy pakiet do przestrzeni użytkownika, szyfrował go w tej przestrzeni, a następnie kopiował z powrotem, podczas gdy WireGuard nigdy nie opuszczał jądra. Nie jest to już pełny obraz sytuacji, a porównanie, które to pomija, jest nieaktualne.

OpenVPN 2.7 został wydany w lutym 2026 i obsługuje moduł jądra ovpn, który włączono do Linux 6.16. Jest to DCO (data channel offload): kanał sterowania pozostaje w przestrzeni użytkownika, a masowa transmisja danych jest przenoszona do jądra, czyli działa w przybliżeniu tak, jak WireGuard od początku. W przypadku jądra i wersji OpenVPN wystarczająco nowych, aby korzystać z tej funkcji, przepustowość jest porównywalna, a nie należąca do innej klasy. Należy sprawdzić, jakie wersje są faktycznie dostępne:

uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3

Według stanu na lipiec 2026 standardowa instalacja Ubuntu 24.04 LTS zawiera OpenVPN 2.6, a nie 2.7, natomiast moduł ovpn wymaga wersji 2.7. W tym wydaniu obsługa offload jest dostępna tylko za pośrednictwem starszego pakietu openvpn-dco-dkms, który kompiluje moduł spoza drzewa źródeł dla używanego jądra, a więc wymaga ponownej kompilacji po każdej aktualizacji jądra. Jest to dodatkowy element, którego WireGuard nie wymaga.

Przed uznaniem DCO za powód pozostania przy OpenVPN należy zapoznać się ze szczegółowymi ograniczeniami. Obsługiwane są wyłącznie tunele Layer 3, akceptowane są tylko szyfry AEAD (authenticated encryption with associated data: AES-GCM lub ChaCha20-Poly1305), kompresja nie jest obsługiwana, a na serwerze funkcja działa wyłącznie z topology subnet. Każde z tych ograniczeń zmniejsza elastyczność, która pierwotnie była argumentem na rzecz OpenVPN. Szybki OpenVPN to OpenVPN skonfigurowany tak, aby działał podobnie do WireGuard.

Nie należy ufać opublikowanym wartościom przepustowości, w tym wartościom podanym na tej stronie. W przypadku VPS ograniczeniem jest zwykle przydział procesora lub sieci, a nie protokół. Należy zmierzyć własną przepustowość za pomocą iperf3 uruchomionego przez tunel, a następnie ponownie poza nim, i porównać oba wyniki.

Gdzie OpenVPN nadal jest przydatny

Trzeba uzyskać dostęp przez TCP port 443. WireGuard działa wyłącznie przez UDP, celowo, i nie będzie obsługiwać trybu TCP. Sieć hotelowa lub firmowy serwer proxy, który zezwala wyłącznie na TCP 443, przepuści OpenVPN skonfigurowany z użyciem proto tcp-server i port 443, ponieważ taki ruch wygląda jak zwykła sesja TLS. WireGuard wymaga użycia opakowania, takiego jak wstunnel lub udp2raw, aby przejść przez tę samą sieć. Oznacza to dodatkowy proces, który trzeba uruchamiać i aktualizować. Należy uwzględnić konflikt: jeśli serwer WWW już zajmuje TCP 443 na tym adresie IP, jeden z tych elementów musi zostać przeniesiony.

Uruchomiono już urząd certyfikacji. OpenVPN uwierzytelnia za pomocą certyfikatów X.509, dlatego można go włączyć do już używanej infrastruktury PKI (public key infrastructure). Certyfikaty wygasają automatycznie. Unieważnienie certyfikatu polega na dodaniu go do listy unieważnionych certyfikatów, którą serwer odczytuje za pośrednictwem crl-verify. WireGuard nie używa certyfikatów, terminów ważności ani list unieważnień. Usunięcie peera wymaga edycji konfiguracji serwera i jej ponownego wczytania. Przy dziesięciu peerach jest to wystarczające. Przy czterystu peerach i wymaganiach audytowych model certyfikatów zapewnia istotne korzyści.

Potrzebni są nazwani użytkownicy, a nie tylko klucze. OpenVPN może przekazać uwierzytelnianie do zewnętrznego systemu za pomocą auth-user-pass-verify lub wtyczki, takiej jak openvpn-plugin-auth-pam.so. Umożliwia to dodanie obsługi LDAP lub drugiego składnika uwierzytelniania w postaci jednorazowego hasła. WireGuard w ogóle nie ma pojęcia użytkownika. Klucz albo znajduje się w konfiguracji, albo go w niej nie ma. Jeśli wymaganiem jest, aby „Sara musiała wprowadzić kod z telefonu”, WireGuard nie może samodzielnie tego zrealizować.

Wymagana jest warstwa 2 albo klient dla starszego sprzętu. OpenVPN z użyciem dev tap mostkuje ramki Ethernet. Ma to znaczenie w przypadku protokołów rozgłoszeniowych i starszych gier w sieci LAN. WireGuard działa wyłącznie w warstwie 3 i tak pozostanie. OpenVPN ma również klientów dla sprzętu i systemów operacyjnych, na których aplikacja WireGuard nigdy nie będzie dostępna. Oba te powody tracą na znaczeniu. dev tap jest niezgodne z DCO, dlatego użycie mostu wymusza wolniejszą ścieżkę.

Ile faktycznie kosztują oba rozwiązania

Tożsamość WireGuard tworzy się jednym poleceniem. Nawiasy mają znaczenie, ponieważ ustawiają uprawnienia pliku, zanim klucz zostanie utworzony:

(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.key

Odpowiednikiem w OpenVPN jest urząd certyfikacji, za który odpowiada się przez cały okres działania VPN:

sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server

Żadna z tych list nie jest przesadzona. CA zapewnia możliwość ustawienia daty wygaśnięcia i unieważniania certyfikatów. Wymaga jednak ochrony klucza prywatnego przez lata, pamiętania o odnowieniu oraz ponownego utworzenia infrastruktury w razie jego utraty. Jeśli te funkcje nie są wykorzystywane, ponoszone koszty nie przynoszą korzyści. Pełna procedura konfiguracji WireGuard, obejmująca przekazywanie pakietów, NAT (translację adresów sieciowych) oraz błędy uzgadniania, które mogą zająć całe popołudnie, znajduje się w przewodniku dotyczącym samodzielnego hostowania VPN WireGuard na VPS.

Czego każdy z nich wymaga od zapory sieciowej

WireGuard wymaga dokładnie jednej reguły ruchu przychodzącego dla protokołu UDP na porcie określonym w ListenPort:

sudo ufw allow 51820/udp
sudo ufw status verbose

OpenVPN domyślnie wymaga protokołu UDP na porcie 1194 lub protokołu TCP na porcie 443, jeśli wybrano tę opcję. W obu przypadkach należy następnie włączyć przekazywanie adresów IP i skonfigurować regułę source NAT, ponieważ system Linux odrzuca pakiety, które nie są adresowane do tego systemu. Ta część konfiguracji jest identyczna dla obu protokołów. To właśnie tutaj występuje większość zgłoszeń typu „tunel łączy się, ale nie ma dostępu do internetu”. Jeśli ufw nie jest jeszcze znany, należy zacząć od podstaw zapory ufw na VPS i pamiętać, że większość dostawców uruchamia drugą zaporę sieciową w panelu sterowania: reguła dodana na serwerze nie zadziała, jeśli pakiet nie dotrze do serwera. Zrozumienie czym jest port i jak system Linux nasłuchuje na porcie przyspiesza obie te kontrole.

Jak wybrać w jednym akapicie

Uruchom WireGuard, chyba że można wskazać konkretną funkcję, której nie zapewnia. Jeśli do ominięcia ograniczeń sieci potrzebny jest TCP 443, użyj w tym celu OpenVPN i rozważ uruchomienie obu rozwiązań: korzystają z różnych portów i mogą współistnieć na jednym serwerze bez konfliktu. Jeśli potrzebne są konta użytkowników lub uwierzytelnianie dwuskładnikowe, nie należy próbować uzyskiwać tego za pomocą WireGuard. Zamiast tego należy umieścić nad nim warstwę tożsamości. Samodzielnie hostowany serwer sterujący Headscale korzysta pod spodem z WireGuard i dodaje model kont, dystrybucję kluczy oraz zatwierdzanie urządzeń, które w przypadku podstawowej konfiguracji WireGuard pozostają po stronie administratora.

Migracja z OpenVPN bez przestoju

Nie ma konwersji. PKI OpenVPN nie staje się kluczami WireGuard, ponieważ WireGuard nie używa certyfikatów, które można przekonwertować. Każdy klient otrzymuje nową parę kluczy wygenerowaną w taki sam sposób jak para kluczy serwera.

Należy przeprowadzić migrację równolegle, zamiast przełączać usługi. WireGuard na UDP 51820 i OpenVPN na 1194 mogą działać jednocześnie na tym samym serwerze. Należy więc uruchomić wg0, potwierdzić jego działanie za pomocą sudo wg show, wyświetlając najnowszy wpis latest handshake, a następnie przenosić klientów pojedynczo. Gdy lista peerów OpenVPN przestanie się zmieniać, należy zatrzymać usługę za pomocą sudo systemctl disable --now openvpn-server@server. Pliki CA należy zachować do czasu uzyskania pewności, ponieważ odtworzenie unieważnionego klienta na usuniętym CA nie jest możliwe.

Nie można natomiast przenieść kont opartych na nazwach użytkowników i hasłach ani powiązanej z nimi historii unieważnień. Należy ustalić, gdzie będą przechowywane, przed wyłączeniem starego serwera, a nie po tym fakcie.

FAQ

Czy WireGuard jest szybszy niż OpenVPN?

Na standardowym serwerze Ubuntu 24.04 — tak, i to znacznie, ponieważ WireGuard szyfruje dane w jądrze, a OpenVPN 2.6 przekazuje każdy pakiet do procesu w przestrzeni użytkownika. W OpenVPN 2.7 oraz przy użyciu modułu jądra ovpn z Linux 6.16 ścieżka danych również przebiega w jądrze, więc oba rozwiązania należą do tej samej klasy. Warto wykonać własne pomiary za pomocą iperf3 przez tunel, zamiast ufać wartości podanej na blogu, ponieważ na VPS ograniczeniem jest zwykle procesor albo przydzielony limit przepustowości.

Czy WireGuard może działać przez port TCP 443?

Nie samodzielnie. WireGuard został zaprojektowany wyłącznie dla UDP i nie planuje się obsługi trybu TCP. Aby przejść przez sieć, która zezwala tylko na TCP 443, należy opakować go w tunel, taki jak wstunnel lub udp2raw. Wymaga to uruchomienia i aktualizowania dodatkowego procesu po obu stronach. Jeśli takie ograniczenie występuje w typowym środowisku pracy, prostszym rozwiązaniem jest OpenVPN z proto tcp-server i port 443.

Czy OpenVPN jest obecnie niezabezpieczony?

Nie. Aktualny OpenVPN z szyfrem AEAD, takim jak AES-256-GCM, oraz z włączonym tls-crypt jest bezpiecznym rozwiązaniem VPN. Przewaga WireGuard wynika z czegoś innego: OpenVPN zawiera znacznie więcej kodu i opcji, dlatego zmęczony administrator ma znacznie więcej możliwości nieprawidłowej konfiguracji. Mniejsza liczba wyborów oznacza mniejsze ryzyko błędu.

Które rozwiązanie wybrać do osobistego VPN na VPS?

WireGuard. Jedna para kluczy na urządzenie, jeden plik konfiguracyjny zawierający około dziesięciu wierszy, jeden otwarty port UDP oraz uzgadnianie połączenia kończące się, zanim zostanie to zauważone. OpenVPN należy wybrać tylko wtedy, gdy występuje regularna potrzeba łączenia się z sieci, które blokują UDP, albo gdy wymagane jest użycie istniejącego urzędu certyfikacji lub katalogu użytkowników.