Классические протоколы: PPTP, L2TP, IPsec, OpenVPN, SSTP

Эти пять — фундамент VPN-индустрии 2000-х. Понимать их обязательно: половину из них до сих пор используют в корпоративных сетях (IPsec, SSTP), а понимание их слабостей объясняет, почему появились WireGuard, Reality и всё остальное.

Главная мысль урока

Все пять протоколов прекрасно блокируются современным DPI. Кроме корпоративного site-to-site (где DPI обычно нет), в 2026 ни один из них не годится для обхода блокировок. Их нужно знать как «зачем мы пришли к новому». Не как «что использовать сегодня».

Что узнаешь — после урока ты сможешь
Вспомни из прошлого урока

В уроке 2 мы разобрали триаду: обмен ключами (Диффи-Хеллман) → AEAD-шифрование → аутентификация, плюс PFS и MTU-оверхед туннеля. Сейчас увидишь, как её (не)соблюдает каждый классический протокол: PPTP провалил аутентификацию, IPsec тащит тяжёлый IKE, OpenVPN честно использует TLS — и именно поэтому узнаваем. Порты и SNI-детект — из урока 1.

1. PPTP — Point-to-Point Tunneling Protocol

1996 год, Microsoft + Ascend + 3Com. Самый старый коммерческий VPN, который до сих пор местами включён по дефолту. Простая идея: расширение PPP (модемный протокол) на TCP/IP.

ПараметрЗначение
ТранспортTCP (control) + GRE (data, протокол IP №47)
ПортTCP 1723 + GRE
АутентификацияMS-CHAPv2 (взломан 2012), PAP (открытый пароль), EAP
ШифрованиеMPPE (RC4, 40/128 бит) — устаревшее, без AEAD
Безопасность 2026F — взломан, использовать НЕЛЬЗЯ
УдобствоВстроен в Windows из коробки до Windows 11
Почему PPTP мёртв

MS-CHAPv2 — публично сломан

В 2012 на DEF CON Moxie Marlinspike показал ChapCrack: за 1 день перебора DES-ключей атакующий с записью handshake получает пароль пользователя. Сервис cloudcracker.com делал это за $200.

После этого Microsoft, Apple, OpenBSD рекомендуют отключать PPTP. Cisco убрала из IOS. В iOS 10 и macOS Sierra (2016) поддержка удалена. Если в инструкции твоего VPN-провайдера встречаешь PPTP — беги.

2. L2TP/IPsec — Layer 2 Tunneling Protocol

1999-2005. Логичный наследник PPTP. Сам L2TP — туннельный протокол без шифрования, его всегда комбинируют с IPsec, который добавляет криптографию. Поэтому везде пишут «L2TP/IPsec» через слеш.

ПараметрЗначение
ТранспортUDP 1701 (L2TP) + UDP 500/4500 (IPsec IKE/NAT-T)
ШифрованиеIPsec: AES-CBC/GCM, ChaCha20-Poly1305 (новые реализации)
АутентификацияPSK (общий секрет) — главный режим, или сертификаты
Безопасность 2026C — криптография ок, но детектится мгновенно
Главная проблемаФиксированные порты 500/4500/1701 — блокируются на раз

Поверх IPsec накладывается L2TP — он переносит уже зашифрованный PPP. Получается двойная инкапсуляция: overhead ~70 байт. Зато встроено в Windows/macOS/iOS из коробки.

Под капотом

Почему IPsec не один и зачем L2TP

Классический IPsec в режиме tunnel передаёт IP-пакеты, но не умеет аутентифицировать пользователя (только машину) и плохо работает с динамическими IP. L2TP добавляет PPP-уровень: каждый клиент видит виртуальный «PPP-канал», получает динамический IP, можно раздать DNS, разные пароли. IPsec лишь защищает этот L2TP.

В современных продуктах эту проблему решили через IKEv2 mobike + EAP — и L2TP стал не нужен. Поэтому новые реализации идут «чистый IKEv2/IPsec» без L2TP.

3. IPsec — индустриальный стандарт

RFC 4301+ (2005). Не «один протокол», а целый стек (IKE + ESP + AH). Это до сих пор стандарт site-to-site VPN в корпоративных сетях, телекомах, между ДЦ. Если работаешь инженером СПД — этот раздел обязателен.

Стек IPsec

