IKEv2
IKEv2 (Internet Key Exchange v2, RFC 7296, 2010) — переработанный протокол установки IPsec-соединений. Заменил монструозный IKEv1. Проще, быстрее, с встроенной поддержкой мобильности (MOBIKE) и NAT.
Что улучшили относительно IKEv1
| IKEv1 | IKEv2 | |
|---|---|---|
| Раундов handshake | 6-9 | 4 (2 exchange) |
| Согласование параметров | Отдельно Phase 1 + Phase 2 | Одновременно |
| NAT-traversal | Опция (RFC 3947) | Встроено |
| MOBIKE (миграция IP) | Нет | Да (RFC 4555) |
| EAP (пароли, MSCHAPv2) | Нет, только XAUTH-хак | Встроено |
| Rekeying | Разрывает соединение | Без разрыва |
| Dead peer detection | Отдельный RFC | Встроено (liveness check) |
| Устойчивость к DoS | Плохая | Cookies + puzzle |
Handshake
IKE_SA_INIT (первый обмен):
Client → Server: SA proposal, DH KE, nonce
Server → Client: SA choice, DH KE, nonce
(Устанавливается IKE SA с шифрованием DH-выведенными ключами)
IKE_AUTH (второй обмен):
Client → Server: ID, cert/PSK, EAP, traffic selectors (уже зашифровано)
Server → Client: ID, cert, first CHILD_SA parameters
(Установлена IKE SA + первая IPsec CHILD_SA)
Всего 4 сообщения → есть шифрованный туннель для данных.
Аутентификация
- PSK (pre-shared key) — простой, для site-to-site.
- X.509 сертификаты — обе стороны подписывают сообщения приватным ключом.
- EAP-MSCHAPv2 — login/password, для remote-access, интеграция с AD/RADIUS.
- EAP-TLS — сертификат клиента через EAP.
- Асимметрично: сервер по cert, клиент по EAP-password — типовой сценарий для мобильных VPN.
MOBIKE — миграция без разрыва
Мобильный клиент переходит с Wi-Fi на LTE, IP меняется. Обычный IPsec-туннель разорвался бы. MOBIKE позволяет:
- Клиент отправляет UPDATE_SA_ADDRESSES с новым IP.
- Сервер обновляет SA-endpoint.
- Туннель продолжает работать без нового handshake.
Ключевая фича для мобильных VPN. Аналог Connection ID в QUIC.
Крупные реализации
- strongSwan (Linux) — reference implementation, самая полная.
- Libreswan (Linux).
- Cisco AnyConnect, ASA, Meraki.
- Windows — «Always On VPN», встроенный.
- macOS / iOS — встроенный «IPsec IKEv2» в настройках.
- Android — с 12+ встроенный, раньше нужен strongSwan-клиент.
Типичный use-case
Корпоративный VPN на iPhone/Windows/Mac без установки стороннего клиента:
- Сервер: strongSwan на Ubuntu.
- Аутентификация: сервер по cert, клиент по EAP-MSCHAPv2 (AD).
- NAT-T автоматически.
- Split-tunnel через traffic selectors.
- MOBIKE — юзер ходит по Wi-Fi/LTE, туннель не рвётся.
Криптография (RFC 8247)
- Encryption: AES-GCM-16-256 (must), ChaCha20-Poly1305 (should).
- PRF: PRF_HMAC_SHA2_256/384/512.
- Integrity: не нужна с GCM/ChaCha (AEAD).
- DH: DH19-21 (ECP-256/384/521), DH31 (Curve25519).
Слабости
- Handshake не обфусцирован — DPI отличит IKEv2 от прочего трафика на UDP 500/4500.
- Порты 500/4500 массово блокируются в жёстких файрволах.
- Метаданные (identities в IKE_AUTH зашифрованы, но handshake фрагменты и SPI видны).