国内还是走国内,国外就走VPN。

根据链路自动判别启用哪条网络

Time:2010-09-06 04:17:18. Author:millken. Category:网络.

脚本来自于:http://code.google.com/p/chnroutes/


它是透过APNIC公开的资料库找出所有大陆地区的IP网段,然后透过ip-up ip-down脚本,在连上VPN之后自动将这些大陆IP网段设置走预设路由(例如电信ADSL网关或公司网关),而其余的IP网段则走VPN网关,在VPN断线之后这些路由调整又会自动改回来,一切非常自动化。


运行以下python脚本,会生成4个文件,一般情况下,只需要在没开VPN的时候运行vpnup.bat即可。


#!/usr/bin/env python

import re
import urllib

VPNUPBASE="""@echo off
for /F "tokens=3" %defaultgateway in ('route print ^| findstr "\<0.0.0.0\>"') do set "gw=%defaultgateway"

"""

url=r'http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst'

handler=urllib.urlopen(url)

upfile=open('vpnup.bat','w')
downfile=open('vpndown.bat','w')

upfile.write(VPNUPBASE)
upfile.write('\n')
upfile.write('ipconfig /flushdns\n')

downfile.write("@echo off")
downfile.write('\n')

for line in handler.readlines():
    if line.find(': cn ') < 0: continue
    r=line.split(':')[1]
    r=r.strip()
    ip,mask=r.split('/')
    ip=ip.split('.')
    while len(ip) < 4:
        ip.append('0')
    
    mask=int(mask)
    
    bm='1'*mask+'0'*(32-mask)
    mask="%d.%d.%d.%d"%(int(bm[0:8],2),int(bm[8:16],2),int(bm[16:24],2),int(bm[24:32],2))

    upfile.write('route add %s mask %s %s metric 5\n'%('.'.join(ip),mask,'%gw%'))
    downfile.write('route delete %s\n'%('.'.join(ip)))

upfile.close()
downfile.close()

up_vbs_wrapper=open('vpnup.vbs','w')
up_vbs_wrapper.write('Set objShell = CreateObject("Wscript.shell")\ncall objShell.Run("vpnup.bat",0,FALSE)')
up_vbs_wrapper.close()
down_vbs_wrapper=open('vpndown.vbs','w')
down_vbs_wrapper.write('Set objShell = CreateObject("Wscript.shell")\ncall objShell.Run("vpndown.bat",0,FALSE)')
down_vbs_wrapper.close()

print "Usage: copy vpnup.bat vpnup.vbs vpndown.bat vpndown.vbs to the openvpn config dir," \
      " and then append the following two lines to the ovpn config file:" \
      "\n   up vpnup.vbs" \
      "\n   down vpndown.vbs"

1 个评论

  1. krmhsk
    2011-01-14 13:48:11
    hvKivh ndmduqtphybt, [url=http://svliextlyela.com/]svliextlyela[/url], [link=http://lqskitqetepp.com/]lqskitqetepp[/link], http://wcqatzmweflh.com/

有什么要说的?





* 所有字段必须填写.

关于我:

陈震(millken) 男 26岁 高级程序员

湖南石门人,现混迹于上海。

联系方式:millken#gmail.com

开放分类