IPsec — два протокола работают вместе
IKE (control plane) «как договориться о ключах» UDP 500 (IKE_SA_INIT) DH key exchange, выбор шифров, аутентификация UDP 4500 (NAT-T) «как пройти через NAT» (overlay over UDP) Результат: SA (Security Association) пара ключей, SPI, шифр, время жизни передаётся в ESP для шифрования трафика ESP (data plane) «как шифровать пакеты» IP protocol №50 отдельный transport layer (не TCP, не UDP) tunnel mode шифрует ВЕСЬ исходный пакет, добавляет новый IP-header (site-to-site по умолчанию) transport mode шифрует ТОЛЬКО payload (TCP/UDP уже зашифрован) (host-to-host, гораздо реже) ключи
IKE договаривается о ключах, ESP с ними шифрует. Два разных протокола в одной системе.

IKEv1 vs IKEv2 — главная развилка

IKEv1 (1998)IKEv2 (2005, RFC 7296)
Сообщений в handshake9 (Main mode) или 6 (Aggressive)4 (всегда)
NAT TraversalХак через NAT-TВстроено в стандарт
EAP authenticationНетДа (RADIUS, OTP, сертификаты)
ПерезаключениеСложно, рвёт сессиюMOBIKE: смена IP без разрыва
Атаки на агрессивный режимУтечка PSK-хэша → offline bruteНет
Использовать в 2026НельзяДа
Атака

Aggressive Mode IKEv1 — древняя дыра, до сих пор у многих включена

В Aggressive Mode сервер шлёт PSK-хэш в открытом виде (один из шагов рукопожатия не шифруется). Атакующий с интернета может запросить handshake, получить хэш и offline перебирать словарём. Утилита ike-scan + psk-crack делают это автоматически.

В 2025 году такие настройки до сих пор встречаются на старых Cisco ASA и FortiGate. Если ты сетевик — это первая проверка при аудите.

Где IPsec живёт и почему

Когда IPsec — правильный выбор

Site-to-site между корпоративными сетями без активного DPI. В корпсети не блокируют UDP 500/4500 — это нормальный трафик. Скорость отличная (на железе с AES-NI близка к линейной), стандарт RFC, совместимость между вендорами. WireGuard в site-to-site между разными вендорами не работает — IPsec единственный универсальный.

4. OpenVPN — народный TLS-VPN

2001, James Yonan. Идея: построим VPN поверх TLS, используем готовую OpenSSL, запустим в userspace. Получилось — кросс-платформа (Linux/Win/Mac/iOS/Android/роутеры), гибкая конфигурация, тысячи опций. До WireGuard был стандартом VPN-сервисов.

ПараметрЗначение
ТранспортUDP (по умолчанию, рекомендуемый) или TCP
Порт1194 (default), но любой
КриптографияTLS 1.2/1.3 для control, AES-GCM или ChaCha20-Poly1305 для data
Аутентификацияx.509 сертификаты (PKI), TLS-PSK, username/password (PAM)
Размер кода~600 000 строк + OpenSSL ещё столько же
Безопасность 2026B+ — крипта ок, fingerprint детектится

Почему OpenVPN детектируется ТСПУ за миллисекунду

OpenVPN маскируется неудачно: первый пакет от клиента имеет легко узнаваемый формат:

0000 38 00 00 00 00 00 00 00 00 opcode 0x38 = P_CONTROL_HARD_RESET_CLIENT_V2 0009 07 0a 5d 8c 91 23 ... session id (8 байт) 0011 00 ... packet id
Атака

Pattern-matching на opcode 0x38

DPI смотрит первый байт UDP-пакета: если 0x38 (или 0x40, 0x48 — другие OpenVPN opcodes) — это OpenVPN с вероятностью 99.9%. Время детекта — один пакет. Поэтому OpenVPN на дефолтных настройках мёртв в России, Иране, Китае.

Контрмеры (частичные)

tls-crypt-v2 — обёртка control-канала в дополнительный HMAC-шифр. Первый пакет становится «случайным», pattern на opcode уже не сработает. Поэтому в 2024-2025 OpenVPN с tls-crypt-v2 ещё работает кое-где в РФ.

Но это полумера: статистика пакетов (тайминги, размеры, ratio TCP/UDP) выдаёт OpenVPN ML-классификатору. Полноценный обход требует обфускации поверх — obfsproxy/obfs4 или Cloak. Сама архитектура OpenVPN не умеет маскироваться.

Где OpenVPN всё ещё уместен

5. SSTP — Secure Socket Tunneling Protocol

Microsoft, Windows Server 2008. Идея: пробросим VPN через стандартный HTTPS-порт 443, чтобы файрволы пропускали как обычный веб-трафик. Получился первый «VPN через 443» — прародитель всех современных решений (Trojan, Reality).

