脚本分享 之 天朝全静态路由


背景介绍:
由于近期“伟大的墙”越来越坚固,很多人不得不用上了VPN。但在VPN连接状态下,我们访问国内网站的速度会受到影响,同时也会造成VPN流量的浪费。

有没有可能在系统中把所有天朝的静态路由都加上呢?这样,即使VPN连接状态下,所有的数据请求都会自动分流。
答案是可以的,因为在APNIC上可以获取到所有天朝的公网IP段,我统计了一下总共有4000多个IP段,于是我写了一个脚本将其全部取出再循环添加到系统中,用起来效果真的很不错。

脚本地址:https://github.com/mcsrainbow/shell-scripts/blob/master/scripts/smartroutes.sh

注意:目前我的脚本仅支持Mac OS X,如果想要运行在Linux上,需要做一些简单的修改。

操作示例:

[dong@Dong-MacBookPro scripts]$ sudo ./smartroutes.sh
Downloading the latest APNIC data as ./apnic.data...
######################################################################## 100.0%
Usage:
./smartroutes.sh {on|off|status}
./smartroutes.sh [force|exception] {on|off}

[dong@Dong-MacBookPro scripts]$ sudo ./smartroutes.sh on
Adding the routes... Done

[dong@Dong-MacBookPro scripts]$ netstat -rn | head -n 20
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.192.168.1       UGSc           23        2    ppp0
default            192.168.0.1        UGScI           1        0     en1
1.0.1/24           192.168.0.1        UGSc            0        0     en1
1.0.2/23           192.168.0.1        UGSc            0        0     en1
1.0.8/21           192.168.0.1        UGSc            0        0     en1
1.0.32/19          192.168.0.1        UGSc            0        0     en1
1.1/24             192.168.0.1        UGSc            0        0     en1
1.1.2/23           192.168.0.1        UGSc            0        0     en1
1.1.4/22           192.168.0.1        UGSc            0        0     en1
1.1.8/21           192.168.0.1        UGSc            0        0     en1
1.1.16/20          192.168.0.1        UGSc            0        0     en1
1.1.32/19          192.168.0.1        UGSc            0        0     en1
1.2/23             192.168.0.1        UGSc            0        0     en1
1.2.2/24           192.168.0.1        UGSc            0        0     en1
1.2.4/24           192.168.0.1        UGSc            0        0     en1
1.2.5/24           192.168.0.1        UGSc            0        0     en1

[dong@Dong-MacBookPro scripts]$ sudo ./smartroutes.sh off
Deleting the routes... Done

然后,可以分别通过 ip138.com 和 ifconfig.me 确认分流是否生效。

,

  1. #1 by xianjin.chen on 2014/07/18 - 16:57

    郭大师的必须頂为嘛没有windows版本嘛

    • #2 by mcsrainbow on 2014/07/18 - 17:32

      提不起兴趣啊。不过你可以自己找台Linux克隆https://github.com/fivesheep/chnroutes,然后用 ./chnroutes.py -p win 生成两个BAT脚本,分别是vpnup.bat和vpndown.bat。

  2. #3 by _zero on 2014/07/18 - 22:32

    博主的那个计算子网掩码的awk函数写的太给力了,移植到Linux下应该也就是修改“dscacheutil -flushcache”这个用于清除DNS缓存地方,但不清除缓存应该也没什么吧?

(will not be published)
*