Xamarin的Android - VpnService阻塞了所有应用程序

问题描述 投票:1回答:1

一个应用程序我设计使用VpnService,与VpnService.Builder一起,班为了从特定的应用程序堵塞交通产生VPN。根据该文件,在上developer.android.com,所有的应用程序应该通过VPN直到Builder.AddAllowedApplication或Builder.AddDisallowedApplication允许被调用。

当我的VPN服务启动时,由于某种原因,所有的应用程序被禁止这是奇怪的。当我从断开VPN连接,所有的应用程序再次可用。我需要让所有,除非另有规定(这是什么文件说,应该发生)。我通过调用以下启动VPN:

    private string _sTag = typeof(VpnService).Name;
    private VpnServiceBinder _objBinder;
    private ParcelFileDescriptor _objVpnInterface = null;
    private PendingIntent _objPendingIntent = null;
    ...

        if (_objVpnInterface == null)
        {
            Builder objVpnBuilder = new Builder(this);
            objVpnBuilder.AddAddress("10.0.0.2", 32);
            objVpnBuilder.AddRoute("0.0.0.0", 0);

            // Form the interface
            _objVpnInterface = objVpnBuilder.SetSession("Squelch").SetConfigureIntent(_objPendingIntent).Establish();

            // Disallow instagram as a test
            objVpnBuilder.AddDisallowedApplication("com.instagram.android");

            // Set flag
            _bVpnIsRunning = true;
        }

因此,在上述情况下,Instagram的应该是唯一阻止应用程序,但所有的流量似乎被阻塞(不能使用Chrome应用,脸谱等)。是有什么我失踪的问候呢?我应该指定前/确立的东西后的界面?任何帮助或方向将不胜感激!

注意:如果它的事项,我瞄准的Android 6.0及更高版本。如果需要,我可以提供更多的来源。

c# android xamarin xamarin.android
1个回答
2
投票

addDisallowedApplication:

默认情况下,所有的应用程序都允许访问,除了那些通过这种方法否认。仿佛VPN没有运行被拒绝的应用程序将使用网络。

AddDisallowedApplication排除从您VPNService应用程序,并允许其继续使用“非VPN”网络堆栈。

addAllowedApplication:

补充说,是允许的访问VPN连接的应用程序

注意:您可以在同一时间使用的允许或禁止名单,但不能同时使用。

因此,可以说,我们要“堵”任何Chrome包访问正常网络堆栈和通过我们的“堵” VPN访问网络重定向任何Chrome应用,我们可以添加所有的Chrome应用软件包名我们VPNService实施。

注意:有4种不同的Chrome应用程式,α,β等....所以让刚刚阻止其名称chrome在里面,不甚理想,但对于例如,它适用于任何包装(?)。

using (var pm = Application.Context.PackageManager)
{
    var packageList = pm.GetInstalledPackages(0);
    foreach (var package in packageList)
    {
        if (package.PackageName.Contains("chrome"))
        {
            Log.Debug(TAG, package.PackageName);
            builder.AddAllowedApplication(package.PackageName);
        }
    }
}

.Establish() VPN连接后,所有Chrome网络应用程序将被重定向到您的VPNService因而受阻。

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