如何使用VPNService阻止应用程序网络请求?

时间:2017-07-19 13:24:53

标签: android networking android-vpn-service

我希望你们一切顺利。

我在我的应用程序中实现了VPNService。我已经引用https://github.com/hexene/LocalVPN github代码来创建VPN。

我想知道请求/响应,

如何知道哪个应用程序使用VPNService发送请求或哪个应用程序接收响应。

我想在VPNService中阻止一些应用程序请求。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您只需要一个简单的VpnService来阻止应用程序流量,而又不需要处理LocalVPN提供的数据包tcp / udp标头的额外功能,则可以使用ToyVPN(https://android.googlesource.com/platform/development/+/master/samples/ToyVpn)并使用builder.addAllowedApplication或builder.addDisallowedApplication。

ToyVpnConnection.java:

   for (String packageName : mPackages) {
        try {
            if (mAllow) {
                builder.addAllowedApplication(packageName);
            } else {
                builder.addDisallowedApplication(packageName);
            }
        } catch (PackageManager.NameNotFoundException e){
            Log.w(getTag(), "Package not available: " + packageName, e);
        }
    }

但是,如果您需要像LocalVPN一样对数据包进行低级访问,那么我不确定该怎么做。如果您发现了问题,请发布有关完成此操作的任何提示,因为我目前正在尝试自己解决这个问题!