#ios #swift #vpn
#iOS #swift #vpn
Вопрос:
С момента выхода iOS 14 startVPNTunnel() перестал работать, и приложение не создает VPN-соединение.
Моя конфигурация следующая:
private func _save(_ account: VPNServer, completion: VPNConfigureCompletion?) {
let keychain = Keychain(service: Bundle.main.bundleIdentifier!)
keychain["sharedSecret"] = account.key
let ikev2Protocol = NEVPNProtocolIKEv2()
ikev2Protocol.useExtendedAuthentication = false
ikev2Protocol.authenticationMethod = .sharedSecret
ikev2Protocol.disconnectOnSleep = false
ikev2Protocol.serverAddress = account.ip
ikev2Protocol.sharedSecretReference = keychain[attributes: "sharedSecret"]?.persistentRef
ikev2Protocol.remoteIdentifier = account.ip
if #available(iOS 13.0, *) {
ikev2Protocol.enableFallback = true
}
vpnManager.protocolConfiguration = ikev2Protocol
vpnManager.isEnabled = true
vpnManager.saveToPreferences { error in
if let err = error {
print("Failed to save profile: (err.localizedDescription)")
self.delegate?.setConnectionStatus(status: .disconnected)
NotificationCenter.default.post(name: NSNotification.Name.NEVPNStatusDidChange, object: "Failed to save profile")
} else {
completion?()
}
}
}
Этот код сохраняет конфигурацию, но при попытке подключения он выдает ошибку (даже вручную в настройках iPhone). Он корректно работал на iOS 13. Мы пытались сделать сервер совместимым с IPv6, но безуспешно. Я также безуспешно пытался добавить параметры VPN.IKEv2.childsecurityassocationparameters.
У кого-нибудь есть решение?