Protokoły VPN według generacji i 6 kryteriów wyboru

Protokół VPN to zestaw reguł, których przestrzegają aplikacja i serwer. Te reguły obejmują wymianę kluczy, pakowanie ruchu i jego dostarczanie przez inne sieci. Od protokołu zależy, jak szybko nawiązuje się połączenie. Wpływa on też na to, czy połączenie przetrwa przejście z Wi-Fi na internet mobilny. Trzeci czynnik to widoczność VPN dla sieci po drodze. Każdy protokół powstał, aby rozwiązać problem swoich czasów. W latach 90. chodziło o dostęp do sieci firmowej przez modem. Dziś chodzi o dostęp przez sieci, które rozpoznają VPN po pierwszych bajtach. Poniżej protokoły są pogrupowane według generacji, a 6 kryteriów na końcu pomoże ci wybrać jeden z nich.
Protokoły różnią się uzgadnianiem połączenia, transportem i odciskiem palca
O adapterze, tunelu i serwerze piszemy w naszym przewodniku po podstawach VPN. Każdy protokół buduje tunel na swój sposób, a różnice dotyczą 3 elementów.
Uzgadnianie połączenia ustala klucze sesji
Aplikacja i serwer uwierzytelniają się nawzajem i uzgadniają klucze sesji, zanim zaczną przesyłać dane. WireGuard potrzebuje jednej wiadomości w każdą stronę, a IKEv2 – łącznie 4 wiadomości. OpenVPN przeprowadza pełne uzgadnianie połączenia TLS wewnątrz własnego kanału sterującego. Mniej wymian w obie strony oznacza szybsze połączenie na łączach, na których każda odpowiedź przychodzi z opóźnieniem. Typowe przykłady takich łączy to internet satelitarny i przeciążone sieci komórkowe.
Utracone pakiety spowalniają tunel TCP
UDP wysyła każdy pakiet raz i nie sprawdza, czy dotarł. TCP czeka na potwierdzenie odbioru wysłanych danych. Jeśli potwierdzenie nie przyjdzie na czas, TCP wysyła dane ponownie i obniża tempo. W tunelu TCP są 2 takie warstwy, jedna wewnątrz drugiej. Warstwa tunelu ponownie wysyła brakujący pakiet, co zajmuje czas. Tymczasem połączenie przeglądarki wewnątrz tunelu uznaje pakiet za utracony. Wysyła własną kopię i też obniża tempo. W efekcie strony ładują się nierównomiernie, z powtarzającymi się przerwami. Dlatego WireGuard działa tylko przez UDP. Jego twórcy piszą, że WireGuard nie otrzyma trybu TCP, ponieważ tunelowanie TCP w TCP działa źle. Wadą jest to, że WireGuard nie połączy się w sieci, która blokuje UDP.
Sieć widzi odcisk palca, a nie treść
Dostawca internetu nie może odczytać zawartości tunelu. Widzi jednak port, rozmiar pierwszych wiadomości i wszystkie niezaszyfrowane pola nagłówków. Razem te szczegóły tworzą odcisk palca protokołu. Niektóre systemy filtrowania dodatkowo łączą się z podejrzanym serwerem i sprawdzają, jak odpowiada. Starszych protokołów nie projektowano z myślą o takich kontrolach. W nowszych protokołach odcisk palca należy do podstaw konstrukcji.
10 protokołów VPN od lat 90. do dziś
Nowe protokoły nie wyparły starych. PPTP wciąż występuje w oprogramowaniu routerów, a Windows i macOS mają wbudowane L2TP i IKEv2. Tabela pokazuje każdy protokół z dekadą powstania i pierwotnym celem.
| Protokół | Okres powstania | Pierwotny cel |
|---|---|---|
| PPTP | 1990–1999 | Poprowadzić przez internet połączenie modemowe z siecią firmową |
| L2TP/IPsec | Około 2000 r. | Zastąpić własnościowy PPTP otwartym standardem, a szyfrowanie powierzyć IPsec |
| OpenVPN | 2000–2009 | Dać każdemu systemowi tunel TLS na jednym porcie |
| IKEv2/IPsec | 2000–2009 | Szybciej uzgadniać klucze i utrzymywać sesję przy zmianie sieci |
| SSTP | 2000–2009 | Przechodzić przez sieci, które przepuszczają tylko HTTPS |
| Shadowsocks | 2010–2019 | Pozbawić ruch jakiegokolwiek odcisku palca |
| WireGuard | 2010–2019 | Zachować prosty tunel i kod na tyle mały, by dało się go audytować |
| VLESS + REALITY | Od 2020 r. | Wyglądać jak połączenie HTTPS z prawdziwą, znaną stroną |
| Hysteria2 | Od 2020 r. | Zachować szybkość na łączach, które gubią pakiety, i wyglądać jak HTTP/3 |
| XHTTP | Od 2020 r. | Przesyłać dane jako zwykłe żądania HTTP, także przez CDN |
PPTP i L2TP/IPsec pochodzą z czasów połączeń modemowych
PPTP
PPTP zaprojektowano, aby pracownik z modemem mógł połączyć się z siecią firmową przez internet. Tuneluje PPP, czyli protokół, którego używały połączenia modemowe z dostawcą internetu. Jego specyfikację, RFC 2637, opublikowano w 1999 roku. Kanał sterujący działa na porcie TCP 1723, a dane przenosi GRE. GRE nie ma portów, dlatego domowe routery nadal mają ustawienie „PPTP Passthrough”.
Bruce Schneier i Peiter Zatko (Mudge) opisali słabości PPTP w 1998 i 1999 roku. W 2012 roku wystąpienie na konferencji DEF CON pokazało, że przechwycone uwierzytelnienie MS-CHAPv2 sprowadza się do jednego klucza DES. Klucz tej długości można znaleźć metodą siłową w rozsądnym czasie. Klucz szyfrowania MPPE powstaje z tych samych danych uwierzytelniania, więc jego 128 bitów nie zwiększa bezpieczeństwa. Microsoft opublikował potem poradnik zabezpieczeń, który ostrzegał przed używaniem MS-CHAPv2 bez dodatkowej ochrony. Od tamtej pory PPTP nie jest uważany za bezpieczny.
L2TP/IPsec
L2TP (RFC 2661, 1999) łączy pomysły PPTP i protokołu L2F firmy Cisco. L2TP nie ma własnego szyfrowania, dlatego prawie zawsze działa wewnątrz IPsec (RFC 3193, 2001). Każdy pakiet dostaje 2 warstwy: najpierw L2TP, potem IPsec. Obie warstwy dokładają bajty i obie wymagają konfiguracji. Wymiana kluczy korzysta z portu UDP 500, a dane idą przez UDP 4500 lub osobny protokół ESP. Stałe porty sprawiają, że L2TP/IPsec jest dobrze widoczny, a kilka reguł zapory sieciowej go blokuje.
W 2008 roku Microsoft wprowadził SSTP, który przenosi ten sam protokół PPP wewnątrz HTTPS na porcie TCP 443. Z zewnątrz takie połączenie wygląda jak zwykłe przeglądanie stron. Przechodzi przez zapory, które przepuszczają tylko ruch WWW. Spośród systemów na komputery i urządzenia mobilne tylko Windows ma wbudowanego klienta SSTP.
IKEv2, OpenVPN i WireGuard dobrze szyfrują i mają wyraźny odcisk palca
Wszystkie 3 protokoły dobrze chronią dane i bez problemów działają w zwykłej sieci. Ich wspólną słabością jest odcisk palca, który sieć potrafi rozpoznać. W sieciach, które filtrują połączenia VPN, ta słabość ma większe znaczenie niż siła szyfrowania.
IKEv2/IPsec
IKEv2 uzgadnia klucze w 4 wiadomościach, a IKEv1 miał 8 wariantów pierwszej wymiany. Na telefonach i laptopach IKEv2 ceni się za rozszerzenie MOBIKE (RFC 4555). Dzięki MOBIKE laptop może przełączyć się z biurowego Wi-Fi na hotspot w telefonie. Tunel przechodzi na nowy adres bez ponownego uwierzytelniania. iOS, macOS, Windows i Android 11 lub nowszy mają wbudowanego klienta IKEv2. W tych systemach do IKEv2 nie trzeba niczego instalować. Sieci rozpoznają IKEv2 po tych samych portach UDP: 500 i 4500.
OpenVPN
OpenVPN to projekt open source z własnym protokołem, bez RFC. Do uzgadniania połączenia służy TLS, a dane zwykle chroni AES-GCM. OpenVPN działa przez UDP lub TCP na dowolnym porcie, a w rejestrze IANA ma przypisany port 1194. Jest wbudowany w wiele routerów, a ustawienia zwykle dostaje się w jednym pliku .ovpn. Słabym punktem jest nagłówek, który OpenVPN dodaje do każdego pakietu. Typ wiadomości w tym nagłówku nie jest szyfrowany, a każda sesja zaczyna się tak samo. W 2022 roku badacze sprawdzili to w sieci prawdziwego dostawcy internetu. Wykryli OpenVPN w tym ruchu, nie odszyfrowując ani jednego bajtu.
WireGuard
Jason Donenfeld przedstawił protokół WireGuard na konferencji NDSS w 2017 roku. W 2020 roku WireGuard trafił do jądra Linuksa w wersji 5.6. Korzysta z jednego stałego zestawu szyfrów (Curve25519, ChaCha20-Poly1305 i BLAKE2s w uzgadnianiu Noise). Dlatego nie da się przez pomyłkę wybrać słabej opcji. Serwer nie odpowiada na pakiety bez prawidłowego klucza. Z zewnątrz nic nie wskazuje, że pod tym adresem jest serwer.
Ruch klienta ma jednak wyraźny odcisk palca. Pierwsza wiadomość uzgadniania zawsze ma 148 bajtów, a odpowiedź zawsze ma 92 bajty. Typ wiadomości jest przesyłany jawnym tekstem. Strona projektu WireGuard podaje, że protokół nie skupia się na maskowaniu ruchu. Maskowanie zostawiono osobnej warstwie nad protokołem WireGuard. WireGuard dobrze działa w otwartych sieciach, a w sieciach z filtrowaniem szybko zostaje wykryty.
VLESS + REALITY, XHTTP, Hysteria2 i Shadowsocks ukrywają odcisk palca VPN
Te protokoły powstały z myślą o sieciach, które wykrywają i blokują połączenia VPN. Szyfrują równie mocno jak protokoły opisane wyżej. Ich głównym celem jest jednak odcisk palca zbliżony do odcisku zwykłego ruchu. Z założenia działają jak proxy, a aplikacja VPN kieruje przez nie cały ruch z urządzenia. Czym różnią się te dwa rozwiązania, wyjaśnia nasze porównanie VPN i proxy.
VLESS + REALITY
VLESS to zwięzły protokół rozwijany dziś przez projekt Xray. Przekazuje serwerowi identyfikator klienta i adres docelowy. Szyfrowanie danych zwykle zostawia się warstwie TLS. REALITY sprawia, że połączenie wygląda jak wizyta na prawdziwej, cudzej stronie. W pierwszym pakiecie obserwator widzi nazwę tej strony. Potem następuje zwykłe uzgadnianie połączenia TLS 1.3, a certyfikat jest w nim już zaszyfrowany. Serwer nie potrzebuje własnej domeny ani własnego certyfikatu. System filtrowania, który łączy się z serwerem bez klucza, dostaje odpowiedź od prawdziwej strony. REALITY przekazuje takie połączenia bezpośrednio do tej strony.
XHTTP
XHTTP to transport w Xray, a jego wczesne wersje nazywały się SplitHTTP. Dzieli dane na części i przenosi je wewnątrz żądań HTTP. W jednym z trybów wysyłane dane idą jako seria żądań POST. W tym samym trybie pobierane dane wracają jako jedna długa odpowiedź na żądanie GET. Serwer proxy HTTP lub sieć dostarczania treści (CDN) widzi w tym zwykły ruch WWW. Dlatego serwer może działać za cudzą infrastrukturą, tak jak wiele stron internetowych.
Hysteria2
Hysteria2 działa na QUIC (RFC 9000), czyli na transporcie opartym na UDP, z którego korzysta HTTP/3. W chwili połączenia klient podaje przepustowość swojego łącza. Hysteria2 wysyła dane w tym tempie i nie obniża go, gdy powtarza utracone pakiety. To pomaga na łączach z częstą utratą pakietów, na przykład w internecie mobilnym w pociągu. Odwiedzający bez hasła widzi zwykłą stronę HTTP/3. Zależnie od ustawień serwer zwraca stronę 404, pliki lub inną witrynę. Hysteria2 nie zadziała w sieci bez UDP.
Shadowsocks
Shadowsocks pojawił się w 2012 roku i jest najstarszym oraz najprostszym z tych 4 protokołów. Od pierwszego bajtu to szyfrowane proxy bez nagłówków i bez rozpoznawalnego uzgadniania połączenia. Outline, projekt Jigsaw, na którym zbudowano aplikację Ben's VPN, działa na Shadowsocks. Pozostałe 3 protokoły z tej grupy naśladują odcisk palca zwykłego ruchu WWW. Ruch Shadowsocks nie przypomina natomiast żadnego znanego protokołu. Taki brak jakiegokolwiek wzorca też jest odciskiem palca. W 2023 roku badacze opisali system filtrowania, który blokował takie połączenia po kilku prostych testach. Testy sprawdzały tylko pierwszy pakiet. Dlatego w sieciach z silnym filtrowaniem sam Shadowsocks to za mało.
6 kryteriów wyboru protokołu
Żaden protokół VPN nie pasuje do każdej sytuacji, a właściwy zależy od twojej sieci i zadania. Sprawdzaj kryteria po kolei, od góry do dołu. Pierwsze kryterium, które cię dotyczy, zwykle przesądza o wyborze protokołu.
Najpierw decyduje właściciel serwera
W sieci służbowej lub szkolnej użyj profilu od administratora. Na własnym serwerze najprościej skonfigurować WireGuard. Potrzebuje tylko pary kluczy i krótkiego pliku konfiguracyjnego. Usługa VPN zwykle zostawia wybór protokołu swojej aplikacji.
Sieci z filtrowaniem wykluczają IKEv2, OpenVPN i WireGuard
Sieć, która szuka odcisków palców VPN, wykrywa IKEv2, OpenVPN i WireGuard. W takiej sieci wybierz protokoły, które wyglądają jak zwykły ruch, na przykład VLESS + REALITY, XHTTP i Hysteria2. W otwartej sieci IKEv2, OpenVPN i WireGuard działają bez problemów.
Sieć bez UDP wymaga protokołu działającego przez TCP
Niektóre zapory w firmach i na uczelniach przepuszczają strony internetowe i nic więcej. Typowy objaw: strony się otwierają, a WireGuard lub IKEv2 w ogóle się nie łączy. W takiej sieci działają między innymi VLESS + REALITY, XHTTP i OpenVPN przez TCP na porcie 443.
Częste zmiany sieci przemawiają za IKEv2 i WireGuard
Telefon wiele razy dziennie przełącza się między Wi-Fi a internetem mobilnym. IKEv2 z MOBIKE utrzymuje tunel przy tych zmianach. WireGuard też sobie z nimi radzi i automatycznie rejestruje nowy adres klienta. Aplikacje usług VPN zwykle łączą się ponownie po każdej zmianie.
Rozmowy i gry lepiej działają przez UDP
W rozmowie mały utracony fragment dźwięku jest prawie niezauważalny. Opóźnienie słychać za to od razu. WireGuard i Hysteria2 to przykłady protokołów UDP, które pasują do rozmów i gier. TCP wstrzymuje wszystkie kolejne dane, dopóki utracony pakiet nie zostanie wysłany ponownie, więc dźwięk się opóźnia.
Router uruchomi tylko to, co obsługuje jego oprogramowanie
Jeśli oprogramowanie routera obsługuje OpenVPN, wybierz go zamiast PPTP. Z PPTP korzystaj tylko wtedy, gdy oprogramowanie nie obsługuje niczego innego. Nawet w takim przypadku używaj go tylko, gdy urządzenie, na przykład telewizor, ma łączyć się przez inny kraj.
Aplikacja Ben's VPN automatycznie wybiera protokół
VLESS + REALITY, XHTTP, Hysteria2 i Shadowsocks to 4 protokoły, z których korzysta aplikacja. Razem z protokołem aplikacja wybiera trasę. Na ekranie nie ma przełącznika protokołu. Wybierasz tylko lokalizację. Dostawca internetu widzi połączenie z serwerem, ale nie ruch wewnątrz niego. Wersje na inne systemy znajdziesz na stronie z aplikacjami VPN.

