最近在整VPN,考虑到速度和省流量问题就想找适合的路由表,chnroutes开源项目提供了解决方案,只不过提供的条目数长达3536条,在Windows下完成添加需要比较长的时间,有IT网友考虑到这个问题,于是就对它进行了优化,开源项目见bestroutetb。
研究了一下bestroutetb的源码,发现它是把白名单与黑名单放在一张表里了,在实际应用中个人觉得只需要一种,因此我对源码进行了一点修改,支持直接独立生成Windows下的白名单(net)和黑名单(vpn),在需要的时候做选择即可。源码里提供有Windows下加速加载路由表的代码,可是我在测试的时候发现有些问题,所以决定自己提供win_net_up、win_net_down、win_vpn_up和win_vpn_down的profile,直接生成批处理格式的路由表,使用的时候双击生成的路由表批处理等到加载完即可。
在Dropbox共享里提供两个js文件的下载:bestroutetb-master.zip
生成批处理的方法:
[bash]
./generate.sh net_up.bat –profile=win_net_up –nodefault=1
./generate.sh net_down.bat –profile=win_net_down –nodefault=1
./generate.sh vpn_up.bat –profile=win_vpn_up –nodefault=1
./generate.sh vpn_down.bat –profile=win_vpn_down –nodefault=1
[/bash]
配合上一篇文章《修正Windows下DNS不从VPN通道走的问题》使用net方式可以很好的应用了。
文件说明:
net_up.bat 设置走本地代理的路由表,即不翻墙的路由表。须在VPN拨号前执行,可以根据情况自动扩展,这里只是CN的IP组。
net_down.bat 删除net_up.bat添加的路由表。须也net_up.bat同步扩展。
vpn_up.bat 设置走VPN代理的路由表,即翻墙的路由表。只针对VPN不是默认路由的情况,须在VPN拨号后执行。
vpn_down.bat 删除vpn_up.bat添加的路由表。
对于vpn_up需要注意两点:
1. 只适用于VPN不是默认路由的情况
2. VPN拨号后查看VPN路由对应IP起始项,修改vpn_up.bat findstr之后的匹配字符
比如VPN拨号后在cmd输入route print看到的结果:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.6.1 192.168.6.10 20
10.0.0.0 255.0.0.0 10.10.10.3 10.10.10.3 1
第一行开头0.0.0.0即用于查找本地网关192.168.6.1的关键字,所以在net_up.bat findstr后写<0.0.0.0>
第二行开头10.0.0.0即用于查找VPN网关10.10.10.3的关键字,所以在vpn_up.bat findstr后写<10.0.0.0>
PS. 测试发现使用Windows下使用cscript.exe setroutes.js up routes能快速的添加路由表,不过需要用我修改过的版本,不提供VPN网关时只添加NET路由记录,即白名单功能。
Tags: DNS