VPN & Proxy

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 — не выбирать ни при каких условиях.

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер