Протоколи VPN за поколіннями та 6 перевірок для вибору

Протокол VPN — це набір правил, яких дотримуються застосунок і сервер. Вони охоплюють обмін ключами, пакування трафіку та його доставку через інші мережі. Протокол визначає, як швидко встановлюється підключення. Від нього залежить і те, чи збережеться підключення після переходу з Wi-Fi на мобільний інтернет. Третій чинник — наскільки помітне VPN-підключення для мережі між застосунком і сервером. Кожен протокол створювали для завдання свого часу. У 1990-х таким завданням був модемний доступ до офісної мережі. Сьогодні це доступ через мережі, які розпізнають VPN за першими байтами. Нижче протоколи згруповано за поколіннями, а 6 перевірок наприкінці допоможуть вибрати потрібний.
Протоколи відрізняються рукостисканням, транспортом і відбитком
Адаптер, тунель і сервер описано в нашій статті про основи VPN. Кожен протокол будує тунель по-своєму, а відмінності стосуються 3 частин.
Рукостискання задає ключі сеансу
Застосунок і сервер перевіряють один одного й узгоджують ключі сеансу ще до передавання даних. Для WireGuard достатньо одного повідомлення в кожен бік, для IKEv2 потрібно 4 повідомлення загалом. OpenVPN виконує повне рукостискання TLS усередині власного каналу керування. Що менше обмінів туди й назад, то швидше підключення на каналах, де кожна відповідь приходить повільно. Типові приклади таких каналів — супутниковий інтернет і перевантажені мобільні мережі.
Втрачені пакети сповільнюють тунель поверх TCP
UDP надсилає кожен пакет один раз і не перевіряє, чи він дійшов. TCP чекає, поки отримувач підтвердить надіслані дані. Якщо підтвердження не надходить вчасно, TCP надсилає дані ще раз і знижує темп. Тунель поверх TCP складається з 2 таких шарів, вкладених один в інший. Шар тунелю повторно надсилає втрачений пакет, і на це потрібен час. Тим часом з’єднання браузера всередині тунелю вважає цей пакет втраченим. Воно надсилає власну копію й теж знижує темп. У результаті сторінки завантажуються нерівномірно, з повторюваними паузами. Тому WireGuard працює лише поверх UDP. Його розробники заявляють, що режиму TCP у WireGuard не буде, бо TCP поверх TCP працює погано. Недолік цього рішення в тому, що в мережі, яка блокує UDP, WireGuard не підключиться.
Мережа бачить відбиток, а не вміст
Провайдер не може прочитати вміст тунелю. Він бачить порт, розмір перших повідомлень і незашифровані поля заголовків, якщо вони є. Разом ці ознаки утворюють відбиток протоколу. Деякі системи фільтрації також зондують підозрілий сервер і перевіряють, як він відповідає. Старі протоколи проєктували, не враховуючи таких перевірок. У новіших протоколах відбиток — частина базової конструкції.
10 протоколів VPN від 1990-х до 2020-х
Нові протоколи не витіснили старі. PPTP досі є в прошивках роутерів, а у Windows і macOS вбудовано L2TP та IKEv2. У таблиці для кожного протоколу вказано десятиліття появи й початкове призначення.
| Протокол | Поява | Для чого створено |
|---|---|---|
| PPTP | 1990-ті | Провести модемне підключення до офісної мережі через інтернет |
| L2TP/IPsec | Близько 2000 року | Замінити пропрієтарний PPTP відкритим стандартом і доручити шифрування IPsec |
| OpenVPN | 2000-ні | Дати будь-якій системі тунель TLS на одному порту |
| IKEv2/IPsec | 2000-ні | Швидше узгоджувати ключі й зберігати сеанс, коли змінюється мережа |
| SSTP | 2000-ні | Проходити крізь мережі, які пропускають лише HTTPS |
| Shadowsocks | 2010-ті | Залишити трафік без жодного відбитка |
| WireGuard | 2010-ті | Зробити тунель простим, а код — достатньо малим для аудиту |
| VLESS + REALITY | 2020-ті | Виглядати як з’єднання HTTPS зі справжнім відомим сайтом |
| Hysteria2 | 2020-ті | Зберігати швидкість на каналах із втратами пакетів і виглядати як HTTP/3 |
| XHTTP | 2020-ті | Передавати дані звичайними запитами HTTP, зокрема через CDN |
PPTP і L2TP/IPsec походять із часів модемного доступу
PPTP
PPTP створили, щоб працівник із модемом міг підключатися до офісної мережі через інтернет. Він тунелює PPP — протокол, на якому працювали модемні підключення до провайдера. Специфікацію PPTP, RFC 2637, опубліковано в 1999 році. Канал керування працює на порту TCP 1723, а дані йдуть усередині GRE. У GRE немає портів, тому в домашніх роутерах досі є налаштування «PPTP Passthrough».
У 1998 і 1999 роках Брюс Шнаєр і Пейтер Затко (Mudge) описали вразливості PPTP. У 2012 році доповідь на DEF CON показала, що перехоплена автентифікація MS-CHAPv2 залежить від одного ключа DES. Такий ключ можна підібрати перебором за прийнятний на практиці час. Ключ шифрування MPPE виводиться з тих самих даних автентифікації, тому його 128 бітів не додають захисту. Після цього Microsoft опублікувала рекомендацію щодо безпеки, яка застерігала від використання MS-CHAPv2 без додаткового захисту. Відтоді PPTP не вважають безпечним.
L2TP/IPsec
L2TP (RFC 2661, 1999) поєднує ідеї PPTP та протоколу L2F від Cisco. Власного шифрування в L2TP немає, тому він майже завжди працює всередині IPsec (RFC 3193, 2001). Кожен пакет отримує 2 шари — спочатку L2TP, потім IPsec. Обидва шари додають байти, і обидва потребують налаштування. Обмін ключами йде через порт UDP 500, а дані — через UDP 4500 або окремий протокол ESP. Фіксовані порти роблять цю пару помітною, і кількох правил брандмауера досить, щоб її заблокувати.
У 2008 році Microsoft представила SSTP, який передає той самий PPP всередині HTTPS на порту TCP 443. Ззовні таке з’єднання схоже на звичайний перегляд сайтів. Воно проходить крізь брандмауери, які пропускають лише вебтрафік. Серед настільних і мобільних систем клієнт SSTP вбудовано лише у Windows.
IKEv2, OpenVPN і WireGuard добре шифрують і мають чіткі відбитки
Усі 3 протоколи добре захищають дані й без проблем працюють у звичайній мережі. Їхня спільна слабкість — відбиток, який мережа може розпізнати. У мережах, що фільтрують VPN-підключення, ця слабкість важить більше, ніж стійкість шифрування.
IKEv2/IPsec
IKEv2 узгоджує ключі за 4 повідомлення, а в IKEv1 було 8 варіантів першого обміну. На телефонах і ноутбуках IKEv2 цінують за розширення MOBIKE (RFC 4555). З MOBIKE ноутбук може перейти з офісного Wi-Fi на точку доступу телефона. Тунель переноситься на нову адресу без повторної автентифікації. Вбудований клієнт IKEv2 є в iOS, macOS, Windows і Android 11 або новішому. На цих системах для IKEv2 нічого встановлювати не потрібно. Мережі розпізнають IKEv2 за тими самими портами UDP — 500 і 4500.
OpenVPN
OpenVPN — проєкт із відкритим кодом і власним протоколом, без RFC. Для рукостискання він використовує TLS, а дані зазвичай захищає AES-GCM. OpenVPN працює поверх UDP або TCP на будь-якому порту, а в реєстрі IANA за ним закріплено порт 1194. Його вбудовано в багато роутерів, де налаштування зазвичай містяться в одному файлі .ovpn. Слабке місце — заголовок, який OpenVPN додає до кожного пакета. Тип повідомлення в цьому заголовку не зашифровано, а кожен сеанс починається однаково. У 2022 році дослідники перевірили це в мережі реального провайдера. Вони виявили OpenVPN у цьому трафіку, не розшифрувавши жодного байта.
WireGuard
Джейсон Доненфельд представив WireGuard на конференції NDSS у 2017 році. У 2020 році WireGuard увійшов до ядра Linux версії 5.6. Протокол використовує один фіксований набір шифрів (Curve25519, ChaCha20-Poly1305 і BLAKE2s у рукостисканні Noise). Тож помилково вибрати слабкий варіант неможливо. Сервер не відповідає на пакети без правильного ключа. Ззовні нічого не вказує на те, що там є сервер.
Проте трафік клієнта має чіткий відбиток. Перше повідомлення рукостискання завжди займає 148 байтів, а відповідь — 92 байти. Тип повідомлення передається відкритим текстом. На сайті WireGuard сказано, що протокол не зосереджується на маскуванні. Маскування покладено на окремий шар поверх WireGuard. У відкритих мережах WireGuard працює добре, а в мережах із фільтрацією його швидко виявляють.
VLESS + REALITY, XHTTP, Hysteria2 і Shadowsocks приховують відбиток VPN
Ці протоколи створено для мереж, які розпізнають і блокують VPN-підключення. Їхнє шифрування так само стійке, як у протоколів вище. Однак головна їхня мета — відбиток, близький до відбитка звичайного трафіку. За принципом роботи це проксі, а VPN-застосунок спрямовує через них увесь трафік пристрою. Наше порівняння VPN і проксі пояснює, у чому між ними різниця.
VLESS + REALITY
VLESS — компактний протокол. Сьогодні його розвиває проєкт Xray. Він передає серверу ідентифікатор клієнта й адресу призначення. Шифрування даних зазвичай покладено на TLS. REALITY робить з’єднання схожим на відвідування справжнього стороннього сайту. У першому пакеті спостерігач бачить ім’я цього сайту. Далі йде звичайне рукостискання TLS 1.3, і сертифікат у ньому вже зашифровано. Серверу не потрібні власні домен і сертифікат. Система фільтрації, яка зондує сервер без ключа, отримує відповідь від справжнього сайту. REALITY пересилає такі з’єднання напряму на цей сайт.
XHTTP
XHTTP — транспорт у складі Xray. Його ранні версії називалися SplitHTTP. Він ділить дані на частини й передає їх усередині запитів HTTP. В одному з режимів дані від клієнта йдуть серією запитів POST. У тому самому режимі дані до клієнта повертаються однією довгою відповіддю на запит GET. HTTP-проксі або мережа доставки контенту (CDN) сприймає це як звичайний вебтрафік. Тому сервер може працювати за сторонньою інфраструктурою, як і багато сайтів.
Hysteria2
Hysteria2 працює поверх QUIC (RFC 9000) — транспорту на основі UDP, на якому побудовано HTTP/3. Під час підключення клієнт повідомляє пропускну здатність свого каналу. Hysteria2 передає дані в цьому темпі й повторно надсилає втрачені пакети, не знижуючи його. Це допомагає на каналах із частими втратами пакетів, наприклад у мобільному інтернеті в поїзді. Відвідувач без пароля бачить звичайний сайт на HTTP/3. Залежно від налаштувань сервер повертає сторінку 404, файли або інший сайт. У мережі без UDP Hysteria2 працювати не може.
Shadowsocks
Shadowsocks з’явився в 2012 році. Це найстаріший і найпростіший із цих 4 протоколів. Від першого байта він працює як зашифрований проксі без заголовків і без упізнаваного рукостискання. На Shadowsocks працює Outline — проєкт Jigsaw, на якому побудовано застосунок Ben's VPN. Інші 3 протоколи цієї групи копіюють відбиток звичайного вебтрафіку. Трафік Shadowsocks, навпаки, не схожий на жоден відомий протокол. Відсутність будь-яких закономірностей — теж відбиток. У 2023 році дослідники описали систему фільтрації, яка блокувала такі з’єднання після кількох простих перевірок. Перевірки стосувалися лише першого пакета. Тому в мережах із жорсткою фільтрацією самого Shadowsocks недостатньо.
6 перевірок для вибору протоколу
Жоден протокол VPN не підходить для всіх випадків. Вибір залежить від мережі й завдання. Проходьте перевірки по черзі, згори донизу. Зазвичай протокол визначає перша перевірка, яка стосується вас.
Першим вирішує власник сервера
У робочій чи навчальній мережі користуйтеся профілем від адміністратора. Для власного сервера найпростіше налаштувати WireGuard. Йому потрібні лише пара ключів і короткий файл конфігурації. VPN-сервіс зазвичай залишає вибір протоколу своєму застосунку.
Мережі з фільтрацією відсікають IKEv2, OpenVPN і WireGuard
Мережа, яка шукає відбитки VPN, розпізнає IKEv2, OpenVPN і WireGuard. У відкритій мережі всі 3 протоколи працюють без проблем. А в мережі з фільтрацією користуйтеся протоколами, схожими на звичайний трафік, наприклад VLESS + REALITY, XHTTP і Hysteria2.
У мережі без UDP потрібен протокол на TCP
Деякі брандмауери компаній і університетів пропускають сайти й більше нічого. Типова ознака — сторінки відкриваються, а WireGuard чи IKEv2 так і не підключається. Там працюють, зокрема, VLESS + REALITY, XHTTP і OpenVPN поверх TCP на порту 443.
Для частої зміни мереж підходять IKEv2 і WireGuard
Телефон за день багато разів перемикається між Wi-Fi і мобільним інтернетом. IKEv2 з MOBIKE зберігає тунель під час цих перемикань. WireGuard теж витримує перемикання й автоматично запам’ятовує нову адресу клієнта. Застосунки VPN-сервісів зазвичай перепідключаються після кожного перемикання.
Дзвінки та ігри краще працюють поверх UDP
Під час дзвінка втрату невеликого фрагмента звуку майже не чути. Затримку, навпаки, помітно одразу. WireGuard і Hysteria2 — приклади протоколів на UDP, які підходять для дзвінків та ігор. TCP затримує всі наступні дані, доки втрачений пакет не надішлють повторно, тому звук відстає.
Роутер запускає лише те, що підтримує його прошивка
Якщо в прошивці є OpenVPN, виберіть його, а не PPTP. Використовуйте PPTP, лише коли прошивка не підтримує нічого іншого. Навіть тоді вмикайте його, тільки якщо пристрою на кшталт телевізора потрібна інша країна.
Застосунок Ben's VPN вибирає протокол автоматично
VLESS + REALITY, XHTTP, Hysteria2 і Shadowsocks — 4 протоколи, які є в застосунку. Разом із протоколом застосунок вибирає й маршрут. Перемикача протоколів на екрані немає. Ви вибираєте лише локацію. Провайдер бачить з’єднання із сервером, але не трафік усередині нього. Версії для інших систем зібрано на сторінці VPN-застосунків.

