我有一个新的NetworkExtension框架创建的VPN配置应用程序。它工作得很好,但是现在我需要添加一些规则来打开这个VPN,只有当我试图连接到一个特定的URL时。我计划使用NEVPNManager的connectOnDemand功能,但它似乎不适合我。当我在safari中打开http://some-site.com时,我的虚拟专用网连接应该建立起来,但出于某种原因它没有建立起来。我尝试了一种不同类型的配置,并使用生成的.mobileconfig文件使connectOnDemand工作,但没有成功。这有什么问题吗?我正在测试这样的代码:
let manager = NEVPNManager.sharedManager()
manager.enabled = true
manager.loadFromPreferencesWithCompletionHandler { (err) -> Void in
manager.removeFromPreferencesWithCompletionHandler { (err0) -> Void in
print("err0 \(err0)")
print("err \(err)")
let config = NEVPNProtocolIPSec()
config.localIdentifier = "NEVPNProtocolIPSec"
config.remoteIdentifier = "NEVPNProtocolIPSecRemote"
config.disconnectOnSleep = true
config.serverAddress = server
config.authenticationMethod = .Certificate
//configurating here
manager.protocolConfiguration = config
let onDemandRule1 = NEOnDemandRuleConnect()
onDemandRule1.DNSSearchDomainMatch = ["some-site.com", "*.some-site.com"]
manager.onDemandRules = [onDemandRule1]
manager.onDemandEnabled = true
manager.saveToPreferencesWithCompletionHandler({ (err2) -> Void in
print("err2 \(err2)")
})
}
}发布于 2016-04-12 15:37:53
我把它和接下来的规则结合起来:
let onDemandRule = NEOnDemandRuleEvaluateConnection()
let evaluateRule = NEEvaluateConnectionRule(matchDomains: ["*.some-site.com"], andAction: .ConnectIfNeeded)
evaluateRule.probeURL = NSURL(string: "https://a.url.accecable.only.from.vpn")
onDemandRule.connectionRules = [evaluateRule]
manager.protocolConfiguration = config
manager.onDemandRules = [onDemandRule]发布于 2016-04-07 20:29:07
您需要添加行
manager.onDemandEnabled = truehttps://stackoverflow.com/questions/36478376
复制相似问题