全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4845|回复: 15

[经验] 仅用openvpn连接国际线路

[复制链接]
发表于 2009-11-15 17:01:27 | 显示全部楼层 |阅读模式
通常情况下在openvpn连接之后, 如果openvpn的服务端或者客户端设置了redirect gateay选项, 那么openvpn的网关将取代原有的网关成为默认网关. 也就是说在这以后互联网上所有的信息都是通过vpn的网路获取的. 对于只访问国外网站的朋友来说, 这样的结果是可以接受的. 然而对于像我这样的国内国外网站都经常访问的人来说就显得不那么合适了.
那么有没有什么办法能做到访问国外的网站的时候用vpn, 而国内的网站则是直接用本地网关进行访问呢? 答案是有的. 只要设置一下本机的路由表, 让国外的ip路由到vpn网关, 而国内ip则路由到本地的网关就可以了. 这在配置上有两种方式:
在openvpn连接之后, 不更改网关, 但在配置文件中加入route选项指定一些经常访问的国外网站的ip(范围)使用vpn路由
在openvpn连接后, 把openvpn设置为默认网关, 然后利用脚本修改国内ip的路由, 把他们route到原来的网关去

对于方式1, 它的优点是设置简单, 只需要在配置文件上加入 "route ip mask" 这样的语句就可以, 而且它们会在vpn连接断开之后自动清空. 但缺点也很明显, 默认情况下openvpn只能支持20条route项目, 而且一些网站的ip范围变化很大, 需要不断测试才能获取它们完整的范围. 对于方式2, 则没有这个问题. 通过http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst 我们可以获取到整个亚洲地区的ip分布表, 也就是说我们能利用这个文件得到完整的中国ip的范围. 而openvpn是支持在连接时和断开后调用脚本的. 这样, 我们只需要在openvpn设置redirect gateway选项, 然后连接的时候调用一个路由脚本指定中国的ip走本地的gateway就可以了. 为了避免一些不可预知的问题, 在vpn断开之后调用一个删除这些路由也时有必要的.

以下我分别写了三个脚本分别针对Linux,Mac OSX, Windows三个系统, 它们就是用于生成上文所说的设置/删除 国内ip路由的脚本.

For Linux
For Mac
For MS Windows

使用方法(for Linux & Mac):
文件下载之后, 修改个易记点的名字, 比如chnroutes
然后输入 python chnroutes  这将生成两个文件 vpnup 和 vpndown (windows 上只有一个 vpnup.bat)
用命令 chmod a+x vpnup 和 chmod a+x vpndown 修改这两个新生成的脚本的可执行属性
把vpnup, vpndown两个文件copy到openvpn配置文件所在目录, 修改openvpn配置, 在末尾加入两行: up vpnup 和 down vpndown
然后重新连接openvpn就可以了, 输入命令 netstat -nr 如果能看到一大堆的输出, 说明route已经设置成功. 不过, 需要注意的是, 如果openvpn服务端没设置redirect gateway, 那么也请在客户端的配置里加入一句: redirect-gateway

对于windows用户, 因为route命令运行比linux这些系统慢很多, 所以如果利用openvpn的up选项去调用vpnup.bat脚本将容易出现执行超时而导致openvpn连接失败, 所以我建议在连接openvpn之前手动执行vpnup.bat, 然后再进行连接. 另外可能大部分的windows用户都不会安装python的运行环境, 为了省却麻烦, 我这里已经生成了一个批处理文件 vpnup.bat, 下载之后改名为vpnup.bat就可以了, 因为ip范围的变化不是很大, 也没必要实时生成.

最后, 这些脚本执行是可能失败的, 因为有些时候机器会因为某些问题而没有了default gateway的信息. 这需要先把问题修正之后再进行vpn连接.

转载与:http://docs.google.com/View?id=dg6xfw7w_0hbbkmwcg

[ 本帖最后由 RyoKazami 于 2009-11-15 17:02 编辑 ]
发表于 2009-11-15 17:05:46 | 显示全部楼层

回复 1# 的帖子

路由表
 楼主| 发表于 2009-11-15 17:09:56 | 显示全部楼层
大C安装好了?
发表于 2009-11-15 17:22:47 | 显示全部楼层

回复 1# 的帖子

现如今vpn的研究越来越透彻了
发表于 2009-11-15 17:54:17 | 显示全部楼层

回复 5# 的帖子

是的,for Linux和for Mac的都能下,windows被歧视了
发表于 2009-11-15 20:30:24 | 显示全部楼层
看东哥blog就是用的这个方法
发表于 2009-11-15 21:07:10 | 显示全部楼层

回复 7# 的帖子

我就不用了,反正只是偶尔用VPN
发表于 2009-11-15 21:23:11 | 显示全部楼层
我已经和 vpn 无缘了 除非换网络 或者用 Hotspot Shield 这类的 建立虚拟网卡的全局VPN
 楼主| 发表于 2009-11-15 21:36:26 | 显示全部楼层
OpenVPN就是的啊
发表于 2009-11-15 21:58:48 | 显示全部楼层

回复 10# 的帖子

嗯。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-20 21:06 , Processed in 0.065000 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表