我有一个我在iOS 6上设置的配置文件,因此当点击某个URL时,VPN就会启动。
我使用以下配置配置文件键执行此操作:
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandMatchDomainsAlways</key>
<array>
<string>my_homepage.com</string>
</array>
在iOS 6上,这似乎工作正常。但是,在iOS 7中,OnDemandMatchDomainAlways似乎已被弃用,而不是OnDemandRules键,以及&#34; OnDemandMatchDomainAlways&#34;的默认行为。表现得像&#34; OnDemandMatchDomainsOnRetry&#34;。 所以现在,我试图通过使用OnDemandRules键让我以前的设置在iOS 7上工作,如下所示:
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
<key>DNSDomainMatch</key>
<array>
<string>my_homepage.com</string>
</array>
</dict>
</array>
我也尝试使用这种方法进行设置:
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>EvaluateConnection</string>
<key>ActionParameters</key>
<array>
<dict>
<key>Domains</key>
<array>
<string>url-that-redirects-if-vpn-off.com</string>
</array>
<key>DomainAction</key>
<string>ConnectIfNeeded</string>
</dict>
</array>
</dict>
</array>
然而,这些方法似乎都不起作用。有谁知道如何设置iOS VPN配置文件,以便VPN OnDemand功能在iOS 7上的工作方式与iOS6相同?
提前致谢,
答案 0 :(得分:5)
我遇到了同样的问题,并且能够通过将OnDemanRules密钥作为IPSec块的一部分来再次获得按需功能,即
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>Certificate</string>
<!-- Other IPSEC VPN properties here. -->
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
<key>DNSDomainMatch</key>
<array>
<string>my_homepage.com</string>
</array>
</dict>
</array>
</dict>
请注意,这与发布的配置文件参考文档相矛盾。但是,就我而言,它使事情有效。
答案 1 :(得分:4)
这个片段对我有用。我试图模仿“永远连接”的行为
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>Certificate</string>
<key>OnDemandEnabled</key>
<integer>1</integer>
<!-- on demand rules -->
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>EvaluateConnection</string>
<key>ActionParameters</key>
<array>
<dict>
<key>Domains</key>
<array>
<string>domain.com</string>
</array>
<key>RequiredURLStringProbe</key>
<string>https://host.domain.com/nonexistent_url</string>
<key>DomainAction</key>
<string>ConnectIfNeeded</string>
</dict>
</array>
</dict>
</array>
<!-- on demand rules -->
<key>PayloadCertificateUUID</key>
<string>...</string>
<key>PromptForVPNPIN</key>
<false/>
<key>RemoteAddress</key>
<string>...</string>
</dict>
答案 2 :(得分:3)
以下是我用于iOS 7和7.1的VPN on Demand的个人资料摘录。
<key>AuthenticationMethod</key>
<string>Certificate</string>
<key>OnDemandEnabled</key>
<integer>1</integer>
<key>OnDemandRules</key>
<array>
<dict>
<key>Action</key>
<string>Connect</string>
<key>URLStringProbe</key>
<string>http://internet-accessible-url.example.com</string>
</dict>
</array>
<key>PayloadCertificateUUID</key>
只要iOS设备尝试通过移动数据或通过WiFi访问互联网,它就会触发和自动VPN on Demand连接,无需用户交互。
我使用的是StrongSwan 5.1.2服务器,充当Cisco IPSec兼容的VPN服务器,具有明显的证书身份验证,但我使用Xauth-noauth来阻止iOS设备不断要求用户名/密码进行辅助即xauth身份验证。
配置文件管理器不允许iOS客户端设备保存辅助xauth凭据的密码。
请参阅我的博客http://jelockwood.blogspot.co.uk/2014/03/how-to-do-vpn-on-demand-for-ios-at-zero.html