我一直在研究是否有可能实现以下目标。我有一个 IKEv2 VPN 服务器和一个 Swift iOS 客户端。在客户端,我启用了isOnDemandEnabled
on theNEVPNManager
并设置了规则以匹配任何内容。
var vpnManager : NEVPNManager
var protcol: NEVPNProtocol
let ikev2 = NEVPNProtocolIKEv2()
ikev2.useExtendedAuthentication = true
...
protcol = ikev2
protcol.disconnectOnSleep = false
let connectRule = NEOnDemandRuleConnect()
connectRule.interfaceTypeMatch = .any
vpnManager.onDemandRules = [connectRule]
vpnManager.isOnDemandEnabled = true
这应该意味着任何访问 Internet 的尝试都应符合此规则,并且只能通过 VPN。(这是我的理解,希望是对的)。
VPN 术语中的 Killswitch 是一项功能,可在 VPN 不可用时立即停止所有互联网流量进出设备。这是为了防止在 VPN 隧道无法访问的情况下发生任何泄漏。这可以像监视当前 IP 地址是否波动一样简单,作为执行此操作的触发器。
我找不到的是,只要OnDemand
启用该功能,iOS 10.3+ 是否已经在后台执行此操作?
或者它只是一种在 VPN 掉线后立即重新连接到 VPN 的方法,但流量仍可能在没有 VPN 的情况下泄漏到现有的 4G?
我还没有找到任何关于这方面的信息。有什么建议吗?