Моя компания купила VPN-серверы с приложением iOS для управления VPN-подключением к этим серверам. Мне нужно написать такое же приложение для устройств Android. Я никогда не работал с VPN-соединением на Android и вообще.
В коде Swift есть некоторые манипуляции:
Код: Выделить всё
let prtcl = NEVPNProtocolIPSec()
prtcl.username = vpnAcc.vpnAcc
prtcl.passwordReference = keychainService.load(key: "password")
prtcl.serverAddress = vpnAcc.server
prtcl.remoteIdentifier = vpnAcc.remoteID
prtcl.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
prtcl.sharedSecretReference = keychainService.load(key: "shared")
prtcl.useExtendedAuthentication = true
prtcl.disconnectOnSleep = false
После поиска в документации Apple о NEVPNProtocolIPSec Я обнаружил, что это VPN-соединение IPSec IKEv1.
Прежде всего я попробовал использовать встроенный VPN-клиент на Android с разными версиями устройств (11, 10 и 7 версии ОС). Этот клиент находится в Настройки-Сеть-VPN (на разных устройствах может быть по-разному). Когда я выбираю «Добавить профиль», есть несколько типов подключения: PPTP, L2TP/IPSec PSK, L2TP/IPSec RSA, IPSec Xauth PSK, IPSec Xauth RSA, IPSec Hybrid RSA, IKEv2/IPSec MSCHAPv2, IKEv2/IPSec PSK, IKEv2/IPSec RSA.
Итак, я попробовал добавить профиль, используя IPSec Xauth PSK вводит IP, имя пользователя, пароль и PSK в соответствующие поля, но это не работает, соединение не устанавливается. Я также попробовал все, что содержит «PSK» в названии: L2TP/IPSec PSK и IKEv2/IPSec PSK. Тоже нет результата.
Может быть есть какие-то ограничения по IPSec в ОС Android?
Я много раз гуглил, пытался собрать библиотеку Strongswan, но для подключения IKEv1 нет поддержки PSK.
Есть идеи, что я могу сделать, чтобы установить VPN-соединение? Может быть, моей компании придется обновить серверы до IKEv2? И как после этого обновления я могу установить VPN-соединение программно?
Подробнее здесь: https://stackoverflow.com/questions/789 ... id-devices
Мобильная версия