1

新しい NetworkExtension フレームワークによって作成された VPN 構成のアプリがあります。問題なく動作しますが、特定の URL に接続しようとしているときにのみこの VPN を有効にするルールを追加する必要があります。NEVPNManager の connectOnDemand 機能を使用する予定でしたが、うまくいかないようです。http://some-site.comを safari で開くと、VPN 接続が確立されるはずですが、何らかの理由で確立されません。connectOnDemand を機能させるために、生成された .mobileconfig ファイルを使用するだけでなく、別のタイプの構成も試しましたが、うまくいきませんでした。どうしたの?私は次のようなコードでテストしています:

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)")
                })
            }
        }
4

2 に答える 2

7

次のルールで機能させました。

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-12T15:37:53.817 に答える