Android上的一些VPN(比如DroidVPN)使用tun内核模块实现流量转发进而实现VPN,优点是比系统的VPN省电不少,缺点是必须要以root权限运行。

VPN默认是全局代理,当我们只需要对某几个ip做转发或者对几个ip不做转发时就需要修改内核路由表。

白名单

即只对某些ip做转发

以下是一个示例设置对8.0.0.0~8.255.255.255的ip走vpn通道(开启vpn后运行):

关闭VPN后运行:

 

黑名单

即对这些ip不做转发

黑名单和chnroutes实现思路基本类似,示例添加了一个规则,使1.0.1.0~1.0.1.255的ip不走vpn(随便什么时候运行):

不需要这些规则时,运行(也可不运行,重启消失):

 

需要注意的是,白名单规则在关闭vpn后需运行相应的route del以删除转发规则,否则将无法连接

黑名单规则不删除也没关系

以上所有规则重启后自动丢失