Правила iOS VPN по требованию
Я хочу создать onDemandRule для подключения VPN в ios
Требование заключается в следующем.
Если доступны как сотовая связь, так и Wi-Fi, и wifi ssid = "ABC", то будет работать только VPN, иначе он должен остановиться.
Я пытался следовать OnDemandRule
let onDemandRule = NEOnDemandRuleConnect()
onDemandRule.interfaceTypeMatch = .wiFi
onDemandRule.ssidMatch = ["ABC"]
let onDemandRule1 = NEOnDemandRuleConnect()
onDemandRule1.interfaceTypeMatch = .cellular
self.vpnManager.isOnDemandEnabled = true
let onDemandRule2 = NEOnDemandRuleDisconnect()
onDemandRule2.interfaceTypeMatch = .any
self.vpnManager.onDemandRules = [onDemandRule, onDemandRule1, onDemandRule2]
Это работает, как только я подключаюсь к Wi-Fi с именем ABC
Но он не отключается, если я отключаю сотовые данные. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю здесь не так.
1 ответ
Вы должны прочитать правила, как набор правил брандмауэра, NEVPNManager
проходит список правил, и первое правило, которое применяется, следует. В вашем примере, когда вы отключите сотовые данные, он оценит правило 1: wifi + SSID "ABC". Если эти правила удовлетворяют, т.е. вы подключены к WiFi SSID "ABC", vpn будет подключен. Если не, NEVPNManager
пройдем через следующее правило.
Если вы отключите сотовую связь, первое правило все еще применяется. (Вы все еще можете иметь соединение WiFi). NEVPNManager
не может различить сотовый вкл / выкл. Он может только различать, какой интерфейс используется: сотовый, WiFi или любой.