将WiFi更改为蜂窝网络后,VPN无法通过隧道接口重定向流量

时间:2019-08-27 07:06:44

标签: ios swift vpn networkextension

我正在通过服务器传送流量。在某些情况下,它必须阻止确定的网站,例如赌博网站。如果使用 WiFi 蜂窝启动隧道,则该隧道可以正常工作。当我将网络更改为相反的方向时, VPN 会自动按我的需求自动重新连接,而 VPN 却不会阻止它的网站以前做过。我的主要假设是,在将接口 WiFi 更改为Cellular或反之亦然之后,来自设备的传出流量不会通过隧道接口(utun)进行路由,而是通过 VPN 进行路由>仍在。 如何通过隧道接口检查或“强制”传出流量? 我可以检测到接口何时发生更改,并且可以强制重新启动隧道,但我不应该这样做。那应该是隧道的任务,我不想强​​迫隧道的状态。

正如我在2015年WWDC的Session 717中所看到的那样,VPN连接已建立,然后在Internet堆栈中逐级降低,直到接口级。建立VPN后,它将使用utun0接口。我担心的是,例如,当我建立一个使用Wi-Fi连接的隧道时,它会使用utun0接口正确地将流量路由出去,但是当我切换到Cellular连接时,它使用了另一个接口,因此我的隧道仍在运行,但它没有应用内容阻止,因为数据包未使用utun0接口路由。

[EDIT] 我刚刚发现了defaultPath。使用KVO,我可以监视界面更改。当我检测到接口更改时,我尝试重新连接隧道。在某些情况下,我能够解决之前遇到的问题,并且可以应用阻止,但在其他情况下,则无法解决。我正在尝试监视interface changes的情况以及连接是否为established的情况,但是我无法解决所有可能的情况。

0 个答案:

没有答案