RU
EnglishenРусскийru
Попробовать БебруПопробовать

Разборы

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

Роман Седов Роман Седов

10 мин чтения

Протоколы VPN
Содержание
  1. Протокол и шифр — не одно и то же
  2. Протоколы, встроенные в систему
  3. Протоколы, которым нужно приложение
  4. Что мешает подключению
  5. На чём работает Бебра
  6. Вопросы и ответы

Если добавить VPN-подключение в настройках Windows, система предложит выбрать тип: PPTP, L2TP/IPsec, SSTP или IKEv2. Это протоколы VPN, которые операционная система знает сама, без сторонних программ. Приложения VPN-сервисов обычно работают на других. От того, где живёт протокол, зависит, кто его настраивает, в каких сетях он проходит и по каким признакам его узнают.

Протокол и шифр — не одно и то же

Шифр — это алгоритм, после которого данные без ключа превращаются в бессмысленный набор байтов. Чаще всего это AES или ChaCha20, и те же шифры защищают обычные сайты по HTTPS. Протокол отвечает за всё остальное. Он определяет, чем стороны подтверждают, что они те, за кого себя выдают (паролем, сертификатом или ключом), как договариваются о ключе на сеанс, через какой порт идут пакеты и что написано в их открытых заголовках.

Поэтому два протокола с одним и тем же шифром ведут себя в сети совсем по-разному. Чаще всего разница не в шифре, а в том, что вокруг него. Как зашифрованный запрос доходит до сайта, рассказано в статье о том, что такое VPN.

Протоколы, встроенные в систему

Встроенный протокол не требует ничего ставить. Адрес сервера, логин и ключ вписывают прямо в системные настройки, поэтому такими подключениями часто пользуются в компаниях, где профиль VPN выдаёт администратор. Набор у систем разный.

СистемаЧто можно добавить без приложенияЧто стоит знать
WindowsPPTP, L2TP/IPsec, SSTP, IKEv2В автоматическом режиме система перебирает их, начиная с более защищённых
iPhone, iPad и MacL2TP, IPsec, IKEv2PPTP 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 лучше считать открытым.

Роман Седов

Об авторе

Роман Седов

Автор разборов о сетях и протоколах

Разбирает протоколы и сети: что происходит с трафиком между приложением и сайтом и почему подключение ведёт себя так, а не иначе.

Приложение Бебры

Есть для iPhone и iPad, Android, Windows, Mac, Linux, Android TV и Apple TV. Одна подписка подключает сколько угодно устройств, и каждый тариф включает все 187 стран.

Как скачать приложение для iOS и macOS из России

Apple скрывает наше приложение в российском App Store по требованию РКН, поэтому мы рекомендуем поменять страну в настройках App Store или воспользоваться нашим временным аккаунтом. Все способы установки, включая TestFlight

У меня регион Россия

Мы бесплатно даём временный иностранный аккаунт App Store на 15 минут, чтобы вы скачали наше приложение.

У меня другой регион

Приложение Bebra доступно для вас в App Store.