我正在使用 VPN,我问了这个问题,但现在我想使用 L2TP 协议而不是 IPSec 协议创建一个 VPN 配置文件。
我有我需要的所有信息(用户、服务器、密码、预共享密钥)并且服务正确打开。我正在尝试通过在 App Store 中创建正确的设置配置文件(如应用程序“1.1.1.1”)来创建一个简单地连接到 VPN 的应用程序。
我正在使用 NEVPNProtocolIPSec 类,但我认为是错误的。L2PT 协议没有类?
在设备设置中,我可以为 L2PT 手动配置 VPN,但我如何使用 NEVPNManager 来配置?
这是我的代码:
class VPN {
let vpnManager = NEVPNManager.shared();
private var vpnLoadHandler: (Error?) -> Void { return
{ (error:Error?) in
if ((error) != nil) {
print("Could not load VPN Configurations")
return;
}
let p = NEVPNProtocolIPSec()
p.username = "myUsername"
p.serverAddress = "myAddressServer"
p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
let kcs = KeychainService();
kcs.save(key: "SHARED", value: "sharedPsw")
kcs.save(key: "VPN_PASSWORD", value: "password")
p.sharedSecretReference = kcs.load(key: "SHARED")
p.passwordReference = kcs.load(key: "VPN_PASSWORD")
p.useExtendedAuthentication = true
p.disconnectOnSleep = false
self.vpnManager.protocolConfiguration = p
self.vpnManager.localizedDescription = "myDescription"
self.vpnManager.isEnabled = true
self.vpnManager.isOnDemandEnabled = true
self.vpnManager.saveToPreferences(completionHandler: self.vpnSaveHandler)
}
}
private var vpnSaveHandler: (Error?) -> Void { return
{ (error:Error?) in
if (error != nil) {
print("Could not save VPN Configurations")
return
} else {
do {
try self.vpnManager.connection.startVPNTunnel()
} catch let error {
print("Error starting VPN Connection \(error.localizedDescription)");
}
}
}
}
public func connectVPN() {
//For no known reason the process of saving/loading the VPN configurations fails.On the 2nd time it works
do {
try self.vpnManager.loadFromPreferences(completionHandler: self.vpnLoadHandler)
} catch let error {
print("Could not start VPN Connection: \(error.localizedDescription)" )
}
}
public func disconnectVPN() ->Void {
vpnManager.connection.stopVPNTunnel()
}
我没有工作,但它为 IPSec 创建了一个 VPN 配置,但我想要 L2PT。请问其他人可以帮助我吗?
也许有人面临同样的问题。