Я исследовал, что можно добиться следующего.У меня есть и сервер 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.(Это мое понимание этого, я надеюсь, что это правильно).
Терминология Killswitch в VPN - это функция, которая останавливает весь интернет-трафик, идущий к устройству и от него, как только VPN становится недоступным.Это необходимо для предотвращения утечки в случае, если VPN-туннель станет недоступным.Это может быть так же просто, как мониторинг, если текущий IP-адрес колеблется как триггер, чтобы сделать это.
Что я не смог выяснить, так это если iOS 10.3+ уже делает это в фоновом режиме, пока OnDemand
функция включена?
Или это просто способ переподключиться к VPN, как только VPN упадет, но трафик все еще может просочиться в существующий 4G без присутствия VPN?
Я не мог найти никакой информации еще относительно этого.Любой совет?