Вопрос или проблема
Я хочу подключить VPN Strongswan IKEv2 на устройствах iOS. Он использует сервер FreeRADIUS для AAA пользователей.
Он уже отлично работает на устройствах Android и Windows. Но когда я пытаюсь подключиться с помощью устройства iOS, он отображает приведенные ниже журналы. Я вручную создаю профиль VPN и вручную устанавливаю сертификаты .p12 для аутентификации сервера.
имя хоста сервера: nas.example.com
айпи сервера: 89.89.89.89
айпи клиента: 99.99.99.99
ipsec.conf
config setup
charondebug="all"
uniqueids=no
conn ikev2-vpn
auto=add
compress=yes
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=3600s
dpdtimeout=5s
rekey=no
left=%any
leftid=89.89.89.89
leftcert=vpn-server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-radius
#rightauth=eap-mschapv2
rightdns=8.8.8.8,8.8.4.4
rightsourceip=10.10.10.0/24
rightsendcert=never
eap_identity=%identity
журналы со стороны сервера
06 окт 02:14:43 nas.example.com charon[3607]: 13[NET] отправка пакета: от 89.89.89.89[4500] к 99.99.99.99[4500] (792 байта)
06 окт 02:15:00 nas.example.com charon[3607]: 14[NET] получен пакет: от 99.99.99.99[500] к 89.89.89.89[500] (604 байта)
06 окт 02:15:00 nas.example.com charon[3607]: 14[ENC] разобран запрос IKE_SA_INIT 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
06 окт 02:15:00 nas.example.com charon[3607]: 14[IKE] 99.99.99.99 инициирует IKE_SA
06 окт 02:15:00 nas.example.com charon[3607]: 14[IKE] удаленный узел находится за NAT
06 окт 02:15:00 nas.example.com charon[3607]: 14[IKE] DH группа MODP_2048 неприемлема, запрашивается MODP_1024
06 окт 02:15:00 nas.example.com charon[3607]: 14[ENC] генерируется ответ IKE_SA_INIT 0 [ N(INVAL_KE) ]
06 окт 02:15:00 nas.example.com charon[3607]: 14[NET] отправка пакета: от 89.89.89.89[500] к 99.99.99.99[500] (38 байт)
06 окт 02:15:01 nas.example.com charon[3607]: 15[NET] получен пакет: от 99.99.99.99[500] к 89.89.89.89[500] (476 байт)
06 окт 02:15:01 nas.example.com charon[3607]: 15[ENC] разобран запрос IKE_SA_INIT 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
06 окт 02:15:01 nas.example.com charon[3607]: 15[IKE] 99.99.99.99 инициирует IKE_SA
06 окт 02:15:01 nas.example.com charon[3607]: 15[IKE] удаленный узел находится за NAT
06 окт 02:15:01 nas.example.com charon[3607]: 15[ENC] генерируется ответ IKE_SA_INIT 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(MULT_AUTH) ]
06 окт 02:15:01 nas.example.com charon[3607]: 15[NET] отправка пакета: от 89.89.89.89[500] к 99.99.99.99[500] (316 байт)
06 окт 02:15:01 nas.example.com charon[3607]: 03[NET] получен пакет: от 99.99.99.99[4500] к 89.89.89.89[4500] (484 байта)
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] неизвестный тип атрибута (25)
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] разобран запрос IKE_AUTH 1 [ IDi N(INIT_CONTACT) N(MOBIKE_SUP) IDr CPRQ(ADDR DHCP DNS MASK ADDR6 DHCP6 DNS6 (25)) N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
06 окт 02:15:01 nas.example.com charon[3607]: 03[CFG] ищу конфигурации ровера, соответствующие 89.89.89.89[89.89.89.89]...99.99.99.99[varun]
06 окт 02:15:01 nas.example.com charon[3607]: 03[CFG] выбрана конфигурация ровера 'ikev2-vpn'
06 окт 02:15:01 nas.example.com charon[3607]: 03[IKE] инициирован метод EAP_IDENTITY (id 0x00)
06 окт 02:15:01 nas.example.com charon[3607]: 03[IKE] получено ESP_TFC_PADDING_NOT_SUPPORTED, не используется ESPv3 TFC padding
06 окт 02:15:01 nas.example.com charon[3607]: 03[IKE] ровера поддерживает MOBIKE
06 окт 02:15:01 nas.example.com charon[3607]: 03[IKE] аутентификация '89.89.89.89' (я) с использованием RSA подписи успешна
06 окт 02:15:01 nas.example.com charon[3607]: 03[IKE] отправка сертификата конечного узла "C=US, O=nas.example.com, CN=89.89.89.89"
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] генерируется ответ IKE_AUTH 1 [ IDr CERT AUTH EAP/REQ/ID ]
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] разделение сообщения IKE длиной 1980 байт на 2 фрагмента
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] генерируется ответ IKE_AUTH 1 [ EF(1/2) ]
06 окт 02:15:01 nas.example.com charon[3607]: 03[ENC] генерируется ответ IKE_AUTH 1 [ EF(2/2) ]
06 окт 02:15:01 nas.example.com charon[3607]: 03[NET] отправка пакета: от 89.89.89.89[4500] к 99.99.99.99[4500] (1248 байт)
06 окт 02:15:01 nas.example.com charon[3607]: 03[NET] отправка пакета: от 89.89.89.89[4500] к 99.99.99.99[4500] (792 байта)
06 окт 02:15:12 nas.example.com charon[3607]: 16[JOB] удаление полураскрытого IKE_SA с 99.99.99.99 после истечения времени
Любая помощь будет оценена. Спасибо
Вам необходимо добавить сертификат /etc/ipsec.d/certs/vpn-server-cert.pem на MacBook, дважды щелкнув по нему, и установить полный уровень доверия для него (установить “параметры использования сертификата”) в настройках хранилища сертификатов MacBook.
На IOS/MAC вам не нужно устанавливать сертификат, если вы используете EAP. Вы можете создать 2 типа профиля подключения. Лучший, который работает для меня, таков.
config setup
strictcrlpolicy=no
uniqueids=never
conn %default
keyexchange=ikev2
ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!
leftid=111.111.111.111
ikelifetime=24h
keylife=24h
dpdaction=clear
dpdtimeout=3600s
dpddelay=1800s
compress=no
rekey=yes
inactivity=1800s
forceencaps=yes
left=%defaultroute
leftsubnet=0.0.0.0/0,::/0
rightsourceip=%config4,%config6
leftfirewall=yes
rightsourceip=10.10.0.0/16,2001:db8::3:0/16
keyingtries=%forever
fragmentation=yes
right=%any
mobike=yes
rekeymargin=1m
keyingtries=1
lefthostaccess=yes
type=tunnel
conn IPSec-IKEv2
leftauth=pubkey
leftcert=vpnHostCert.pem
rightid=%any
eap_identity=%any
auto=add
conn IOS-PSK-VPN
also=IPSec-IKEv2
rightauth=psk
rightsendcert=never
conn IOS-EAP-VPN
also=IPSec-IKEv2
rightauth=eap-mschapv2
rightsendcert=never
conn IOS-EAP-Radius
also=IPSec-IKEv2
rightauth=eap-radius
rightsendcert=never
conn windows-android
also=IPSec-IKEv2
rightauth=pubkey
rightcert=userCert.pem
Мы создали .sh файл для установки strongswan на ubuntu и запуска ipsec vpn. Скрипт можно найти по адресу
Также вы можете использовать наше приложение IKEv2, которое работает для IOS и MAC и может быть загружено из магазина apple по ссылке
Brooog IKEv2
Ответ или решение
К подключению VPN с использованием IKEv2 на устройствах iOS с использованием Strongswan и FreeRADIUS для аутентификации пользователей существует несколько важных аспектов, которые необходимо учесть. Учитывая, что данное решение уже успешно работает на Android и Windows, возникшие проблемы могут быть связаны с настройками конфигурации или ограничениями на стороне iOS. Расмотрим основные моменты, которые помогут осуществить успешное подключение.
Проверка конфигурации сервера
1. Конфигурация Strongswan
Ваша конфигурация ipsec.conf
выглядит хорошо, однако существуют некоторые параметры, которые могут вызывать несовместимость с iOS. Я рекомендую внести изменения в секцию conn
для расширения поддержки криптографических алгоритмов:
conn %default
...
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
...
iOS устройства могут не поддерживать некоторые параметры автоматически. Параметры должны быть настроены таким образом, чтобы включать более распространённые шифры, такие как aes128-sha256
и aes256-sha256
.
2. Поддержка NAT
Поскольку ваше устройство находится за NAT, убедитесь, что включены все необходимые параметры NAT и MOBIKE:
nat_traversal=yes
mobike=yes
Это позволит VPN корректно работать, когда клиент находится за NAT.
Установка и доверие сертификатов
На устройствах iOS, в отличие от Windows и Android, могут быть свои нюансы в установке сертификатов. Вам необходимо убедиться, что сертификат сервера установлен правильно и установлен в доверенные. Следуйте этим шагам:
- Установите сертификат сервера (например,
vpn-server-cert.pem
) на ваше iOS устройство. - Перейдите в Настройки > Основные > Профили и убедитесь, что сертификат доверен. Для этого выберите сертификат и нажмите "Доверять".
При использовании EAP на iOS, установка пользовательских сертификатов может не требоваться, но такой шаг уберет все возможные проблемы с доверием сертификатов.
Конфигурация профиля VPN
Вы также можете создать VPN профиль для iOS, которому необходимо соответствовать стандартам IKEv2. Можно использовать следующую структуру для конфигурирования:
conn IOS-EAP-Radius
also=IPSec-IKEv2
rightauth=eap-radius
rightsendcert=never
Этот профиль должен быть активно настроен для работы с EAP-RADIUS, причем rightauth
должен быть настроен на eap-radius
, как у вас уже указано в конфигурации ikev2-vpn
.
Логи сервера
Из приведенных логов видно, что сервер отвечает с ошибкой N(INVAL_KE)
, что указывает на невозможность согласования параметров обмена ключами. Убедитесь, что:
- Имеющиеся параметры Диффи-Хеллмана соответствуют тем, которые поддерживаются на iOS. Рассмотрите возможность изменить DH group на
modp1024
.
Тестирование и поиск ошибок
После выполнения всех перечисленных шагов:
- Выполните тестовые подключения и внимательно анализируйте логи.
- Используйте инструменты, такие как
tcpdump
на сервере для анализа трафика, чтобы убедиться, что пакеты правильно обмениваются.
Если после выполнения всех этих шагов проблемы сохраняются, рекомендуется обратиться к официальной документации Strongswan и проверять наличие обновлений, а также проверить проблемы совместимости с конкретными версиями iOS.
Заключение
Подключение Strongswan IKEv2 VPN на устройствах iOS возможно и при соблюдении всех вышеперечисленных рекомендаций должно пройти без ошибок. Рекомендуем провести все тесты в безопасной среде и учитывать соответствие всех настроек требованиям безопасности, установленным для вашего бизнеса. Если возникнут остаточные проблемы, успешное взаимодействие с сообществом в форумах и официальная поддержка Strongswan могут также оказать значительное содействие.