Что такое IKEv2/IPsec и почему он популярен
IKEv2 (Internet Key Exchange version 2) — это протокол для установления защищённого соединения, который почти всегда работает в паре с IPSec. Вместе они образуют VPN-туннель, где IKEv2 отвечает за согласование параметров и аутентификацию, а IPSec — за шифрование и передачу данных. Такой тандем часто называют просто IKEv2/IPsec.
Протокол разработан совместно Microsoft и Cisco и встроен во многие операционные системы: Windows, macOS, iOS, Android и Linux. Это значит, что для подключения часто не нужно устанавливать дополнительное программное обеспечение — достаточно ввести адрес сервера и учётные данные.
IKEv2 ценится за скорость, стабильность и поддержку мобильных сценариев. Благодаря технологии MOBIKE соединение не обрывается при переходе между Wi-Fi и мобильной сетью, что делает его удобным для смартфонов и ноутбуков.
Как работает IKEv2: фазы согласования и роль MSCHAPv2
Установка IKEv2-соединения проходит в два этапа. На первой фазе (IKE_SA_INIT) два узла обмениваются сообщениями для согласования алгоритмов шифрования, хеширования и обмена ключами по протоколу Диффи-Хеллмана. В результате создаётся защищённый канал — IKE SA.
На второй фазе (IKE_AUTH) происходит аутентификация сторон и создание дочерних SA, которые уже используются для передачи пользовательского трафика. Именно на этом этапе часто применяется EAP-MSCHAPv2 — метод аутентификации по логину и паролю. Он широко поддерживается клиентами Windows, macOS и Android, поэтому удобен для развёртывания VPN без выпуска сертификатов для каждого пользователя.
MSCHAPv2 — это развитие протокола MSCHAP, использующее хеширование и взаимную аутентификацию. Однако у него есть известные уязвимости: пароли можно перехватить и подобрать офлайн. Поэтому при использовании MSCHAPv2 важно задавать сложные пароли и комбинировать его с сильными алгоритмами шифрования, например AES-256.
Сравнение IKEv2 с другими протоколами: OpenVPN, WireGuard, L2TP
IKEv2 часто сравнивают с OpenVPN и WireGuard. OpenVPN — это open-source протокол, который работает через TCP или UDP и может маскироваться под обычный HTTPS-трафик на порту 443, что делает его устойчивым к блокировкам. Однако он медленнее IKEv2 из-за работы в пользовательском пространстве.
WireGuard — современный протокол с открытым исходным кодом, который использует только UDP и отличается высокой скоростью и простотой. Но он легче блокируется, так как его трафик легко идентифицировать. IKEv2 занимает промежуточную позицию: быстрее OpenVPN, но менее гибок в обходе блокировок.
L2TP/IPsec — более старая связка, которая, по словам Эдварда Сноудена, была скомпрометирована спецслужбами. Она медленнее и менее стабильна, чем IKEv2, поэтому сегодня её используют реже. Для большинства задач IKEv2 — хороший баланс скорости, безопасности и совместимости.
Настройка IKEv2-сервера на Ubuntu с StrongSwan
StrongSwan — популярный open-source демон IPSec для Linux. Для установки на Ubuntu 20.04 выполните:
sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-pluginsПакет libcharon-extauth-plugins нужен для поддержки EAP-MSCHAPv2, а libstrongswan-extra-plugins добавляет современные алгоритмы, включая Curve25519. Важно: в Ubuntu 20.04 отсутствует плагин MD4, который требуется для Windows-клиентов. Его нужно скопировать из более старых версий или собрать вручную, иначе подключение с Windows не заработает.
После установки создайте структуру каталогов для сертификатов:
mkdir -p ~/pki/{cacerts,certs,private}
chmod 700 ~/pkiЗатем сгенерируйте корневой ключ и сертификат центра сертификации (CA):
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pemСрок действия 10 лет — разумный выбор для корневого сертификата, так как его придётся распространять на все клиентские устройства.
Генерация сертификатов и настройка ipsec.conf
Для сервера создайте отдельный ключ и сертификат, указав в поле Common Name (CN) и Subject Alternative Name (SAN) доменное имя или IP-адрес сервера:
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
pki --pub --in ~/pki/private/server-key.pem --type rsa | pki --issue --lifetime 1825 --cacert ~/pki/cacerts/ca-cert.pem --cakey ~/pki/private/ca-key.pem --dn "CN=server_domain_or_IP" --san server_domain_or_IP --flag serverAuth --flag ikeIntermediate --outform pem > ~/pki/certs/server-cert.pemФлаг serverAuth указывает, что сертификат используется для проверки подлинности сервера, а ikeIntermediate — для совместимости со старыми клиентами macOS. Скопируйте файлы в /etc/ipsec.d:
sudo cp -r ~/pki/* /etc/ipsec.d/Теперь настройте /etc/ipsec.conf. Основные параметры:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identityПараметр leftsubnet=0.0.0.0/0 заставляет клиентов отправлять весь трафик через VPN. rightauth=eap-mschapv2 включает аутентификацию по паролю. Строка ike и esp задают наборы шифров для совместимости с разными ОС.
Настройка IKEv2 на MikroTik с сертификатами
MikroTik RouterOS также поддерживает IKEv2. Для аутентификации по сертификатам создайте центр сертификации прямо на роутере. В меню System → Certificates создайте корневой сертификат с ключом 2048 бит и сроком 10 лет. На вкладке Key Usage оставьте только crl sign и key cert. sign, затем подпишите его.
Далее выпустите серверный сертификат. Важно: сервер должен иметь статический IP или доменное имя, которое будет указано в сертификате. Если клиент подключится по другому адресу, соединение будет отклонено. В поле Subject Alt. Name укажите IP или FQDN сервера.
Для клиентов создайте отдельные сертификаты и экспортируйте их в формате PKCS12 с паролем. Этот файл содержит закрытый ключ, клиентский сертификат и корневой CA, что упрощает установку на устройства.
Затем настройте IPsec: создайте профиль, предложения шифрования (например, AES-128/192/256-CBC), пул IP-адресов для клиентов, Mode Config, политику и пира. В политике укажите Src. Address=0.0.0.0/0 и Dst. Address=172.16.200.0/24, а в Action выберите созданные предложения. Пир настройте как Passive с Address=0.0.0.0/0.
Подключение клиентов: Windows, macOS, Android
На Windows подключение к IKEv2 VPN настраивается через «Параметры → Сеть и Интернет → VPN». Добавьте новое подключение, укажите адрес сервера, тип VPN — IKEv2, и введите учётные данные. Если используется сертификат, его нужно импортировать в хранилище сертификатов.
На macOS откройте «Системные настройки → Сеть», создайте новое подключение VPN с типом IKEv2, укажите адрес сервера и учётные данные. Для сертификатов импортируйте их в связку ключей.
На Android перейдите в «Настройки → Сеть → VPN», добавьте новое подключение, выберите тип IKEv2/IPsec MSCHAPv2, введите адрес сервера и логин с паролем. Если используется сертификат, укажите его в настройках.
Важно: для Windows-клиентов может потребоваться плагин MD4 на сервере, иначе аутентификация MSCHAPv2 не пройдёт. Также убедитесь, что на сервере открыты UDP-порты 500 и 4500.
Безопасность IKEv2: ограничения и рекомендации
IKEv2 считается безопасным протоколом, но у него есть особенности. Он использует фиксированные UDP-порты 500 и 4500, что делает его уязвимым для блокировки на межсетевых экранах. Кроме того, MSCHAPv2 имеет известные уязвимости: пароли можно перехватить и подобрать офлайн. Поэтому для критически важных данных лучше использовать сертификаты или более современные методы аутентификации.
Протокол IKEv2 не маскирует трафик под другой протокол, поэтому его можно обнаружить при глубоком анализе пакетов. Если требуется скрыть факт использования VPN, лучше выбрать OpenVPN или Shadowsocks.
Для повышения безопасности используйте длинные пароли (не менее 12 символов), включайте двухфакторную аутентификацию, если это возможно, и регулярно обновляйте серверное ПО. Также рекомендуется использовать современные наборы шифров, такие как AES-256-GCM или ChaCha20-Poly1305.
Как выбрать VPN-провайдера с поддержкой IKEv2
Многие коммерческие VPN-сервисы предлагают IKEv2 в качестве одного из протоколов. Например, NordVPN, ExpressVPN и Atlas VPN поддерживают IKEv2. При выборе обратите внимание на количество серверов, их географию, политику логирования и наличие дополнительных функций, таких как kill switch.
Если вы настраиваете собственный сервер, выбирайте хостинг с низкой задержкой и хорошей пропускной способностью. Для IKEv2 важна стабильность соединения, поэтому выбирайте провайдера с высоким аптаймом.
Также учитывайте, что IKEv2 может быть заблокирован в некоторых странах. В таких случаях используйте альтернативные протоколы, например OpenVPN или WireGuard, которые сложнее обнаружить.
Частые ошибки при настройке IKEv2 и их решение
Одна из распространённых проблем — несоответствие сертификата адресу сервера. Если клиент подключается по IP, а в сертификате указано доменное имя, соединение будет отклонено. Убедитесь, что CN и SAN совпадают с адресом, который использует клиент.
Другая частая ошибка — отсутствие плагина MD4 на сервере для Windows-клиентов. В Ubuntu 20.04 его нет по умолчанию, поэтому нужно скопировать модуль из старой версии или собрать вручную.
Также проверьте, что на сервере открыты UDP-порты 500 и 4500, и что в файрволе разрешён трафик IPSec. Если клиент не получает IP-адрес, проверьте настройки пула и Mode Config.
Если соединение устанавливается, но нет доступа в интернет, проверьте параметр leftsubnet=0.0.0.0/0 и настройки NAT на сервере.
Вопросы и ответы
Что такое MSCHAPv2 и зачем он нужен в IKEv2?
MSCHAPv2 — это протокол аутентификации по логину и паролю, который используется в IKEv2 для проверки подлинности клиента. Он поддерживается большинством операционных систем, что упрощает настройку VPN без выпуска сертификатов для каждого пользователя. Однако MSCHAPv2 имеет уязвимости, поэтому рекомендуется использовать сложные пароли и комбинировать его с сильным шифрованием.
Какие порты использует IKEv2?
IKEv2 использует UDP-порт 500 для обмена ключами и UDP-порт 4500 для обхода NAT. Убедитесь, что эти порты открыты на сервере и не блокируются файрволом.
Чем IKEv2 отличается от OpenVPN?
IKEv2 работает на уровне IP и использует UDP-порты 500/4500, что обеспечивает высокую скорость. OpenVPN работает в пользовательском пространстве и может использовать TCP-порт 443, что делает его более устойчивым к блокировкам. IKEv2 быстрее, но легче обнаруживается.
Можно ли использовать IKEv2 для обхода блокировок?
IKEv2 использует фиксированные порты, поэтому его трафик легко идентифицировать и заблокировать. Для обхода блокировок лучше использовать OpenVPN или WireGuard, которые могут маскироваться под обычный трафик.
Как настроить IKEv2 на Windows 10?
В Windows 10 откройте «Параметры → Сеть и Интернет → VPN», нажмите «Добавить VPN-подключение», выберите тип IKEv2, укажите адрес сервера и учётные данные. Если используется сертификат, импортируйте его в хранилище сертификатов.
Почему не работает IKEv2 на Ubuntu 20.04 с Windows-клиентом?
Скорее всего, на сервере отсутствует плагин MD4, который необходим для MSCHAPv2. В Ubuntu 20.04 он не устанавливается по умолчанию. Скопируйте модуль из Ubuntu 18.04 или соберите его из исходников.
Безопасен ли IKEv2 для корпоративного использования?
IKEv2 считается безопасным, но MSCHAPv2 имеет уязвимости. Для корпоративного использования рекомендуется аутентификация по сертификатам или использование более современных методов, таких как EAP-TLS. Также важно использовать сильные алгоритмы шифрования и регулярно обновлять ПО.