路由器自动分流科学上网原理和实现方式研究

要科学上网,首先要搞清楚墙的主要阻碍:

1、DNS污染 就是把本来有的域名解析成不存在,或者解析成错误的IP。(破解这个其实很重要,后面我搞了很久都搞不定,其实跟这个有关系。)

2、IP封印,这个只能靠vpn之类的来连接了。

3、对VPN进行干扰,这个确实存在,国内PPTP,L2TP之类的经常不稳定,不过我不知道原理,也不知道怎么搞定。估计国人开发出shadowsocks协议,就是为了应付这个吧?有空要试试

 

(查询资料)路由器上科学上网的的两种方案实现:

一、根据IP分流的方案。这种方案出现的较早(可能当时在路由器上根据域名分流的技术还没成熟?)

1)chnroutes  可能是最早的方案,国外IP走VPN,国内走本地。简单直接,问题也多。(openwrt使用参考http://www.geekfan.net/10492/)

2)autoddvpn的graceMode  维护需要番茄的IP列表,有手工的方法,也有根据gfwlist(https://code.google.com/p/autoproxy-gfwlist/)或者smarthosts(https://code.google.com/p/smarthosts/)(https://code.google.com/p/huhamhire-hosts/)等。openwrt下用可参考https://code.google.com/p/openwrt-smarthosts-autoddvpn/。

3)openwrt-gfw 这个反其道行之,国内IP白名单走本地通道,其他走vpn。现在觉得这个方案似乎比较靠谱,因为折腾太多域名什么的也不知道路由器CPU能吃得消吗。国内IPv4地址基本已经全部分完,不会有啥变化了;就算有变化也有权威的列表可以查询,墙屏蔽的域名列表没人常年维护。我应用在720n上失败,不知道什么原因,有空还要再试试。

 

二、根据域名分流的方案

这个其实原理都差不多,因为dnsmasq这个本地DNS解析转发软件从2.66版之后开始支持ipset,ipset是iptables的增强功能,我的理解就是可以定义一个ip地址集,对这个地址集的可以进行统一的路由设置。这个方案的原理就是根据需要番茄的域名列表建立一个的ipset,然后对这个ipset设置vpn路由。这种方案的好处是对域名进行分流,不受ip地址变化的限制(有些网站ip地址随时可以变化,我试过twitter的域名几乎每次解析都不太一样)。二是(据说)ipset设置路由效率要比一条条设置要高。相关的文档:

1) Openwrt 上的 Dnsmasq IPSET 真是神器

2) OpenWrt VPN 按域名路由

 

3) 利用 Dnsmasq 的 ipset 实现智能路由、科学上网

4) 使用ipset让openwrt上的shadowsocks更智能的重定向流量

5) OpenWRT配合shadowsocks 最智能的全局代理

6) 基于OpenWRT的自动番茄路由器

7) FreeRouter_V2

评论已关闭。