Android VPNService路由排除

我正在使用OpenVPN和ICS附带的新VpnService API( Android 4.X)

有没有办法从VPN隧道中定义IP地址的排除? (这样,发往该IP的流量将直接路由到网络,而不通过VPN隧道).
我们正试图通过允许像youtube这样的带宽密集型服务通过未加密的方式来减少VPN上的网络负载和成本,同时仍然保护其余的流量.

据我所知,在Android打开Tun设备之前,它可以接收一个路由列表,指定应该在VPN中传递哪些流量,而不是要排除哪些流量:

VPNSerivice.Builder API documentation

解决方法

我需要从VPN中排除本地WiFi子网.我使用了添加多个路由而不是0.0.0.0 / 0的方法.例如,如果您需要排除子网192.168.240.90 / 21(二进制表示为11000000.10101000.11110000.01011010),那么您应该将以下21条路由添加到您的VpnService(二进制表示):
00000000.00000000.00000000.00000000 / 1
10000000.00000000.00000000.00000000 / 2
11100000.00000000.00000000.00000000 / 3
11010000.00000000.00000000.00000000 / 4
11001000.00000000.00000000.00000000 / 5
11000100.00000000.00000000.00000000 / 6
11000010.00000000.00000000.00000000 / 7
11000001.00000000.00000000.00000000 / 8
11000000.00000000.00000000.00000000 / 9
11000000.11000000.00000000.00000000 / 10
11000000.10000000.00000000.00000000 / 11
11000000.10110000.00000000.00000000 / 12
11000000.10100000.00000000.00000000 / 13
11000000.10101100.00000000.00000000 / 14
11000000.10101010.00000000.00000000 / 15
11000000.10101001.00000000.00000000 / 16
11000000.10101000.00000000.00000000 / 17
11000000.10101000.10000000.00000000 / 18
11000000.10101000.11000000.00000000 / 19
11000000.10101000.11100000.00000000 / 20
11000000.10101000.11111000.00000000 / 21

我们的想法是在前缀位置(从右边)反转位,并在前缀位置后将所有位置零.因此,除了到达本地子网的那些包之外的所有包都将匹配一个或另一个路由

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...