UK
Спробувати BebraСпробувати

Розбори

Де живуть протоколи VPN і що їх видає в мережі

Roman Sedov Roman Sedov

10 хв читання

Протоколи VPN
Зміст
  1. Протокол — не те саме, що шифр
  2. Протоколи, вбудовані в систему
  3. Протоколи, яким потрібен застосунок
  4. Що заважає підключенню
  5. На чому працює Bebra
  6. Питання та відповіді

Якщо додати VPN-підключення в налаштуваннях Windows, система попросить вибрати тип: PPTP, L2TP/IPsec, SSTP або IKEv2. Це протоколи VPN, які операційна система знає сама, без додаткових програм. Застосунки VPN-сервісів зазвичай працюють на інших. Від того, де «живе» протокол, залежить, хто його налаштовує, крізь які мережі він проходить і як його розпізнають.

Протокол — не те саме, що шифр

Шифр — це алгоритм, який перетворює ваші дані на байти, марні без ключа. Найчастіше це AES або ChaCha20, ті самі шифри, що захищають звичайні сайти через HTTPS. Усе інше бере на себе протокол. Він визначає, як кожна сторона доводить, що вона та, за кого себе видає (паролем, сертифікатом чи ключем), як сторони домовляються про ключ сеансу, через який порт ідуть пакети і що написано в їхніх незашифрованих заголовках.

Тому два протоколи з однаковим шифром можуть дуже по-різному поводитися в мережі. Зазвичай різниця не в шифрі, а в усьому, що довкола нього. Як зашифрований запит доходить до сайту, ми розповідали в статті про те, що таке VPN.

Протоколи, вбудовані в систему

Для вбудованого протоколу нічого встановлювати не треба. Адресу сервера, дані для входу й ключ вписують просто в системні налаштування, тому такими підключеннями часто користуються компанії, де VPN-профіль роздає адміністратор. Кожна система підтримує свій набір.

СистемаЩо можна додати без застосункуВарто знати
WindowsPPTP, L2TP/IPsec, SSTP, IKEv2В автоматичному режимі Windows пробує їх по черзі, починаючи з надійніших
iPhone, iPad і MacL2TP, IPsec, IKEv2Apple прибрала PPTP у 2016 році, починаючи з iOS 10 і macOS Sierra
Android 12 і новішіЛише варіанти IKEv2/IPsecСтворити підключення PPTP чи L2TP у системних налаштуваннях більше не можна

PPTP, якому не допоможе надійний пароль

PPTP опублікували як RFC 2637 у 1999 році, і його захист тримається на автентифікації MS-CHAPv2. У 2012 році цю схему розібрали на конференції DEF CON. Щоб зламати перехоплений вхід, достатньо підібрати один 56-бітний ключ DES, і довгий складний пароль нічого не змінює. Порада дослідників була категоричною: вважайте трафік PPTP незашифрованим. Через чотири роки Apple прибрала PPTP зі своїх систем. У Windows клієнт досі є, хоча у 2024 році Microsoft внесла PPTP до списку застарілих функцій Windows Server.

L2TP/IPsec і проблема з NAT

L2TP (RFC 2661, теж 1999 року) лише будує тунель, а шифрування бере на себе IPsec, тому в налаштуваннях вони йдуть парою (RFC 3193, 2001). Windows пропонує два варіанти цієї пари, із сертифікатом і з попередньо узгодженим ключем. Найважча її проблема — NAT, тобто роутери, які ховають кілька пристроїв за однією адресою. Тоді пакети IPsec доводиться загортати в UDP на порту 4500. Якщо за NAT стоїть сам сервер, Windows за замовчуванням підключення не встановить, і стаття підтримки Microsoft 926179 пропонує дозволити це правкою реєстру.

SSTP, що є лише у Windows

SSTP з’явився у Windows Vista SP1 і Windows Server 2008. Він передає PPP, той самий протокол канального рівня, на якому побудований PPTP, усередині HTTPS на TCP-порту 443. Ні в системах Apple, ні в Android вбудованого клієнта SSTP немає. До того ж це тунель поверх TCP, а такі тунелі на лінії із втратами пакетів гальмують (чому — нижче).

IKEv2, який є в усіх системах

Із вбудованих протоколів лише IKEv2 є в кожній системі з таблиці. Його описує RFC 7296 (2014). Сервер зазвичай пред’являє сертифікат, а ви входите із сертифікатом або з логіном і паролем через EAP. Узгодження починається на UDP-порту 500, а якщо сторони виявляють дорогою NAT, вони переходять на порт 4500. Розширення MOBIKE (RFC 4555) дозволяє сеансу пережити зміну IP-адреси пристрою без повторного входу. Зворотний бік у тому, що без UDP IKEv2 не працює взагалі.

