Разборы
Где живут протоколы VPN и чем они выдают себя в сети

Содержание
Если добавить VPN-подключение в настройках Windows, система предложит выбрать тип: PPTP, L2TP/IPsec, SSTP или IKEv2. Это протоколы VPN, которые операционная система знает сама, без сторонних программ. Приложения VPN-сервисов обычно работают на других. От того, где живёт протокол, зависит, кто его настраивает, в каких сетях он проходит и по каким признакам его узнают.
Протокол и шифр — не одно и то же
Шифр — это алгоритм, после которого данные без ключа превращаются в бессмысленный набор байтов. Чаще всего это AES или ChaCha20, и те же шифры защищают обычные сайты по HTTPS. Протокол отвечает за всё остальное. Он определяет, чем стороны подтверждают, что они те, за кого себя выдают (паролем, сертификатом или ключом), как договариваются о ключе на сеанс, через какой порт идут пакеты и что написано в их открытых заголовках.
Поэтому два протокола с одним и тем же шифром ведут себя в сети совсем по-разному. Чаще всего разница не в шифре, а в том, что вокруг него. Как зашифрованный запрос доходит до сайта, рассказано в статье о том, что такое VPN.
Протоколы, встроенные в систему
Встроенный протокол не требует ничего ставить. Адрес сервера, логин и ключ вписывают прямо в системные настройки, поэтому такими подключениями часто пользуются в компаниях, где профиль VPN выдаёт администратор. Набор у систем разный.
| Система | Что можно добавить без приложения | Что стоит знать |
|---|---|---|
| Windows | PPTP, L2TP/IPsec, SSTP, IKEv2 | В автоматическом режиме система перебирает их, начиная с более защищённых |
| iPhone, iPad и Mac | L2TP, IPsec, IKEv2 | PPTP Apple убрала в 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 клиент остался, хотя для серверов Windows Microsoft в 2024 году перевела PPTP в устаревшие.
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. Внутри HTTPS на TCP-порту 443 он передаёт PPP, тот же канальный протокол, на котором держится PPTP. Встроенного клиента SSTP нет ни у Apple, ни в Android. И это туннель поверх TCP, а на линии с потерями такие туннели замедляются, почему — ниже.
IKEv2, общий для всех систем
Из встроенных протоколов только 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. С версии 5.6, вышедшей весной 2020 года, WireGuard входит в ядро Linux. Его поддерживают прошивки многих роутеров, например OpenWrt и KeeneticOS начиная с версии 3.3, а для Windows, macOS, iOS и Android есть официальные приложения. Первое сообщение сеанса у него всегда одного типа и размера, поэтому узнать его в сети несложно. В августе 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. В августе 2023 года так вышло у нескольких мобильных операторов в России, где около суток не подключались VPN на OpenVPN, WireGuard и других протоколах. Протоколы нового поколения поэтому стараются выглядеть как HTTPS к известному сайту или как HTTP/3, а Shadowsocks, как видно выше, выдаёт как раз слишком ровная случайность.
Потери на линии и TCP
TCP следит, чтобы каждый пакет дошёл, и отправляет потерянные повторно. Когда сам туннель идёт поверх TCP, как SSTP или OpenVPN в режиме TCP, внутри него едут другие TCP-соединения со своими повторами. На линии с потерями оба уровня ждут и пересылают одно и то же, и задержка растёт скачками. Поэтому классический туннель лучше пускать по UDP, а TCP оставлять для сетей, где UDP закрыт.
Протоколы нового поколения передают не пакеты, а потоки. Приложение на устройстве само принимает TCP-соединения программ и пересылает по туннелю только их содержимое, так что двойных повторов не возникает. Но UDP-трафик игр и звонков внутри TCP-транспорта, например VLESS + REALITY, всё равно ждёт, пока потерянный кусок придёт заново. На таких линиях ровнее транспорт поверх UDP вроде Hysteria2.
На чём работает Бебра
Бебра подключается по VLESS + REALITY, XHTTP, Hysteria2 и Shadowsocks. Приложение само подбирает протокол и маршрут, а если маршрут перестал работать, переходит на другой, так что выбирать протокол вам не придётся. Подробнее — на странице технологий.
Для роутеров Keenetic, OpenWrt и MikroTik есть приложение Бебры, которое ставится на сам роутер. Для моделей, которые умеют только встроенные протоколы, в кабинете на сайте есть раздел «Роутер», а в нём вкладка «Другие модели» с OpenVPN (UDP и TCP) и PPTP. Из этих двух надёжно шифрует данные только OpenVPN. Кабинет сам предупреждает, что некоторые провайдеры блокируют оба протокола, и советует в таком случае OpenVPN через TCP.
Все 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 лучше считать открытым.