Gdy połączenie działa źle, aplikacja pokazuje baner „Słabe połączenie” z przyciskiem „Napraw problem”. Stuknij go, aby zobaczyć 2 opcje: inną lokalizację albo wyszukanie działającego serwera. Wyszukiwanie ponownie sprawdza serwer i uzyskuje nowe adresy IP. Jeśli to nie pomoże, aplikacja włącza multihop przez serwer pośredni w trzecim kraju. Całe wyszukiwanie trwa do 2 minut. Ten sam przycisk „Znajdź działający serwer” jest też w zakładce „Mój profil” → „Ustawienia”.
Aplikacja Ben's VPN może działać bezpośrednio na routerach Keenetic, OpenWrt i MikroTik. Pozostałe routery mogą korzystać tylko z protokołów, które obsługuje ich oprogramowanie. Dla nich na stronie konta są ustawienia PPTP i OpenVPN w sekcji „Router” → „Other routers”. Login i hasło są wspólne dla obu protokołów. Te dane logowania działają naraz tylko na jednym routerze. Strona o konfiguracji routera opisuje każdy krok.
Pytania i odpowiedzi
Czym jest maskowanie ruchu VPN i czym różni się od szyfrowania?
Szyfrowanie ukrywa treść. Bez klucza nikt nie odczyta pakietów. Maskowanie ukrywa sam fakt, że połączenie to VPN. Upodabnia rozmiar, kolejność i postać pakietów do zwykłego ruchu. WireGuard dobrze szyfruje, ale nie maskuje swojego ruchu. REALITY i Hysteria2 dodają maskowanie do szyfrowania.
Czy na własnym serwerze lepiej uruchomić WireGuard, czy OpenVPN?
W sieci, która przepuszcza UDP i połączenia VPN, WireGuard jest prostszy w konfiguracji i szybciej się łączy. OpenVPN jest bardziej elastyczny i działa przez UDP lub TCP na dowolnym porcie. Ta elastyczność pomaga w sieciach, które przepuszczają tylko TCP. W sieci z filtrowaniem oba protokoły zostają wykryte po odciskach palców.
Czy multihop to osobny protokół?
Nie, multihop to trasa, a nie protokół. Ruch najpierw trafia do serwera pośredniego w trzecim kraju. Stamtąd idzie do serwera w wybranej lokalizacji. Multihop zmienia drogę ruchu, a nie jego szyfrowanie. W aplikacji Ben's VPN tryb „Automatycznie” włącza multihop, gdy jest on potrzebny do utrzymania stabilnego połączenia.
Co daje protokół VPN, jeśli strona już korzysta z HTTPS?
HTTPS szyfruje zawartość strony, ale sieć nadal widzi, jaką stronę otwierasz. Widzi adres IP strony i jej nazwę na początku połączenia. Protokół VPN ukrywa również te informacje. Dostawca internetu widzi wtedy tylko połączenie z serwerem. Za serwerem żądanie trafia do strony już poza tunelem. Na tym odcinku HTTPS nadal chroni żądanie.