Протоколи, яким потрібен застосунок

Решту протоколів система сама не знає. Їх додає окрема програма, як-от клієнт OpenVPN, застосунок VPN-сервісу чи прошивка роутера. Перевага в тому, що вони можуть змінюватися з кожним оновленням цієї програми, не чекаючи нової версії системи.

OpenVPN

OpenVPN — програма з відкритим кодом від Джеймса Йонана, вперше випущена у 2001 році. Підключення до сервера зазвичай описують одним файлом .ovpn з адресою, портом і ключами, який імпортують у клієнт на комп’ютері, телефоні чи роутері. Ключі узгоджуються через TLS, а дані йдуть через UDP або TCP, стандартний порт — 1194. У статті, представленій на USENIX Security у 2022 році, дослідники, які працювали з інтернет-провайдером на мільйон абонентів, виявили понад 85% потоків OpenVPN майже без хибних спрацьовувань. Їм вистачило характерного набору байтів, розмірів пакетів і відповідей сервера, і так вони впізнали 34 із 41 конфігурації, які продавали як замасковані.

WireGuard

WireGuard — сучасний протокол, задуманий як швидша й простіша альтернатива IPsec та OpenVPN. Для обміну ключами він використовує Curve25519, дані захищає ChaCha20 і Poly1305, а пакети передає лише через UDP. WireGuard входить до ядра Linux з версії 5.6, що вийшла навесні 2020 року. Його підтримують прошивки роутерів, як-от OpenWrt і KeeneticOS (з версії 3.3), і є офіційні застосунки для Windows, macOS, iOS та Android. Перше повідомлення кожного сеансу завжди має той самий тип і розмір, тож у мережі його легко помітити. У Росії WireGuard блокують із 2023 року. Того серпня він разом з OpenVPN приблизно на добу перестав підключатися в мобільних мережах, а наприкінці вересня почалася друга хвиля блокувань.

Shadowsocks

Shadowsocks з’явився у 2012 році як зашифрована заміна проксі SOCKS (чим проксі відрізняється від VPN, ми розповідали в статті «VPN чи проксі»). Налаштувань йому треба зовсім мало: адреса, порт, пароль і шифр. У його потоці немає незашифрованих заголовків, і для фільтра це радше прикмета, ніж маскування. Звичайний трафік майже завжди містить трохи читабельного тексту, тож потік із суцільних випадкових байтів вирізняється. У статті з USENIX Security 2023 року описано, як система фільтрації в Китаї з листопада 2021 року відсіює такі потоки за часткою одиничних бітів і друкованих символів, і Shadowsocks потрапив під це правило.

VLESS + REALITY

Протокол VLESS вийшов у серпні 2020 року, у V2Ray 4.27.0. Він розпізнає кожного користувача за UUID, довгим рядком із літер і цифр, а власне шифрування в типовій конфігурації вимкнене, тож дані захищає зовнішній шар TLS. Як цей шар виглядає ззовні, визначає REALITY. На сервері зберігається пара ключів X25519, а клієнт знає відкритий ключ і короткий ідентифікатор shortId. У налаштуваннях сервера вказано чужий справжній сайт, і рукостискання TLS схоже на відвідування цього сайту. Якщо з’єднання не проходить перевірку ключа, сервер передає його цьому сайту, і той відповідає сам.

XHTTP

XHTTP — спосіб доставки даних із проєкту Xray, у 2024 році відомий як SplitHTTP. Ззовні він схожий на звичайний обмін даними із сайтом, тобто на HTTP-запити й відповіді, а такий трафік пропускає більшість HTTP-посередників і багато CDN. Вихідний і вхідний потоки можуть навіть іти різними шляхами, скажімо, один через CDN, а інший напряму.

Hysteria2

Hysteria2 працює поверх UDP на власному варіанті QUIC. Ззовні він схожий на HTTP/3, найновішу версію протоколу, яким завантажуються сайти. Клієнт входить одним запитом HTTP/3, у заголовку якого передається пароль. Якщо пароль неправильний, сервер має поводитися як звичайний вебсервер або повертати відповідь справжнього сайту, тож ніщо не видає проксі. Розробники створювали Hysteria2 для ліній із великими втратами пакетів, але там, де UDP заблоковано повністю, він не пройде, так само як і IKEv2.

Що заважає підключенню

Мережа пропускає лише вебтрафік

