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

Anton Belov

13 min lekturyTechnologia

Generacje protokołów VPN

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 powstaniaPierwotny cel
PPTP1990–1999Poprowadzić przez internet połączenie modemowe z siecią firmową
L2TP/IPsecOkoło 2000 r.Zastąpić własnościowy PPTP otwartym standardem, a szyfrowanie powierzyć IPsec
OpenVPN2000–2009Dać każdemu systemowi tunel TLS na jednym porcie
IKEv2/IPsec2000–2009Szybciej uzgadniać klucze i utrzymywać sesję przy zmianie sieci
SSTP2000–2009Przechodzić przez sieci, które przepuszczają tylko HTTPS
Shadowsocks2010–2019Pozbawić ruch jakiegokolwiek odcisku palca
WireGuard2010–2019Zachować prosty tunel i kod na tyle mały, by dało się go audytować
VLESS + REALITYOd 2020 r.Wyglądać jak połączenie HTTPS z prawdziwą, znaną stroną
Hysteria2Od 2020 r.Zachować szybkość na łączach, które gubią pakiety, i wyglądać jak HTTP/3
XHTTPOd 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Ekran główny aplikacji Ben's VPN na iPhonie po połączeniu z Niemcami: przycisk Rozłącz pod żółtą literą B oraz przyciski Lokalizacja, Tunel i Wsparcie pod nim
Ty wybierasz lokalizację, a aplikacja dobiera protokół

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.

Tekst

Anton Belov

Pisze o sieciach komputerowych i protokołach VPN.

Wypróbuj przez 3 dni, potem zdecyduj

Okres próbny kosztuje $0.50 i daje dostęp do 187 krajów oraz wszystkich aplikacji. Potem plan odnawia się za $5 miesięcznie. Odnawianie wyłączysz w dowolnej chwili na stronie konta.

Mac App Store App Store Google Play