VPN 连接后修改路由表控制不同网络的访问
原理:我们可以添加路由,将所有本地网络(所有国内网络范围),路由到我们使用 VPN 前的默认网
关。而剩余的,也就是国外的网络范围,自动流经 VPN。这就很好的解决了 VPN降低本地网络访问速度的问题。
然后:要找到本地的 IP 地址范围,我们使用的是国内的地址范围。因为这个数据库属于公开数据,我们可以从 CNNIC 或者 APNIC 获得相关数据。剩下的就是对地址库进行分析,然后生成路由添加和删除的脚本就可以了。
由于我的机器分别有 Ubuntu,iPad,Android 和 Windows XP,因此,需要两个系统脚本。脚本语言不同,但是参数是一样的。
- on 表明开启国内路由走默认网关的配置。也就是说添加国内网络的路由指向原默认网关。
- off 表明关闭这个功能。也就是说删除之前操作所添加的路由。
- update 是指下载更新 IP 地址库。 代码编写以及使用 Linux
对于 Linux(Ubuntu,iPad,Android) 最通用的莫过于Shell了,因此,用Bash完成了这个脚本。在Ubuntu系统上测试,应该支持大部分 Linux 系统。
需要删除添加的路由,可以执行:
sudo bash vpnroute.sh off
需要更新网络路由数据,可以执行:
Windows
Windows 的批处理文件虽然也能写一些东西,但是总觉得它的功能太受限了。因此,这次我使用 PowerShell 来写这个脚本。PowerShell 是微软 2006 年推出的抗衡 *nix 中的 shell 的产品,通过紧密结合 .Net Framework 大幅提高命令行及脚本的能力。熟悉 linux shell 脚本的朋友会在使用中会发现有很多语法似曾
相识。虽然有各种不适应,但是不得不说 PowerShell 还是很强大的。可以从这里下载http://u.115.com/file/f2df3c71d4
修改 PowerShell 执行权限,默认只能执行签名脚本。
开始->附件->Windows PowerShell->右键点击 Windows PowerShell->以管理员身份执行
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临about_Execution_Policies
帮助主题中所述的安全风险。是否要更改执行策略?
[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”):
选择 Y,或者回车即可。
PS d:\tmp> .\vpnroute.ps1
Route networks of CN to the default gateway instead of VPN tunnel
usage: vpnroute.ps1 {on|off|update}
on Add routes of CN to default gateway
update Force download/update CN network data
如要添加路由,希望所有中国范围的IP使用默认的网关访问,就运行:
Windows 的 PowerShell 脚本执行速度不是很高,在 Linux 上使用Bash 添加路由大约只需要10-20秒,在 Windows 上使用 PowerShell 需要 70-80秒。大家如果看到有段时间没响应,不要着急,给他一些时间就会好的。
没有评论:
发表评论