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 wygrał w środowiskach self-hosted
Kod źródłowy jest na tyle mały, że można go przeczytać. Projekt WireGuard zawiera implementację protokołu w około 4000 linii kodu. OpenVPN osiąga sześciocyfrowe wartości, jeśli uwzględni się bibliotekę OpenSSL, na której polega przy każdej operacji kryptograficznej. Rozmiar ma znaczenie, ponieważ każda linia kodu to potencjalna powierzchnia ataku, a ani użytkownik, ani recenzent nie przeczytają 100 000 linii. 4000 linii można przeczytać.
Działa w jądrze systemu. WireGuard znajduje się w głównym nurcie Linux od wersji 5.6, więc 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 do procesu w przestrzeni użytkownika i z powrotem. Należy to sprawdzić przed wszystkim innym:
sudo modprobe wireguard && echo okNa VPS typu KVM polecenie to zwraca ok. W wirtualizacji kontenerowej, która współdzieli jądro hosta, takiej jak OpenVZ lub LXC, operacja kończy się niepowodzeniem z komunikatem Operation not supported, ponieważ nie można załadować modułu do jądra, które nie należy do danego systemu.
Brak negocjacji. WireGuard posiada jeden stały zestaw szyfrów: ChaCha20-Poly1305 dla danych oraz klucze Curve25519. Nie ma wersji do obniżenia ani opcji, którą można błędnie skonfigurować. OpenVPN negocjuje szyfr oraz wersję TLS (transport layer security) z każdym klientem, co zapewnia elastyczność, ale jest również źródłem błędów konfiguracyjnych. Serwer pozostawiony z ustawieniem data-ciphers AES-256-GCM:AES-128-CBC chętnie przełączy się na szyfr CBC dla klienta, który nie oferuje nic lepszego, a dziennik zdarzeń nie oznacza słabszego szyfru jako problemu. Gdy dostępny jest offload kanału danych, OpenVPN wyświetla notatkę, że wpis CBC wyłączył offload, co jest ostrzeżeniem dotyczącym szybkości, a nie bezpieczeństwa.
Port nie odpowiada. Pakiet WireGuard, który nie przejdzie weryfikacji autentyczności wiadomości, jest odrzucany bez żadnej odpowiedzi, więc nmap -sU -p 51820 nie odróżni serwera WireGuard od portu, który firewall po cichu odrzuca: oba zwracają open|filtered. Tylko niefiltrowany port, na którym nic nie nasłuchuje, zdradza swoją obecność, ponieważ jądro odpowiada komunikatem ICMP port unreachable, a nmap raportuje go jako closed. Serwer OpenVPN w trybie TCP kończy handshake TCP, zanim zdecyduje, że połączenie nie jest mile widziane, co wystarcza skanerowi do potwierdzenia obecności usługi. OpenVPN przez UDP z tls-crypt jest niemal równie dyskretny, więc jest to argument przeciwko uruchamianiu OpenVPN na TCP, a nie przeciwko samemu OpenVPN.
Roaming jest darmowy. Peer WireGuard jest identyfikowany przez swój klucz publiczny, a nie przez adres. Laptop przenosi się z domu do mobilnego hotspotu, wysyła jeden handshake z nowego adresu, a serwer aktualizuje punkt końcowy, do którego wysyła odpowiedzi. Nic nie wymaga ponownego połączenia, ponieważ nigdy nie było stałego połączenia. OpenVPN potrafi coś podobnego dzięki float, ale klient zazwyczaj zrywa i odbudowuje pełną sesję TLS, dlatego pauza po otwarciu klapy laptopa jest zauważalna w OpenVPN, a w WireGuard nie.
Szybkość w 2026 roku: różnica zaciera się tylko dzięki offloadowi w jądrze
Przez lata uczciwy argument dotyczący szybkości opierał się na fakcie, że OpenVPN kopiował każdy pakiet do przestrzeni użytkownika, tam go szyfrował i kopiował z powrotem, podczas gdy WireGuard nigdy nie opuszczał jądra. Na standardowym serwerze z Ubuntu 24.04 obraz ten pozostaje aktualny, a WireGuard jest znacznie szybszy. Zmiana w 2026 roku polega na tym, że OpenVPN może teraz przenieść ścieżkę danych również do jądra, o ile wspierają to zarówno jądro, jak i wersja OpenVPN, a porównanie, które to pomija, jest nieaktualne.
OpenVPN 2.7 został wydany w lutym 2026 roku wraz ze wsparciem dla modułu jądra ovpn, który został scalony w Linux 6.16. Jest to DCO (data channel offload): kanał sterujący pozostaje w przestrzeni użytkownika, a ścieżka danych przesyłanych masowo przenosi się do jądra, co jest w przybliżeniu tym, co WireGuard robi od zawsze. Na jądrze i wersji OpenVPN wystarczająco nowych, by z tego korzystać, przepustowość znajduje się w tej samej klasie, a nie w innej. Sprawdź, co faktycznie posiadasz:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3Według stanu na październik 2026 roku, standardowy Ubuntu 24.04 LTS dostarcza OpenVPN 2.6, a nie 2.7, a moduł ovpn wymaga wersji 2.7. W tym wydaniu offload uzyskuje się tylko poprzez starszy pakiet openvpn-dco-dkms, który buduje moduł spoza drzewa źródeł jądra dla aktualnie działającego kernela i dlatego wymaga przebudowy przy każdej aktualizacji jądra. Jest to ruchomy element, którego WireGuard nie posiada. Ubuntu 26.04 LTS dostarcza OpenVPN 2.7.0 oraz jądro Linux 7.0, oba wystarczająco nowe dla ovpn, więc w tym wydaniu to linia modinfo powyżej jest tą, którą należy sprawdzić.
Przeczytaj drobny druk dotyczący DCO, zanim uznasz go za powód, by pozostać przy tym rozwiązaniu. Obsługuje on tylko tunele warstwy 3, akceptuje wyłącznie szyfry AEAD (uwierzytelnione szyfrowanie z danymi stowarzyszonymi: AES-GCM lub ChaCha20-Poly1305), nie wspiera kompresji, a na serwerze działa tylko z topology subnet. Każde z tych ograniczeń usuwa część elastyczności, która była głównym argumentem za OpenVPN. Szybki OpenVPN to OpenVPN skonfigurowany tak, aby przypominał WireGuard.
Nie ufaj opublikowanym wynikom przepustowości, w tym tym z tej strony. Sufitem na VPS jest zazwyczaj przydział CPU lub przepustowość sieci, a nie sam protokół. Zmierz własne wyniki za pomocą iperf3 uruchomionego przez tunel, a następnie poza nim, i porównaj obie wartości.
Gdzie OpenVPN wciąż znajduje zastosowanie
Wymagane jest wyjście przez port TCP 443. WireGuard działa wyłącznie w oparciu o UDP i nie planuje się wprowadzenia trybu TCP. Sieć hotelowa, która filtruje ruch jedynie na podstawie numeru portu, zazwyczaj przepuści OpenVPN skonfigurowany z użyciem proto tcp-server oraz port 443. Nie należy mylić tego z maskowaniem: OpenVPN przez TCP używa własnego formatowania pakietów, a nie standardowej sesji TLS, więc korporacyjny firewall lub proxy inspekcjonujące bądź terminujące HTTPS może go rozpoznać i zablokować. WireGuard wymaga zewnętrznego narzędzia, takiego jak wstunnel lub udp2raw, aby przejść przez taką sieć, co oznacza konieczność uruchomienia i aktualizowania kolejnego procesu. Należy pamiętać o konflikcie: jeśli serwer WWW zajmuje już port TCP 443 na danym adresie IP, jeden z tych komponentów musi zostać przeniesiony.
Utrzymujesz już własny urząd certyfikacji. OpenVPN uwierzytelnia się za pomocą certyfikatów X.509, więc integruje się z istniejącą infrastrukturą klucza publicznego (PKI). Certyfikaty wygasają automatycznie, a ich unieważnienie odbywa się poprzez dodanie wpisu do listy unieważnień (CRL), którą serwer odczytuje za pomocą crl-verify. WireGuard nie posiada certyfikatów, dat wygaśnięcia ani list unieważnień. Usunięcie klienta wymaga edycji konfiguracji serwera i jej przeładowania. Przy dziesięciu klientach jest to akceptowalne. Przy czterystu, w środowisku wymagającym audytu, model certyfikatów wykonuje znaczną część pracy za administratora.
Wymagani 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, co pozwala na dołączenie LDAP lub drugiego składnika uwierzytelniania w postaci haseł jednorazowych. WireGuard nie posiada pojęcia użytkownika. Klucz albo znajduje się w konfiguracji, albo go nie ma. Jeśli wymaganiem jest, aby „Sara musiała wprowadzić kod z telefonu”, WireGuard nie jest w stanie zrealizować tego samodzielnie.
Wymagana jest warstwa Layer 2 lub klient dla przestarzałych systemów. OpenVPN z dev tap mostkuje ramki Ethernet, co jest istotne dla protokołów rozgłoszeniowych oraz starych gier sieciowych. WireGuard działa wyłącznie w warstwie Layer 3 i tak pozostanie. OpenVPN posiada również klientów dla sprzętu i systemów operacyjnych, które nigdy nie otrzymają aplikacji WireGuard. Oba te powody tracą na znaczeniu, a dev tap jest niekompatybilne z DCO, więc korzystając z mostkowania, wybiera się wolniejszą ścieżkę przetwarzania.
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.keyOdpowiednikiem 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 verboseOpenVPN 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 ze znaczną przewagą, ponieważ WireGuard szyfruje dane w jądrze systemu, podczas gdy OpenVPN 2.6 przesyła każdy pakiet przez proces w przestrzeni użytkownika. W przypadku OpenVPN 2.7 oraz modułu jądra ovpn z systemu Linux 6.16, ścieżka danych również znajduje się w jądrze, co stawia oba rozwiązania w tej samej klasie wydajnościowej. Należy przeprowadzić własne pomiary za pomocą iperf3 przez tunel, zamiast polegać na liczbach z blogów, ponieważ na serwerze VPS ograniczeniem jest zazwyczaj procesor lub limit przepustowości.
Czy WireGuard może działać przez port TCP 443?
Samodzielnie nie. WireGuard z założenia korzysta wyłącznie z protokołu UDP i nie planuje się wprowadzania trybu TCP. Aby przejść przez sieć dopuszczającą tylko ruch TCP 443, należy opakować go w tunel, taki jak wstunnel lub udp2raw, co wymaga uruchomienia i utrzymywania dodatkowego procesu po obu stronach. Jeśli takie ograniczenie jest standardem w środowisku pracy, OpenVPN z opcjami proto tcp-server oraz port 443 stanowi prostsze rozwiązanie w sieciach filtrujących ruch wyłącznie po numerze portu, choć proxy z inspekcją HTTPS nadal może wykryć i zablokować takie połączenie.
Czy OpenVPN jest obecnie niebezpieczny?
Nie. Aktualna wersja OpenVPN z szyfrem AEAD, takim jak AES-256-GCM, oraz włączoną opcją tls-crypt, jest bezpiecznym rozwiązaniem VPN. Przewaga WireGuard wynika z czegoś innego: OpenVPN zawiera znacznie więcej kodu i opcji, co daje zmęczonemu administratorowi wiele możliwości błędnej konfiguracji. Mniejsza liczba opcji oznacza mniej okazji do popełnienia błędu.
Co wybrać do osobistego VPN na serwerze VPS?
WireGuard. Jedna para kluczy na urządzenie, jeden plik konfiguracyjny o długości około dziesięciu linii, jeden otwarty port UDP oraz uzgadnianie połączenia, które kończy się, zanim użytkownik zauważy jego rozpoczęcie. OpenVPN należy wybrać tylko wtedy, gdy regularnie łączy się z sieci blokujących UDP lub gdy konieczne jest dopasowanie do istniejącego urzędu certyfikacji lub katalogu użytkowników.