iOS 配置文件 VPN 按需在 iOS8 上工作,但在 iOS9 开发测试版上不工作

iOS Configuration Profile VPN on demand working on iOS8 but not on iOS9 dev beta

我有一个 iOS 配置文件,上面配置了 IPSec VPN。 OnDemand 选项在 iOS8.

上效果很好

在 iOS9 上测试配置文件时(为即将发布的版本做好准备)我遇到了 OnDemand 配置问题。当我尝试访问 safari 上的某些域时,它根本无法连接。 手动连接到 VPN 有效

这是我的移动配置的按需部分:

<key>IPSec</key>
        <dict>
            <key>AuthenticationMethod</key>
            <string>Certificate</string>


        <key>OnDemandEnabled</key>
            <integer>1</integer>


<key>OnDemandRules</key>
            <array>
                <dict>
                    <key>Action</key>
                    <string>EvaluateConnection</string>
                    <key>ActionParameters</key>
                    <array>
                        <dict>
                            <key>Domains</key>
                            <array>
                                <string>duckduckgo.com</string>

                            </array>
                            <key>DomainAction</key>
                            <string>ConnectIfNeeded</string>
                            <key>RequiredURLStringProbe</key>
                            <string>https://vpn.test.mydomain.com</string>
                        </dict>
                    </array>
                </dict>
            </array> 
            ....
            ....

在为 iOS9 尝试了很多配置之后,我还设法让 VPN 始终连接 OnDemand,除了配置文件安装之外没有任何操作,但这不是我想要的行为.

这是始终允许点播的配置:

<key>IPSec</key>
        <dict>
            <key>AuthenticationMethod</key>
            <string>Certificate</string>


        <key>OnDemandEnabled</key>
            <integer>1</integer>


<key>OnDemandRules</key>
            <array>
                <dict>
                    <key>Action</key>
                    <string>Connect</string>
                    <key>ActionParameters</key>
                    <array>
                        <dict>
                            <key>Domains</key>
                            <array>
                                <string>duckduckgo.com</string>

                            </array>
                            <key>DomainAction</key>
                            <string>ConnectIfNeeded</string>
                            <key>RequiredURLStringProbe</key>
                            <string>https://vpn.test.mydomain.com<</string>
                        </dict>
                    </array>
                </dict>
            </array>

我认为这是因为 "action" 键的 "connect" 值不检查 ActionParameters,只是自动连接到 VPN 服务器。

我希望我遗漏了苹果尚未在 official docs for the configurations.

中更新的一些小新功能

任何修复 iOS9 配置文件的建议都将不胜感激。 谢谢。

iOS 9 并且 onDemand 已损坏。过去适用于 iOS 8 的功能不适用于 iOS 9,尽管发行说明中没有提及它。

我建议您注册成为开发人员以访问 9.1

经过大量研究后,我找到了一种配置,可以使按需功能在 iOS9 上运行。这是适合我的:

注意 RequiredURLStringProbe 键。应该是VPN网络外无法访问的url。

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
<dict>


    <key>PayloadContent</key>
        <array>
            <dict>
                <key>IPSec</key>
                <dict>
            <key>AuthenticationMethod</key>
            <string>Certificate</string>


<key>OnDemandEnabled</key>
                <integer>1</integer>


<key>OnDemandRules</key>
            <array>
                <dict>
                    <key>Action</key>
                    <string>EvaluateConnection</string>
                    <key>ActionParameters</key>
                    <array>
                        <dict>
                            <key>Domains</key>
                            <array>
                                anyDomainForOnDemand.com
                            </array>
                            <key>DomainAction</key>
                            <string>ConnectIfNeeded</string>
                            <key>RequiredURLStringProbe</key>
                            <string>https://a.url.accecable.only.from.vpn</string>
                        </dict>
                    </array>
                </dict>
            </array>

....
....
....