Co to jest VLESS: protokół, któremu szyfrowanie zapewnia TLS lub REALITY

Każde połączenie VLESS zaczyna się od krótkiego nagłówka, który zawiera twój identyfikator i adres docelowy. Sam protokół niczego nie szyfruje ani nie maskuje. To zadanie warstwy pod nim, czyli TLS lub REALITY. Dlatego o VLESS rzadko mówi się bez którejś z nich. Artykuł omawia nagłówek, zmiany względem VMess, transporty i REALITY. Wymienia też zawartość klucza VLESS i wyjaśnia, jak Ben's VPN korzysta z tego protokołu.
Nagłówek VLESS zawiera UUID, polecenie i adres
VLESS to protokół połączeń między klientem a serwerem proxy. Na początku każdego połączenia jest nagłówek żądania, a zaraz po nim idą twoje dane. Nagłówek żądania składa się z pól wymienionych poniżej.
- Wersja protokołu.
- UUID, czyli twój identyfikator na serwerze, na przykład
8b71f62c-7736-4334-ab2f-032d2115d2fd. Służy też jako hasło, ponieważ serwer przyjmuje tylko UUID ze swojej listy. - Dodatki, czyli dodatkowe ustawienia, na przykład opisany niżej tryb flow.
- Polecenie, czyli żądanie strumienia TCP, pakietów UDP lub kilku strumieni w jednym połączeniu (Mux).
- Port i adres docelowy. Adres może mieć postać IPv4, IPv6 lub nazwy domeny.
Do danych, które następują po nagłówku, VLESS niczego nie dodaje. Serwer odpowiada jeszcze krótszym nagłówkiem, w którym są tylko wersja i dodatki. Nagłówek żądania nie ma znacznika czasu ani pola szyfru, a VLESS nie szyfruje też samego nagłówka. To główna różnica między VLESS a VMess.
Pierwsza wersja VLESS pojawiła się w V2Ray latem 2020 roku. Od końca tamtego roku protokół rozwija się głównie w Xray-core, forku V2Ray. Obsługują go też inne rdzenie, na przykład sing-box. Ściśle mówiąc, sam VLESS jest protokołem proxy. VPN na telefonie lub komputerze powstaje wtedy, gdy aplikacja kieruje przez VLESS cały ruch urządzenia. Oba rozwiązania szczegółowo porównujemy w artykule o tym, czym VPN różni się od proxy.
VLESS rezygnuje z szyfru i kontroli zegara znanych z VMess
VMess, starszy protokół z V2Ray, szyfruje dane własnym szyfrem: ChaCha20-Poly1305 lub AES-128-GCM. Przy uwierzytelnianiu połączenia sprawdza zarówno UUID, jak i bieżący czas. Według dokumentacji Xray zegary klienta i serwera mogą odbiegać od dokładnego czasu najwyżej o 2 minuty. Z tych 2 kontroli w VLESS została tylko kontrola UUID. W standardowej konfiguracji VLESS niczego nie szyfruje. Pole decryption na serwerze i pole encryption w kliencie mają wartość none. Zegar nie wpływa na połączenie VLESS.
Tabela pokazuje różnicę w 3 sytuacjach. W 2 pierwszych oba protokoły działają wewnątrz TLS.
| Sytuacja | VMess | VLESS |
|---|---|---|
| Zegar w telefonie spieszy się o 5 minut | Serwer odrzuca połączenie | Serwer przyjmuje połączenie |
| Otwierasz przez tunel stronę HTTPS | 3 warstwy szyfrowania (strona, VMess i zewnętrzny TLS) | 2 warstwy szyfrowania (strona i zewnętrzny TLS) |
| Połączenie nie ma zewnętrznego TLS | VMess nadal szyfruje dane własnym szyfrem | Każdy obserwator na trasie widzi UUID i adresy docelowe |
Wewnątrz TLS szyfr VMess tylko obciąża procesor i szybciej rozładowuje baterię. VLESS tego narzutu nie ma. Przy włączonym trybie flow zewnętrzny TLS przestaje ponownie szyfrować dane po uzgodnieniu połączenia ze stroną. W 2025 roku Xray dodał do VLESS opcjonalny wbudowany szyfr, VLESS Encryption. Jest przeznaczony do konfiguracji bez zewnętrznego TLS. Pasuje też do konfiguracji, w których TLS kończy się przed serwerem, na przykład w sieci CDN. Konfiguracja z REALITY nie potrzebuje VLESS Encryption.
Wygląd ruchu VLESS zależy od transportu
Ruch VLESS idzie wewnątrz transportu, a obserwator w sieci widzi właśnie ten transport. Xray ma dla VLESS kilka transportów. Poniżej są 4 główne.
- RAW, w starszych konfiguracjach nazywany tcp. To zwykłe połączenie TCP. Z warstwą TLS lub REALITY wygląda jak typowy ruch HTTPS.
- XHTTP, dawniej SplitHTTP. Rozkłada strumień na zwykłe żądania i odpowiedzi HTTP/1.1, HTTP/2 lub HTTP/3. XHTTP działa też przez CDN. Dla obserwatora wygląda jak aplikacja internetowa, która stale wysyła żądania do swojego serwera.
- gRPC. Ruch płynie jako zdalne wywołania procedur przez HTTP/2, tak jak wiele aplikacji wymienia dane z API.
- WebSocket. Długotrwałe połączenie, jakiego używają czaty internetowe i gry przeglądarkowe. Ten transport też działa przez CDN.
REALITY działa z RAW, XHTTP i gRPC, ale nie z WebSocket.
Serwer REALITY nie potrzebuje domeny ani certyfikatu
Zwykły TLS wymaga, aby serwer miał nazwę domeny i pasujący do niej certyfikat. Warstwa REALITY, wprowadzona w Xray-core 1.8.0 wiosną 2023 roku, nie potrzebuje ani jednego, ani drugiego. Podczas uzgadniania połączenia serwer posługuje się tożsamością prawdziwej, cudzej strony, czyli strony docelowej. Poniższe kroki pokazują, jak serwer obsługuje 2 rodzaje połączeń.
- Twój klient zaczyna uzgadnianie połączenia TLS tak, jak zrobiłaby to popularna przeglądarka. Jego pierwszy komunikat, ClientHello, podaje nazwę strony docelowej. ClientHello zawiera też znacznik, który może sprawdzić tylko posiadacz klucza prywatnego serwera. Częścią znacznika jest krótki identyfikator o nazwie shortId.
- Serwer sprawdza znacznik. Jeśli znacznik jest poprawny, serwer sam kończy uzgadnianie połączenia, a następnie płyną dane VLESS.
- Skaner lub dowolny inny odwiedzający wysyła zwykłe ClientHello bez znacznika. Serwer nie odpowiada mu bezpośrednio. Zamiast tego przekazuje połączenie do strony docelowej, która odpowiada swoim prawdziwym certyfikatem i treścią.
Strona docelowa musi obsługiwać TLS 1.3 i HTTP/2. REALITY opiera się na parze kluczy X25519. Klucz prywatny zostaje na serwerze, a klient dostaje klucz publiczny.
Klucz VLESS zawiera wszystkie ustawienia połączenia
Klucz VLESS, który wydaje usługa lub administrator serwera, to jeden długi ciąg znaków. Zawiera wszystko, czego klient potrzebuje do połączenia.
- Adres i port serwera.
- Twój UUID, który służy jako hasło.
- Transport i warstwa zabezpieczeń (TLS lub REALITY).
- Nazwa strony, którą klient wysyła podczas uzgadniania połączenia (SNI).
- Dla REALITY: klucz publiczny serwera i shortId.
- Odcisk palca przeglądarki, który klient naśladuje w swoim ClientHello.
- Tryb flow, zwykle
xtls-rprx-vision. Gdy w tunelu idzie inne połączenie TLS, ten tryb ukrywa typowe rozmiary pakietów podczas jego uzgadniania. Po uzgodnieniu połączenia nie szyfruje ponownie tego, co strona już zaszyfrowała. - Nazwa, po której rozpoznasz klucz na liście.
Taki serwer możesz też uruchomić samodzielnie na wynajętym VPS. Wtedy konfiguracja i aktualizacje rdzenia należą do ciebie. Gdy stary adres zostanie zablokowany, trzeba też przenieść serwer pod nowy adres. Więcej o tym, czym wynajem serwera różni się od płacenia za VPN, piszemy w porównaniu VPS i VPN.
Adres serwera pozostaje widoczny dla dostawcy internetu
VLESS z REALITY ukrywa treść połączenia, ale nie to, jaki serwer jest po drugiej stronie. Dostawca internetu nadal widzi połączenie z tym serwerem. Widzi adres serwera, czas aktywności połączenia i liczbę bajtów przesłanych w każdym kierunku. Jeśli ten adres zostanie zablokowany, żadne ustawienie protokołu nie przywróci połączenia. Potrzebny jest wtedy serwer pod innym adresem.
Niektóre sieci przepuszczają ruch tylko do zatwierdzonych adresów z listy. Serwer spoza tej listy pozostaje nieosiągalny, niezależnie od tego, jak dobrze zamaskowano protokół. W takich sieciach ruch musi iść inną trasą.
Aplikacja Ben's VPN wybiera protokół i nie potrzebuje klucza
Aplikacja Ben's VPN ma 4 sposoby połączenia (VLESS + REALITY, XHTTP, Hysteria2 i Shadowsocks). Wybiera spośród nich automatycznie. W ustawieniach nie można wymusić żadnego z nich. Wszystkie 4 sposoby porównujemy w przewodniku po protokołach VPN.
Aplikacja nie przyjmuje kluczy VLESS ani z innych usług, ani z własnego serwera. Nie są jej też potrzebne, więc nigdy nie wpisujesz UUID ani klucza. Na telefonie, tablecie lub komputerze zainstaluj aplikację i naciśnij Połącz. Następnie opłać subskrypcję w oknie Kup Ben's VPN. Jeśli masz już subskrypcję, zaloguj się w tym samym oknie. Pliki do pobrania na każdą platformę są na naszej stronie z aplikacjami.
Przy złej jakości połączenia aplikacja może pokazać baner Słabe połączenie z przyciskiem Napraw problem. Przycisk proponuje 2 rozwiązania: zmianę lokalizacji lub wyszukanie działającego serwera. Wyszukiwanie jest też dostępne jako przycisk Znajdź działający serwer w zakładce Mój profil → Ustawienia. Sprawdza ono ponownie serwer i przydziela mu nowe adresy IP. Jeśli nic innego nie pomaga, włącza multihop. Całe wyszukiwanie trwa najwyżej 2 minuty.
Pytania i odpowiedzi
Czy do uruchomienia VLESS potrzebuję własnej domeny?
Z REALITY nie potrzebujesz domeny. Serwer posługuje się tożsamością cudzej strony docelowej, więc nie potrzebuje własnego certyfikatu. Domena i certyfikat są potrzebne, gdy VLESS działa wewnątrz zwykłego TLS lub za CDN.
Po co uruchamiać serwer VLESS na porcie 443?
Port 443 to standardowy port HTTPS. Połączenie TLS lub REALITY na tym porcie wygląda jak zwykłe przeglądanie stron. Na nietypowym porcie to samo połączenie odróżniałoby się od większości pozostałego ruchu. Sam protokół VLESS działa na dowolnym porcie.
Czym VLESS różni się od Hysteria2?
VLESS zwykle idzie przez TCP wewnątrz TLS lub REALITY. Hysteria2 opiera się na QUIC, więc działa przez UDP. Z zewnątrz ruch Hysteria2 wygląda jak HTTP/3. Dlatego każdy z tych protokołów jest wrażliwy na inne ograniczenia sieci. Sieć, która blokuje lub spowalnia UDP, utrudnia działanie Hysteria2, ale nie VLESS przez TCP. Ben's VPN ma oba protokoły, a aplikacja wybiera między nimi.
Czy REALITY ukrywa adres IP serwera?
Nie. REALITY maskuje uzgadnianie połączenia, ale nie adres serwera. Obserwator w sieci widzi, z którym serwerem łączy się twoje urządzenie. Gdy ten adres zostanie zablokowany, potrzebny jest serwer pod nowym adresem.
Czy mogę dodać własny klucz VLESS do aplikacji Ben's VPN?
Nie. W aplikacji nie działają klucze VLESS z innych usług ani z własnego serwera. Aplikacja łączy się z serwerami Ben's VPN i automatycznie wybiera protokół.








