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)Обмен ключами, устанавливает SAUDP 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:

NAT-Traversal (NAT-T)

Оригинальный IPsec ESP не работает через NAT: NAT не может перезаписать порт, потому что ESP их не имеет (это отдельный IP-protocol, а не UDP/TCP).

Решение: ESP-in-UDP. Оба конца видят NAT в handshake, оборачивают ESP в UDP-пакеты на порту 4500. NAT спокойно транслирует.

Криптография

Плюсы

Минусы

Реализации

Обход блокировок

Плохой инструмент для этого. UDP 500/4500 массово блокируется, DPI детектит handshake. В обфускацию оборачивать неудобно (это не user-space TCP). Иногда встречается IPsec-over-TCP (Cisco proprietary), но клиенты редкие.

См. также