ПараметрЗначение
ТранспортTCP 443 (HTTPS)
КриптографияTLS (любая версия, поддерживаемая ОС)
Аутентификацияx.509 + PPP внутри (PAP/CHAP/MS-CHAPv2/EAP)
ПоддержкаWindows (родная), Linux (sstp-client, неофициально)
Безопасность 2026C — криптография ок, fingerprint обнаруживается

Из плюсов: проходит через любой корпоративный proxy, работает где разрешён только TCP 443. Из минусов: проприетарный (Microsoft), плохая кросс-платформа, fingerprint TLS handshake выдаёт SSTP против обычного браузера за 1 ClientHello (ALPN, расширения, шифры — всё специфическое).

6. Сводная таблица для запоминания

Протокол Транспорт Шифрование Обход блокировок Где живёт Тир 2026
PPTP TCP 1723 + GRE MPPE (RC4) — взломан Нет (древний) F
L2TP/IPsec UDP 500/4500/1701 AES-GCM Нет (детект на портах) iOS/macOS из коробки C
IKEv2/IPsec UDP 500/4500 AES-GCM, ChaCha20 Нет (детект на портах) Site-to-site, корпорат A (для site-to-site)
OpenVPN UDP UDP (любой порт) TLS 1.3 + AES-GCM Слабый (opcode), tls-crypt-v2 помогает Remote-access, PKI B
OpenVPN TCP TCP (любой) TLS 1.3 + AES-GCM Чуть лучше, но медленнее Через restrictive networks B-
SSTP TCP 443 TLS Через корп. прокси — да; против DPI — нет Windows-only legacy C+
Аналогия

Почему классику видно — «форменная одежда»

Представь курьеров, которые носят передачи. Классические VPN — курьеры в яркой форме с логотипом: IPsec ходит строго через служебные двери 500 и 4500 (фиксированные порты), OpenVPN начинает каждую фразу одним и тем же приветствием (opcode в первом байте), PPTP вообще носит бейдж со взломанным замком. Охране (DPI) не нужно вскрывать посылку — достаточно увидеть форму и развернуть. Современные протоколы (следующие уроки) переоденут курьера в обычного прохожего с пакетом из супермаркета — неотличимого от тысяч других. Вся разница между эпохами — в этом: классика не пытается прятать, что она VPN.

7. Мини-лаба: попробуй прямо сейчас

Увидеть «форму» классических протоколов можно, не поднимая ни одного сервера:

# 1. Порты IPsec/IKE — те самые, что режут первым правилом
grep -E "500|4500|1701|1723" /etc/services
# isakmp 500, ipsec-nat-t 4500, l2tp 1701, pptp 1723 — все «казённые»

# 2. Установлен ли где-то OpenVPN и его конфиг — посмотри cipher/auth
openvpn --version 2>/dev/null | head -1
# в конфиге ищи строки: cipher AES-256-GCM, tls-crypt — это защита от детекта

# 3. Смоделируй, что видит DPI: постучись на порт IPsec любого шлюза (свой роутер!)
sudo nmap -sU -p 500,4500 <IP своего роутера>
# open|filtered на 500 — устройство говорит на IKE, VPN опознан без расшифровки

# 4. Сравни с современным: у HTTPS-сайта «форма» — обычный 443/TLS
sudo nmap -p 443 --script ssl-enum-ciphers example.com | head -15
Ожидаемый результат

В /etc/services ты увидишь, что у каждого классического протокола — свой жёстко закреплённый порт: это и есть «форма», по которой DPI опознаёт VPN одним правилом, ничего не расшифровывая. Скан порта 500 на устройстве с IPsec выдаст его с головой. А сканирование 443 покажет обычный набор TLS-шифров — тот самый трафик, под который будут маскироваться протоколы из следующих уроков, чтобы стать неотличимыми от миллионов HTTPS-соединений.

8. Задачи самопроверки — реши, потом раскрой ответ

Задача 1. Провайдер «дропает всё на UDP 500 и 4500». Какой протокол умер и почему это не требует расшифровки?

Умер IPsec/IKE: согласование ключей (IKE) идёт на UDP 500, а при NAT — на 4500. Блокировка по номеру порта не трогает содержимое — DPI даже не пытается расшифровать ESP, просто рубит служебный handshake, без которого туннель не поднимется. Классический пример того, как фиксированные порты убивают протокол.

Задача 2. В унаследованной сети остался PPTP «потому что работает и быстрый». Какие два довода закрывают вопрос его использования в 2026?

