Home | Looking for something? Sign In | New here? Sign Up | Log out

2010年10月15日星期五

一个避免VPN全局代理影响访问国内网站速度的程序 - ym's sdblog - Powered by SupDo

2010年10月15日星期五
Usage
使用方法

介绍

这几个脚本主要利用来自 http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst 的数据生成路由命令脚本, 让vpn客户端在进行连接的时候自动执行. 通过这些路由脚本, 可以让用户在使用vpn作为默认网络网关的时候, 不使用vpn进行对中国国内ip的访问, 从而减轻vpn的负担, 和增加访问国内网站的速度.

基本约定

在使用这些脚本之前, 请确保你在自己的电脑上已经成功配置好一个vpn连接(pptp 或者 openvpn), 并且让之以默认网络网关的方式运行, 这通常也是默认配置, 即vpn接入之后所有网络流量都通过vpn进行.

Mac OSX

openvpn

(这里假定用户使用Tunnelblick作为openvpn客户端)

  1. 下载 chnroutes_ovpn_mac
  2. 从终端进入下载目录, 执行python chnroutes_ovpn_mac, 执行完毕之后同一目录下将生成两个新文件'vpnup'和'vpndown'
  3. 在终端里运行命令 chmod a+x vpnup vpndown 把这两个文件设置为可执行
  4. 把这两个文件copy到openvpn的配置目录并修过openvpn配置文件, 在末尾加上两句:
  5.     up vpnup
    
    down vpndown
  6. 设置完毕, 重连openvpn. 你可以通过netstat -nr命令的输出来确认vpnup/vpndown 是否正确执行. 在连接之后, 使用上述命令, 如果能看到大量的输出则表明路由表已经被成功设置, 断开连接之后, 再执该命令则可以看到断开前的那些输出已经消失.

进一步的测试, 你可以使用 route 命令进行, 如执行 route get 8.8.8.8, 这里8.8.8.8是google dns的ip, 位置在国外. 你可以看到在输出结果的gateway字段与vpn的网关一致; 再尝试route get 202.96.134.133 这里202.96.134.133是一个国内的ip, 这时候输出结果的gateway将变成与没连接vpn之前的网关.

需 要注意的是, 默认情况下, 在Tunnelblick上不能选取Set nameserver选项, 否则这两个脚本将不能被调用. 但对于需要使用该功能的用户, 你可以使用在本项目下载页面提供的补丁文件, 让tunnelblick可以同时支持定制启动脚本. 使用方法, 在Terminal里 进入tunnelblick的Resources目录. 如我这里 Tunnelblick是在 /Applications里, 使用如下命令:

cd /Applications/Tunnelblick.app/Contents/Resources

patch
-p1 < path_to_the_patch_file

打过补丁之后, Tunnelblick的set nameserver 功能就可以与up/down script一起使用了. 另外打补丁之前要注意Tunnelblick的版本号必须是 v3.0b24(最新)

pptp

  1. 下载 chnroutes_pptp_mac
  2. 从终端进入下载目录, 执行python chnroutes_pptp_mac, 执行完毕之后同一目录下将生成两个新文件'ip-up'和'ip-down'
  3. 把这两个文件copy到 /etc/ppp 目录, 并使用 sudo chmod a+x ip-up ip-down命令把它们设置为可执行
  4. 设置完毕, 重新连接vpn. 测试步骤同上.

Linux

openvpn

  1. 下载 chnroutes_ovpn_linux
  2. 从终端进入下载目录, 执行python chnroutes_ovpn_linux, 执行完毕之后同一目录下将生成两个新文件'vpnup'和'vpndown'
  3. 在终端里运行命令 chmod a+x vpnup vpndown 把这两个文件设置为可执行
  4. 把这两个文件copy到openvpn的配置目录并修过openvpn配置文件, 在末尾加上两句:
  5.     up vpnup
    
    down vpndown
  6. 设置完毕, 重连openvpn. 测试方法同mac osx, 但需要使用 ip route 代替mac上的 route 命令

pptp

使用跟openvpn_linux相同的生成脚本, 区别是把生成的vpnup文件改名为 ip-pre-up, 并把ip-pre-up 拷贝到 /etc/ppp目录, vpndown 拷贝到 /etc/ppp/ip-down.d 目录. 测试步骤同上.

Windows

openvpn

由于windows上的route命令执行时间相当长, 所以不能直接在openvpn脚本里进行调用, 否则会导致超时错误. 使用步骤是下载chnroutes_ovpn_win, 然后在cmd里利用python chnroutes_ovpn_win 生成vpn路由批处理文件 vpnup.bat 和vpndown.bat. 在连接vpn之前手动执行vpnup.bat就可以设置这些路由, 这时不需要等待执行完毕就可以进行vpn拨号. 在断开vpn之后, 如果想删除这些路由, 可以执行vpndown.bat文件.

对于没有python的windows用户, 可以直接下载已经预生成的vpnup.bat文件. 因为ip范围改变频率不高, 所以也不会有什么影响.

pptp

同上, 由于windows上的pptp不支持拨号脚本, 所以也只能在进行拨号之前手动执行vpnup.bat文件以设置路由表.

信息反馈

本项目的脚本都是在使用路由器进行拨号的情况下测试通过的, 如果在其它拨号方式下, 脚本不能运作, 请在本页添加comment说明. 谢谢!

FROM: http://code.google.com/p/chnroutes/wiki/Usage

----------------------------------------------------

让VPN自动区分国内/国外线路

vpn是全局代理,默认发送全局流量,因此连接美国VPN后访问国内网站速度会慢。本文提供的路由表旨在解决这一情况,使得对中国国内ip的访问不通过VPN通道,直接走本地网络,从而提高开启VPN后访问国内网站的速度。

国内路由表下载地址:http://code.google.com/p/chnroutes/downloads/list

下面以windows系统为例简单介绍如何在PPTP/L2TP VPN下使用此路由表:

1,下载pre_created_for_win.zip

2,解压到任意文件夹,运行 vpnup.bat, 会出现如下界面,这个界面会持续3~5分钟,然后自行消失,不要管就可以了。

3, 这个时候可以验证下是否添加路由表成功(这一步不是必须要做的,可以忽略),开始-运行-输入 cmd—回车进入命令行,输入: route print 回车 看到如下界面即为国内路由表添加成功:

4,这个时候拨入VPN. 访问 123cha.com,会看到你自己是国内ip,访问who.is会发现你是国外ip了。至此,访问国外网站都走vpn,访问国内都走本地网络。

5,断开vpn后,可以运行vpndown.bat清除之前的路由表,这一步也不是必须要做的,因为当你重启计算机之后,用vpnup.bat添加的路由表会自动清除。


0 评论:

Forum

get your own embeddable forum with Talki
 

CAOGFW网络学习笔记

翻墙搜索引擎

Loading

网页浏览总次数

统计