首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetworkExtension connectOnDemand规则不工作

NetworkExtension connectOnDemand规则不工作
EN

Stack Overflow用户
提问于 2016-04-07 13:55:50
回答 2查看 2.3K关注 0票数 1

我有一个新的NetworkExtension框架创建的VPN配置应用程序。它工作得很好,但是现在我需要添加一些规则来打开这个VPN,只有当我试图连接到一个特定的URL时。我计划使用NEVPNManager的connectOnDemand功能,但它似乎不适合我。当我在safari中打开http://some-site.com时,我的虚拟专用网连接应该建立起来,但出于某种原因它没有建立起来。我尝试了一种不同类型的配置,并使用生成的.mobileconfig文件使connectOnDemand工作,但没有成功。这有什么问题吗?我正在测试这样的代码:

代码语言:javascript
复制
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)")
                })
            }
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-12 15:37:53

我把它和接下来的规则结合起来:

代码语言:javascript
复制
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]
票数 7
EN

Stack Overflow用户

发布于 2016-04-07 20:29:07

您需要添加行

代码语言:javascript
复制
manager.onDemandEnabled = true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36478376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档