(1) Криптография сломана: аутентификация MS-CHAPv2 вскрывается перебором (сводится к одному DES-ключу), шифрование MPPE слабое — трафик расшифровывается, это не «приватность», а её видимость. (2) Он всё равно опознаётся и блокируется (TCP 1723 + GRE). Итог: ни безопасности, ни проходимости — только ложное чувство защиты. Замена: WireGuard/IPsec для внутренних задач, современный стек для обхода.

Задача 3. OpenVPN настроен на порт 443/TCP «чтобы выглядеть как HTTPS». DPI всё равно его отличает от настоящего HTTPS. За счёт чего и что помогает?

Порт совпал, а содержимое — нет: OpenVPN выдаёт себя первым байтом (opcode) и собственным TLS-рукопожатием с нехарактерным для браузеров отпечатком. DPI смотрит не на номер порта, а на структуру потока. Помогает tls-crypt/tls-crypt-v2 (шифрует управляющий канал, скрывая opcode) — но это отсрочка: паттерны размеров/таймингов и активное зондирование со временем всё равно позволяют детект. Радикальное решение — маскировка под реальный сайт (Trojan/Reality).

Задача 4. Для соединения двух офисов компании (site-to-site) коллега предлагает IPsec, и это нормально — хотя весь урок про то, что классику блокируют. Почему здесь противоречия нет?

Потому что задача другая: между офисами нет враждебного DPI, который целенаправленно ищет и режет VPN. IPsec там — зрелый, аппаратно-ускоренный, повсеместно поддерживаемый стандарт: его «узнаваемость» не проблема, когда никто не блокирует. Проблема классики — только в сценарии обхода цензуры, где трафик обязан быть неотличим от обычного. Инструмент выбирается под угрозу-модель, а не «по моде».

Задача 5. Сформулируй одним предложением, какое общее свойство классических протоколов сделало их непригодными для обхода блокировок — и чем ответило следующее поколение.

Общее свойство: они не скрывают, что они VPN (фиксированные порты, узнаваемые рукопожатия и opcode'ы), поэтому опознаются и блокируются без расшифровки; ответ следующего поколения — маскировка, при которой туннель структурно неотличим от обычного HTTPS (Trojan, XTLS, Reality) или сведён к минимальному быстрому ядру (WireGuard) с последующей обфускацией (AmneziaWG).

9. Словарик урока

PPTPVPN 1996 года; MS-CHAPv2 и MPPE взломаны — запрещён к использованию
IPsecпромышленный стандарт: ESP шифрует, AH аутентифицирует, IKE согласует ключи
IKE · Internet Key Exchangeсогласование ключей IPsec на UDP 500/4500 — уязвимая точка для блокировки
ESP / AHполезная нагрузка IPsec: ESP — шифрование+целостность, AH — только целостность
L2TP/IPsecL2TP несёт кадр, IPsec его шифрует; известные порты 1701/500/4500
OpenVPNTLS-based VPN; гибкий, но узнаётся по opcode и TLS-отпечатку
opcodeпервый байт пакета OpenVPN, выдающий протокол при DPI
tls-cryptшифрование управляющего канала OpenVPN — прячет opcode на время
SSTPVPN поверх TLS от Microsoft; Windows-центричный, отпечаток handshake виден
fingerprint · отпечатокузнаваемый набор признаков потока (порты, размеры, порядок байт), по которому DPI детектит протокол

10. Почему мы пошли дальше

Главный вывод урока — почему 2010-е дали миру WireGuard, Trojan, Reality:

  1. IKE детектится по портам. UDP 500/4500 — известны всем. Достаточно правила «дропать всё с этих портов» — IPsec на колене.
  2. OpenVPN детектится по opcode. Первый байт пакета выдаёт. tls-crypt-v2 спасает на год вперёд, потом обходят и его.
  3. PPTP сломан криптографически. Не используется.
  4. SSTP — Windows-only, fingerprint TLS handshake виден.
  5. Все классические протоколы НЕ маскируются. Они не пытаются выглядеть «как что-то ещё». В 2010-х это было ок (блокировок мало). В 2020-х — нет.

Решения «следующего поколения» (WireGuard, Xray, Reality) решают разные задачи: WireGuard — «делаем меньше кода и быстрее», Trojan/Reality — «маскируемся под HTTPS». Дальше в курсе мы их разбираем по очереди.

В следующем уроке — WireGuard: почему 4000 строк кода стали стандартом, как устроен Noise_IK handshake, что у WG плохо в 2026 (UDP, фиксированный handshake) и как это лечат через AmneziaWG.