我如何知道我的应用程序是否通过 VPN 进行通信?

问题描述 投票:0回答:2

我正在尝试为 iOS 创建一个 flutter+swift 应用程序,它可以确定是否存在活动的 VPN 连接,并且可以确定我的应用程序是否通过 VPN 进行通信。

目前,我正在尝试检查我的应用程序是否有任何类似的网络接口(如果有,则意味着 VPN 连接处于活动状态):

tap, tun, ppp, ipsec, ipsec0, utun1, utun2, pptp

不幸的是,这效果并不好。在某些 iOS 设备上,我看到存在现有的“ipsec”接口,但实际上没有 VPN 连接。在其他一些设备上,我发现它可以正常工作(主要是 iOS14+)。

我读到了相关内容,似乎“ipsec”接口经常用于处理 WiFi 呼叫以及在 Apple 设备之间进行通信。这是正确的吗?是否意味着这个接口是否会被设置是不可确定的(因为它可以由网络提供商或Apple生态系统控制)?

我还想知道是否有一种可靠的方法来判断设备是否具有活动的 VPN 连接,或者至少判断给定的应用程序目前是否正在使用每应用程序 VPN?

ios swift flutter vpn network-interface
2个回答
0
投票

我认为我们应该检查

tun, ppp, pptp
是否有 VPN 连接。
ipsec
等可以在WebRTC中用于视频和语音通话。

Future<bool> isVpnActive() async {
    bool isVpnActive;
    List<NetworkInterface> interfaces = await NetworkInterface.list(
        includeLoopback: false, type: InternetAddressType.any);
    interfaces.isNotEmpty
        ? isVpnActive = interfaces.any((interface) =>
            interface.name.contains("tun") ||
            interface.name.contains("ppp") ||
            interface.name.contains("pptp"))
        : isVpnActive = false;
    return isVpnActive;
  }

0
投票

https://pub.dev/packages/vpn_connection_ detector

这是我为自己使用而制作的软件包,它可以帮助您在连接 VPN 时获得网络通知 另外,还有一种静态方法可以检查一次 如果您喜欢这个包,请喜欢并分享我正在努力添加更多功能 [注意:由于一些技术问题,您可能看不到平台和发布点,我也在研究它,目前它支持所有平台,请检查,如果您发现任何需要改进的地方,请随时提出拉取请求的开放问题]

© www.soinside.com 2019 - 2024. All rights reserved.