VPN-протоколы (L2TP/PPTP/IPsec)
Набор протоколов, которыми строят VPN-туннели: устаревший PPTP, связка L2TP/IPsec, корпоративный IPsec, а также OpenVPN и WireGuard.
Что такое VPN-протоколы
VPN-протокол — правила, по которым две стороны строят туннель: аутентифицируют друг друга, согласуют ключи, упаковывают исходные пакеты и передают их по сети. Протокол определяет три вещи: как проверяется подлинность сторон, чем шифруются данные и во что упаковываются пакеты — в UDP, в TCP или в собственный протокол поверх IP.
Разница между ними чисто практическая: какие порты открывать на firewall, пройдёт ли туннель через NAT, сколько съест CPU и есть ли клиент из коробки.
PPTP
PPTP (Point-to-Point Tunneling Protocol) — самый старый из массовых, разработка Microsoft середины 1990-х. Управляющее соединение — TCP 1723, данные — в протоколе GRE (номер 47).
Главное, что нужно знать про PPTP: его защита сломана. Аутентификация MS-CHAPv2 сводится к перебору одного DES-ключа, и на арендованном железе это делается за сутки — независимо от длины пароля. Из современных ОС клиент убран. Единственная причина, по которой PPTP ещё где-то жив, — старое оборудование, которое ничего другого не умеет. Для новых установок не рассматривается.
L2TP и L2TP/IPsec
L2TP (Layer 2 Tunneling Protocol, RFC 2661) — протокол туннелирования канального уровня: умеет упаковывать кадры и переносить их через IP-сеть по UDP 1701, но сам не шифрует ничего. Это чистый транспорт, без криптографии.
Поэтому на практике L2TP почти всегда встречается в связке L2TP/IPsec: L2TP отвечает за туннель, IPsec — за шифрование и аутентификацию. Отсюда особенности: нужно открыть порты обоих протоколов, а сама связка чувствительна к NAT — за двойным NAT туннель нередко не поднимается.
Плюс связки — клиент встроен практически в любую ОС, ставить нечего. Минус — двойная инкапсуляция (пакет упакован дважды, накладные расходы выше) и капризность настройки.
IPsec
IPsec (Internet Protocol Security) — не один протокол, а набор стандартов для шифрования на сетевом уровне. Рабочая лошадка корпоративных site-to-site туннелей: IPsec понимает почти любой аппаратный маршрутизатор и почти любой облачный VPN-шлюз, поэтому это общий знаменатель при связывании разнородной инфраструктуры.
| Компонент | Роль |
|---|---|
| IKE / IKEv2 (UDP 500, UDP 4500 при NAT-T) | согласование ключей и параметров, аутентификация сторон |
| ESP (IP-протокол 50) | шифрование и целостность полезной нагрузки |
| AH (IP-протокол 51) | только целостность и подлинность, без шифрования; применяется редко |
Два режима работы:
- Transport mode — шифруется только полезная нагрузка, исходные IP-заголовки остаются на месте. Для связи «хост — хост».
- Tunnel mode — исходный пакет целиком упаковывается в новый IP-пакет. Это режим site-to-site и remote access; в VPN используется он.
IKEv2/IPsec без L2TP — современный вариант связки: нативные клиенты в Windows, macOS, iOS и Android, поддержка MOBIKE (туннель переживает переход с Wi-Fi на LTE), хорошая скорость.
SSTP
SSTP (Secure Socket Tunneling Protocol) — тоже разработка Microsoft: туннель заворачивается в TLS поверх TCP 443, то есть внешне неотличим от обычного HTTPS и проходит там, где UDP закрыт. Родной клиент есть в Windows, на других системах поддержка ограничена сторонними реализациями. Минус общий для всех TCP-VPN — эффект TCP-over-TCP: при потерях внешний и внутренний стек начинают ретранслировать наперегонки, и скорость проседает сильнее, чем у UDP-туннеля.
Современные протоколы
OpenVPN — open-source, криптография через OpenSSL, работает по UDP 1194 или по TCP 443, если наружу разрешён только веб-порт. Гибкий и обкатанный, есть под все платформы. Расплата — реализация в userspace и заметный расход CPU на высоких скоростях.
WireGuard — современный протокол, встроен в ядро Linux начиная с 5.6. Только UDP (порт задаётся вручную, по традиции 51820), фиксированный набор криптографии (ChaCha20-Poly1305, Curve25519), кодовая база на порядки меньше, чем у OpenVPN и IPsec, — меньше кода, меньше поверхность для ошибок. Быстрее остальных, а конфиг сводится к паре ключей и списку маршрутов.
Сравнение
| Протокол | Транспорт и порты | Шифрование | Клиент из коробки | Статус |
|---|---|---|---|---|
| PPTP | TCP 1723 + GRE (47) | MPPE, скомпрометировано | убран из современных ОС | не использовать |
| L2TP сам по себе | UDP 1701 | нет | — | только вместе с IPsec |
| L2TP/IPsec | UDP 500, 4500, 1701 | IPsec (ESP) | да, везде | legacy, но живой |
| IKEv2/IPsec | UDP 500, 4500 | IPsec (ESP) | да | рекомендуется |
| SSTP | TCP 443 | TLS | только Windows | нишевой |
| OpenVPN | UDP 1194 или TCP 443 | OpenSSL | нет, ставится | рекомендуется |
| WireGuard | UDP, порт свой | ChaCha20-Poly1305 | нет, ставится | рекомендуется |
Что выбрать
- Свой сервер и свои клиенты — WireGuard: минимум настроек, лучшая скорость, простой конфиг.
- Site-to-site между офисом и ЦОД, железные роутеры, облачный VPN-шлюз — IKEv2/IPsec: его поддерживают все, и это решает вопрос совместимости.
- Нельзя ничего ставить на устройства пользователей — IKEv2/IPsec на нативных клиентах.
- Наружу разрешён только 443/TCP — OpenVPN на TCP 443 или SSTP.
- PPTP — не выбирать ни при каких условиях.
Связанные термины
- VPN — что именно строят эти протоколы
- Туннелирование — общий механизм под всеми ними
- TLS — основа SSTP и OpenVPN
- NAT — причина NAT-T и половины проблем с L2TP/IPsec
- Сетевые порты — что открывать на firewall
- Криптография и СКЗИ — алгоритмы, на которых всё держится
Готовы запустить GPU-задачу?
Запустить GPU-сервер