Коли з’єднання погане, застосунок показує банер «Поганий звʼязок» із кнопкою «Виправити». Натисніть її, щоб побачити 2 варіанти: іншу локацію або пошук робочого сервера. Пошук ще раз перевіряє сервер і отримує нові IP-адреси. Якщо це не допомагає, застосунок вмикає мультихоп через проміжний сервер у третій країні. Увесь пошук триває до 2 хвилин. Кнопка «Знайти робочий сервер» є також на вкладці «Акаунт» → «Налаштування».
Keenetic, OpenWrt і MikroTik можуть запускати застосунок Ben's VPN на самому роутері. Інші роутери обмежені протоколами своєї прошивки. Для них в особистому кабінеті є налаштування PPTP і OpenVPN у розділі «Router» → «Other routers». Ті самі ім’я користувача й пароль підходять для обох протоколів. Одночасно вони діють лише на одному роутері. Покрокову інструкцію наведено на сторінці налаштування роутера.
Питання й відповіді
Що таке маскування VPN-трафіку й чим воно відрізняється від шифрування?
Шифрування приховує вміст, і без ключа пакети ніхто не прочитає. Маскування приховує сам факт, що з’єднання — це VPN. Воно робить розмір, порядок і форму пакетів схожими на звичайний трафік. WireGuard добре шифрує, але не маскує свій трафік. REALITY та Hysteria2 додають маскування поверх шифрування.
Що запустити на власному сервері: WireGuard чи OpenVPN?
У мережі, яка пропускає UDP та VPN, WireGuard простіше налаштувати, і він швидше підключається. OpenVPN гнучкіший і працює поверх UDP або TCP на будь-якому порту. Ця гнучкість допомагає в мережах, які пропускають лише TCP. У мережі з фільтрацією обидва протоколи виявляють за їхніми відбитками.
Мультихоп — це окремий протокол?
Ні, мультихоп — це маршрут, а не протокол. Трафік спочатку йде на проміжний сервер у третій країні. Звідти він потрапляє на сервер у локації, яку ви вибрали. Мультихоп змінює шлях трафіку, а не його шифрування. У застосунку Ben's VPN режим «Автоматично» вмикає мультихоп, коли це потрібно для стабільного з’єднання.
Що дає протокол VPN, якщо сайт уже працює через HTTPS?
HTTPS шифрує сторінку, але мережа все одно бачить, який сайт ви відкриваєте. Вона бачить IP-адресу сайту і його ім’я на початку з’єднання. Протокол VPN приховує й ці дані. Тоді провайдер бачить лише з’єднання із сервером. Після сервера запит іде до сайту вже поза тунелем. На цій ділянці шляху запит і далі захищає HTTPS.








