我从Android获取.ovpn文件,并且具有用户名和密码,我应该连接到vpn服务器,但是我不确定该怎么做。我尝试过这样的事情:

let manager = NEVPNManager.sharedManager()
manager.loadFromPreferencesWithCompletionHandler { (error) -> Void in
  if manager.`protocol`  == nil {
    let newIPSec = NEVPNProtocolIKEv2()
    newIPSec.serverAddress = "xxx.xxx.xxx.xxx"
    newIPSec.username = "username"
    let keychain = Keychain(service: "com.app.ios")
    let data = keychain[data: "vpnpassword"]
    newIPSec.passwordReference = data
    newIPSec.authenticationMethod = NEVPNIKEAuthenticationMethod.None
    newIPSec.disconnectOnSleep = false

    manager.`protocol` = newIPSec
    manager.enabled = true

    manager.saveToPreferencesWithCompletionHandler({ (error) -> Void in
      print(error)
    })
  }
}


我不知道如何添加证书(在.ovpn中的<ca>之间)信息以及如何设置它。文件.ovpn如下所示(我只是删除<ca>标记中的数据并更改服务器地址:

client
dev tun
proto udp
remote xx.xx.xx.xx 443
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3

<auth-user-pass>
#username#
#userpass#
</auth-user-pass>

cipher AES-256-CBC
<ca>
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
</ca>


谢谢你的帮助

最佳答案

您正在使用NEVPNProtocolIKEv2连接到openVPN服务器。
个人VPN仅支持IKE v1和v2的ipsec(AEP和证书身份验证)

关于ios - Swift-使用NEVPNManager连接到VPN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33923854/

10-12 15:42