最近一直在研究一种零技术壁垒的翻墙技术,想来想去,觉得可以在无线路由上下下功夫,经过半个多月的调试和测试,已经完工,而且效果非常之好。

我希望有技术的朋友掌握了之后,可以在一些提供公用WIFI的地方架设这样的翻墙猫,这样没有了翻墙的技术壁垒,翻墙就会成为一种势不可挡的趋势

我的设想就是以后一个咖啡店没有可以翻墙的WIFI都不好意思给别人打招呼,宾馆的翻墙猫就像卫星电视一样成为一种必备(类似宾馆能收到家里收不到的频道)

其实这样的好处有很多,我就不一一举例了,言归正传,介绍一下我的翻墙猫制作过程。

==========所需硬件及软件=========

1、AP无线路由一个,能够刷Tomato1.27vpn3.6,一般4M Flash的猫都可以,我这里使用的linksys WRT54G2 8M Flash版本;

2、国外VPN服务器一台,可以买VPS自己搭OPENVPN,至于OPENVPN的搭建我前面也有教程,网上也多,这里就不多说了;

小提示:对于一些有限制的网络,我们可以把openvpn服务器的端口设置为tcp 的 80 或者 443

3、Tomato1.27vpn3.6(下载地址 http://tomatovpn.tomatomod.de/release/1.27vpn3.6/),为什么不用DDWRT?因为DDWRT的启动脚本比较麻烦,不容易上手;

4、OPENVPN 2.1.1,客户端和服务器都必须是这个版本,因为早期版本不支持 max-routes 参数和内置证书,后面要用到max-routes做国内外分流;

==========翻墙猫的制作==========

1、刷新路由到 Tomato1.27vpn3.6 版本(这个版本内置的Openvpn是 2.1.1,满足我们的需求)(本文不对刷成砖的猫负责,但是可以提供技术支持,虽然我也很烂)

2、设置启动脚本

进入猫的管理界面,到Administration选项下面的Scripts

A、设置初始化Init,启用tun模块,OPENVPN必须的

insmod /lib/modules/2.4.20/kernel/drivers/net/tun.o

B、设置iptables转发,到Firewall选项,sleep 10 是要等待前面的模块载入正常,不然会冲过去,后面这个IP是你内网的IP地址范围

sleep 10
iptables -t nat -A POSTROUTING -s 192.38.38.0/24 -j MASQUERADE
C、设置启动OPENVPN连接,到WAN UP脚本下设置,因为tomato的脚本有字节限制,就连最简单的一个OPENVPN+证书的配置都容纳不下,所以我这里耍了一个小聪明,用下载的方式, 例子中是用了2个文件,第一个就是OPENVPN客户端的conf文件(后面有详细说明),第二个suoluo文件是用户密码,如果不想启用用户密码认证的 筒靴可以跳过下载用户密码这一步。每次操作都要sleep一下,是为了保证每个指令都执行成功,时间按照你的猫的速度而定,反正我觉得现在这个sleep 时间比较靠谱。最后一条指令就是启动OPENVPN了,如果不做国内外分流的筒靴可以看完这里就去实践了,要做分流的筒靴请继续。
sleep 20
cd /tmp
sleep 30
openvpn –config suoluo.conf
D、其他的Tomato设置
比如QoS了,就看个人需要了,这里就不浪费口水了
==========OPENVPN.CONF的分流配置==========
#OPENVPN的基本配置
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
reneg-sec 86400
auth-user-pass suoluo #这个是用户名密码验证的参数,不需要用户密码验证的去掉这行,顺便说一下啊,suoluo就是刚才下载的那个文件,这个文件的格式很操蛋,必须要多一个回车,也就是用户一行,密码一行,最后还有一个空行才行,官方文档都没写,我都不知道自己怎么琢磨出来的 :-P
auth-retry interact
ns-cert-type server
comp-lzo
verb 3
max-routes 2000 # 这个就是设置国内外分路由的参数了,我设置的最大2000跳,其实就940多条,只不过为了以后的扩展预留。这些都是国内的IP,也就是说加了这个之后, 国内的流量就直接走,不去VPN,这样保证了国内的速度,而且降低了openvpn服务器的压力,IP地址池你也可以自己维护,我是用的 http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst 的列表做的,目前是最新的。
#push_cn_routes
route 110.6.0.0 255.254.0.0 net_gateway 5
route 110.16.0.0 255.252.0.0 net_gateway 5
…….文章太长了,这里截掉的一段在这里下载 routes
route 61.232.0.0 255.252.0.0 net_gateway 5
route 61.236.0.0 255.254.0.0 net_gateway 5
route 61.240.0.0 255.252.0.0 net_gateway 5
#push_chn_route
#下面是CA证书,也就是你服务器生成的ca.crt文件内容
<ca>
—–BEGIN CERTIFICATE—–
证书内容
—–END CERTIFICATE—–
</ca>
#下面是用户证书,也就是你服务器生成的client.crt文件内容,比如我的suoluo.crt
<cert>
—–BEGIN CERTIFICATE—–
证书内容
—–END CERTIFICATE—–
</cert>
#下面是用户key,也就是你服务器生成的client.key文件内容,比如我的suoluo.key
<key>
—–BEGIN RSA PRIVATE KEY—–
KEY内容
—–END RSA PRIVATE KEY—–
</key>

key-direction 1
#下面是tls认证,也就是你服务器生成的ta.key文件内容
<tls-auth>
#
# 2048 bit OpenVPN static key
#
—–BEGIN OpenVPN Static key V1—–
ta.key内容
—–END OpenVPN Static key V1—–
</tls-auth>

好了,到这里全部都搞定了,如果要用到分流,做路由表大概需要5分钟左右,猫启动后5分钟左右就能上网了,如果不做分流,就2分多种,有什么问题和经验可以一起交流。