Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

scripts help chinese netizen, who uses vpn to combat censorship, by modifying the route table so as routing only the censored ip to the vpn

branch: master
README.md

chnroutes

利用来自APNIC的数据生成路由命令脚本,让VPN客户端在连接时自动执行。通过这些路由脚本,可以让用户在使用VPN作为默认网关时,不使用VPN访问中国国内IP,从而减轻VPN负担,并提高访问国内网站的速度。

基本约定

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

注意事项

  • 因为这些IP数据不是固定不变的,建议每隔一个月更新一次;
  • 使用此法之后,可能导致Google Music等服务无法访问,因为连上VPN之后,使用的DNS也是国外的,因此google.cn解析出的是国外的IP。

OpenVPN

Linux

  1. $ sudo python chnroutes.py -o /etc/openvpn

  2. 编辑 OpenVPN配置文件

    script-security 2
    up vpn-up.sh
    down vpn-down.sh
    
  3. 重新连接VPN,观察日志测试。

Others

  1. 执行python chnroutes.py -p old, 这将生成routes.txt文本文件;
  2. 将该文件内容加在OpenVPN配置文件的尾部;
  3. 重新连接VPN,观察日志测试。

PPTP

Mac OS X

  1. 在终端中执行python chnroutes.py -p mac,这将生成ip-upip-down两个文件;
  2. 将这两个文件移入/etc/ppp/
  3. 重新连接VPN,观察测试。

RouterOS

  1. 在本地计算机终端或者命令提示符中执行python chnroutes.py -p routeros,这将生成chnroutes.rsc文件;
  2. 你可以用ftp,或者Web管理页面,或者Winbox将该文件上传至你的RouterOS;
  3. 在RouterOS终端输入/import chnroutes.rsc
  4. 假设你的本地网关是192.168.1.1,在RouterOS终端输入/ip route add disable=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.1.1 routing-mark=chnroutes

Linux

  1. 执行python chnroutes.py -p linux,这将生成ip-pre-upip-down两个文件;
  2. ip-pre-up移入/etc/ppp/ip-down移入/etc/ppp/ip-down.d/
  3. 重新连接VPN,观察测试。

Windows

  1. 在命令提示符中执行python chnroutes.py -p win,这将生成vpnup.batvpndown.bat两个文件;
  2. 在拨号前手动执行vpnup.bat文件设置路由表;在断开VPN后,可运行vpndown.bat清理路由表。

配置

添加本地的地址 (Linux)

# /etc/chnroutes
    1.0.1.0|255.255.255.0|24
    70.33.217.1|255.255.255|32

定期更新ip地址 (Linux)

$ sudo vim /etc/cron.weekly/chnroutes
    #!/bin/bash
    /usr/bin/chnroutes -o /etc/openvpn
$ sudo chmod +x /etc/cron.weekly/chnroutes

安装

  • python 2.7.3
  • ipruotes2 (Linux)

Archlinux: pacaur -S chnroutes-git (来自AUR)

基于Linux的第三方系统的路由器

一些基于Linux系统的第三方路由器系统如OpenWRT、DD-WRT、Tomato都带有VPN(PPTP/OpenVPN)客户端的,也就是说,我们只需要在路由器进行VPN拨号,并利用本项目提供的路由表脚本就可以把VPN针对性翻墙扩展到整个局域网。当然,使用这个方式也是会带来副作用,即局域网的任何机器都不适合使用Emule或者BT等P2P下载软件。但对于那些不使用P2P,希望在路由器上设置针对性翻墙的用户,这方法十分有用,因为只需要一个VPN帐号,局域网内的所有机器,包括使用Wi-Fi的手机都能自动翻墙。详细配置方式请参考Autoddvpn项目。

信息反馈

本项目的脚本都是在使用路由器进行拨号的情况下测试通过的,如果在其它拨号方式下,脚本不能运作,请添加新的Issue。另外,在配合OpenVPN使用的时候,可能会出现因为网络质量不好,OpenVPN非主动断开,这时候vpn-down.sh脚本也会被自动调用,但重新连上之后,可能会找不到默认路由而添加失败,这时候你可以通过停止OpenVPN,并手动设置好原来的默认路由再重新进行OpenVPN拨号。

资源

Something went wrong with that request. Please try again.