我一直在研究实现以下目标的可能性。我既有IKEv2 VPN服务器,又有Swift iOS客户端。在客户端,我已经在isOnDemandEnabled
上启用了NEVPNManager
,并设置了匹配任何内容的规则。
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
这应该意味着任何尝试访问互联网的行为都应符合此规则,并且只能通过VPN。 (这是我对此的理解,希望是对的。)
VPN术语中的Killswitch是一项功能,一旦VPN不可用,该功能将阻止所有进出设备的互联网流量。这样可以防止在VPN隧道不可访问时造成任何泄漏。这就像监视当前IP地址是否波动来触发此操作一样简单。
我无法确定的是,只要启用了OnDemand
功能,iOS 10.3+是否已经在后台执行了此操作?
还是只是VPN断开后重新连接到VPN的一种方法,但是如果没有VPN,流量仍然可能泄漏到现有的4G?
我尚未找到任何有关此的信息。有什么建议吗?
答案 0 :(得分:1)
是的,一旦使用上述规则设置了VPN(例如,没有拆分隧道),所有流量都将通过VPN。如果VPN断开连接,则任何流量都将尝试启动它,并且不会通过设备。如果VPN无法连接-流量将无法通过。
自己尝试-连接VPN,然后使其以某种方式断开连接(例如,防止网络访问),然后再次允许其连接-检查在重新连接的短时间内是否没有流量通过设备。