Готелі, конференц-зали й деякі офіси випускають назовні лише вебтрафік, на TCP-портах 80 і 443. IKEv2 і L2TP/IPsec з їхніми UDP-портами 500 і 4500 там не підключаться, як і OpenVPN на стандартному порту 1194. Проходять SSTP, OpenVPN, налаштований на TCP 443, і протоколи, що працюють на тому самому порту й схожі на HTTPS. Саме для таких мереж Microsoft і створила SSTP.

Протокол упізнають за характерними ознаками

Протоколи, створені для офісних мереж, працюють на фіксованих портах і відкривають сеанси впізнаваним чином. Обладнання глибокого аналізу пакетів (DPI) у провайдера перевіряє ці ознаки на льоту й може закрити один протокол, не чіпаючи решти інтернету. Як показує дослідження про OpenVPN, для цього нічого не потрібно розшифровувати. Тому новіші протоколи намагаються бути схожими на HTTPS-з’єднання з відомим сайтом або на HTTP/3, а Shadowsocks, як ви бачили вище, видає надто рівномірна випадковість.

Втрати пакетів і TCP

TCP стежить, щоб кожен пакет дійшов, і повторно надсилає втрачені. Коли сам тунель працює поверх TCP, як SSTP і OpenVPN у режимі TCP, він переносить інші TCP-з’єднання з їхніми власними повторами. На лінії із втратами обидва рівні чекають і повторно надсилають ті самі дані, і затримка зростає стрибками. Тож класичному тунелю краще працювати на UDP, а TCP залишати для мереж, де UDP заблоковано.

Новіші протоколи передають потоки, а не пакети. Застосунок на пристрої сам перехоплює TCP-з’єднання програм і передає тунелем лише їхній вміст, тож подвійних повторів не буває. Але UDP-трафік ігор і дзвінків усередині TCP-транспорту, як-от VLESS + REALITY, однаково змушений чекати, поки втрачений шматок прийде знову. На таких лініях рівніше працює транспорт на основі UDP, наприклад Hysteria2.

На чому працює Bebra

Bebra підключається через VLESS + REALITY, XHTTP, Hysteria2 і Shadowsocks. Застосунок сам вибирає протокол і маршрут, а якщо маршрут перестає працювати, переходить на інший, тож вибирати протокол самостійно не потрібно. Детальніше про це — на сторінці технологій.

Для роутерів Keenetic, OpenWrt і MikroTik є застосунок Bebra, який працює на самому роутері. Для моделей, що підтримують лише вбудовані протоколи, у розділі «Роутер» особистого кабінету на сайті є вкладка «Інші роутери» з OpenVPN (UDP і TCP) та PPTP. Із цих двох надійно шифрує дані лише OpenVPN.

Кожен тариф включає всі 187 країн. Пробний період за 10 ₽ покаже, як з’єднання поводиться саме у вашій мережі. 3 дні повного доступу, потім 500 ₽ на місяць. Підписка продовжується автоматично.

Питання та відповіді

Протокол і шифр — це одне й те саме?

Ні. Шифр, як-от AES чи ChaCha20, робить дані нечитабельними без ключа. Протокол задає все довкола: як сторони впізнають одна одну, як домовляються про ключ, через який порт ідуть пакети і як вони виглядають. Тому протоколи з однаковим шифром можуть дуже по-різному поводитися в мережі.

Чому VPN, який працює вдома, не підключається в готелі?

Гостьові мережі часто випускають назовні лише вебтрафік, на TCP-портах 80 і 443. IKEv2 і L2TP/IPsec на UDP-портах 500 і 4500, а також OpenVPN на порту 1194 там не проходять. SSTP, OpenVPN через TCP 443 і протоколи, схожі на HTTPS, зазвичай проходять.

Чому на Android не можна додати PPTP чи L2TP?

Починаючи з Android 12, системні налаштування дозволяють створювати лише підключення IKEv2/IPsec. Для OpenVPN та інших протоколів потрібен окремий застосунок.

Чи зробить довгий пароль PPTP безпечним?

Ні. Слабке місце PPTP — сама автентифікація MS-CHAPv2. Перехоплений вхід можна зламати перебором усіх 56-бітних ключів, і складність пароля не впливає на те, скільки це займе. Трафік PPTP краще вважати відкритим.

Roman Sedov

Про автора

Roman Sedov

Автор матеріалів про мережі та протоколи

Розбирає протоколи й мережі: що відбувається з вашим трафіком між застосунком і сайтом і чому з’єднання поводиться саме так.

Застосунок Bebra

Застосунки для iPhone та iPad, Android, Windows, Mac, Linux, Android TV і Apple TV. Одна підписка діє на будь-якій кількості пристроїв, і кожен тариф включає всі 187 країн.