【问题标题】:How can I know if my app is communicating via VPN?我如何知道我的应用程序是否通过 VPN 进行通信?
【发布时间】:2021-09-11 22:51:26
【问题描述】:

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

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

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

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

我读过它,似乎“ipsec”接口通常用于处理 WiFi 呼叫和 Apple 设备之间的通信。这是正确的吗?是否意味着无法确定是否设置了这个接口(因为它可以由网络提供商或Apple生态系统控制)?

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

【问题讨论】:

    标签: ios swift flutter vpn network-interface


    【解决方案1】:

    我认为我们应该只检查 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;
      }
    

    【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多