IPsec
IPsec (Internet Protocol Security, RFC 4301) — семейство протоколов для шифрования и аутентификации на уровне IP. Разработан в 90-х, встроен в IPv6 как обязательная (изначально) часть, в IPv4 как опция. До сих пор — стандарт корпоративных site-to-site VPN.
Компоненты
| Протокол | Что делает | Номер |
|---|---|---|
| AH (Authentication Header) | Только аутентификация, без шифрования | IP protocol 51 |
| ESP (Encapsulating Security Payload) | Шифрование + аутентификация | IP protocol 50 |
| IKE (Internet Key Exchange) | Обмен ключами, устанавливает SA | UDP 500 (+ 4500 для NAT-T) |
AH почти не используется — ESP делает всё то же самое + шифрование. IKE — отдельный протокол для установки соединения, дальше идёт ESP.
Два режима
| Режим | Что шифруется | Использование |
|---|---|---|
| Transport | Только payload IP-пакета (не заголовок) | Host-to-host, VoIP-шифрование |
| Tunnel | Весь IP-пакет целиком, оборачивается в новый | Site-to-site VPN, remote access |
IKE — Internet Key Exchange
Отдельный протокол над UDP:
- IKEv1 (RFC 2409, 1998) — сложный, 6+ раундов, куча уязвимостей, до сих пор жив в legacy-сетях.
- IKEv2 (RFC 7296, 2010) — переработан, 4 сообщения, лучше NAT-traversal, встроенный MOBIKE (миграция сессии между IP).
NAT-Traversal (NAT-T)
Оригинальный IPsec ESP не работает через NAT: NAT не может перезаписать порт, потому что ESP их не имеет (это отдельный IP-protocol, а не UDP/TCP).
Решение: ESP-in-UDP. Оба конца видят NAT в handshake, оборачивают ESP в UDP-пакеты на порту 4500. NAT спокойно транслирует.
Криптография
- Шифрование: AES-CBC / AES-GCM / ChaCha20-Poly1305 (RFC 7634 для IKEv2).
- Хеши: SHA-256 / SHA-384 / SHA-512.
- DH-группы: DH14 (2048-bit MODP), DH19-21 (ECP), DH31 (Curve25519).
- Аутентификация: pre-shared key (PSK), X.509 сертификаты, EAP (для мобильных клиентов).
- PFS: да, за счёт DH.
Плюсы
- Стандарт с 90-х, поддержка везде: Cisco, Juniper, Fortinet, MikroTik, Ubiquiti, все операторские CE-роутеры.
- В Windows/macOS/iOS/Android встроенный VPN-клиент — не нужно ничего ставить.
- Работает на уровне IP — прозрачен для приложений, роутинг не отличается от обычного.
- Hardware-acceleration в дорогом железе (Cisco ASR, ASA, Fortinet).
- Multi-cast, любой L3-трафик.
Минусы
- Дьявольская сложность. Десятки параметров, нужно согласовать phase 1 + phase 2 SA. Ошибки настройки — половина рабочего дня админа.
- NAT-неспокоен. Хотя NAT-T есть, работает не всегда идеально.
- Плохо через файрволы. UDP 500/4500 часто зарезаны.
- Утечка метаданных. IKE-handshake виден в чистом виде — можно определить IPsec-туннель.
- DPI ловит. Стандартные пакеты характерны, не обфусцированы.
Реализации
- strongSwan — Linux, самая мощная OSS-реализация, IKEv1/v2, EAP, all-cipher.
- Libreswan — форк Openswan, тоже Linux.
- xl2tpd + strongSwan — для L2TP/IPsec.
- Windows RRAS, macOS/iOS native — с XAuth или EAP.
- Всё Cisco/Juniper железо.
Обход блокировок
Плохой инструмент для этого. UDP 500/4500 массово блокируется, DPI детектит handshake. В обфускацию оборачивать неудобно (это не user-space TCP). Иногда встречается IPsec-over-TCP (Cisco proprietary), но клиенты редкие.