在 3.5MB 超小空闲空间的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 为例)
(以Tomato DualWAN WR500V 为例,WR500V 用户不想看废话的话请直接跳到“四、使用”开始看即可)
一、来由
二、存储空间
2012.04.16
感谢所有工具和参考文章作者
下载:
http://115.com/file/e7n69oyv#(1.8.2 版本,已去除 logging 功能,已复用同一个线程/端口来做代理和PAC服务 )
From SkyDrive (1.8.0 版)
DualWan BBS 相关讨论:http://bbs.dualwan.cn/viewthread.php?tid=266521
from http://www.yonsm.net/post/645
(以Tomato DualWAN WR500V 为例,WR500V 用户不想看废话的话请直接跳到“四、使用”开始看即可)
一、来由
GoAgent 是利用 Google App Engine 的网络代理,速度超快,U2B之类的播放及其流畅,秒杀大部分VPN。介绍就不详说了,具体自己 Google 吧……
GoAgent 客户端(准确说是中继)是用 Python 实现的,可以在 Mac OS X、Windows、Android、iOS、WebOS 上运行,然后再设置浏览器的代理为本地 GoAgent 端口。但是要让每个访问点上部署 GoAgent 是非常麻烦的事情(如 iOS、Android 等);即时是 Windows 和 Mac OS X,每次都使用都要打开一个多余的尾巴,想想就麻烦。有没有更好的解决方案呢?
当然有!最合适的部署的角色服务器就是在路由器上。搜索一下 GoAgent OpenWRT 或者 GoAgent Tomato,有很多教程可以参考。基本的步骤是安装 ipkg/opkg,安装 python、openssl,然后上传 GoAgent 的文件,然后少量设置就行了。
二、存储空间
我在使用的路由器 Tomato DualWAN 的 WR500V,只有 8M Flash,查看了一下空间使用,才用了3.xM,还有 4M+ 的空间那里去了呢?赶紧问了了一下路由器的生产商,答复了是在路由器 Web 控制台->系统管理->JFSS设置,启用并格式化,就能获得 3.5M 左右的可用空间——敢情说以前这么大的空间都闲着,真是浪费啊老大……
空间有了,准备开干。然后立马给了个下马威,ipkg 安装后就花费了将近 2M 空间,安装 python 的时候发现 *_mipsel.ipk 有 14 M+,包括其它的依赖,解压缩后竟然有 70M+(共 6498 个文件)。这对于那些有 USB 口的路由器来说,随手插上一个 U 盘或移动硬盘什么的,毫无压力,但对于我这种只有 8M Flash 的路由器来说,压力山大啊……
对于万能的终极动手折腾控来说,办法总是比困难多。于是想办法尝试,最终真的搞定了,在 3.5M 闲置空间内安装上了 GoAgent 1.8.0,让所有的电脑啊、手机啊、高清播放机啊神马的都可以轻松享受 GoAgent 带来的快感(部署 PAC 等会更方便)。本文典型地适用于有 8M Flash 且其中有 3.5M+ 空间剩余的可以刷 OpenWRT、Tomato、DD-WRT 的路由器(如果 8M Flash 刷固件后,空间不足 3.5M,可以寻找或者自己 DIY 精简版固件),特别是 Tomato DualWAN WR500V 用户可以照搬步骤和超级 Python 包。
三、折腾细节1. Tomato DualWAN WR500V 支持 CIFS 客户端,即可以在路由器上映射 Samba (简单理解为类似 Windows 网络共享)的路径,如此一来,我们可以临时性地获得一个超大的“外援”空间。映射后,telnet 上去发现 /cifs1 已经可以用了。
2. 执行 mount -o bind /cifs1 /opt 让 /opt 绑定到远端可用空间上。
3. 安装 ipkg、然后 ipkg install python openssl 等,然后上传 GoAgent 然后测试运行无误(此步骤网上有很多教程,如参考:http://bbs.dualwan.cn/viewthread.php?tid=229261)
4. 上面步骤完成后发现总共耗费了 70M+ 空间(6498 个文件,似乎),好了,大刀阔斧地删减文件,做到最终减少到了 7M 多一点(光这个步骤就几乎花费了我超过 4 个小时的时间,Hacker、Cracker、Geeker 的成功之道:耐心+运气+经验)。
5. 前文所述格式化装载 JFFS,df -h 查看只有 3.5M,网上查了一下得知 JFFS 是支持压缩的,cp -a /cifs1 /jffs,一阵忐忑后,发现全部拷贝进去了(正好压缩了 50% 左右),/jffs 上只剩下 150K 左右空间空闲了,真险啊……
6. 执行 mount -o bind /jffs /opt 重新绑定 /opt 到内部的 JFFS 空间上,再次执行 GoAgent,成功,太棒了。
7. 剩下的收尾工作,卸磨杀驴,把 CIFS 取消掉(毕竟外援是靠不住的,并非 7×24 小时开机);设置自动运行等,打包分享,搞定手工。
四、使用 如果你是 WR500V 用户(或者其它 mipsel 架构的 CPU 的路由器或者高清播放机均可),可以直接用我导出的专用于 GoAgent 的 Python 包。特点:只有 JFFS 压缩后仅占用 3.5M 空间;TGZ 打包,部署后直接可用。缺点:删除了GoAgent cert 下的所有证书(实在没空间来保留这 1M 多的证书了),不知道访问那些 HTTPS 网站是否会有问题,尚未验证(似乎没遇到问题)。下面是 WR500V 用户使用的步骤:
1. 在 WR500V WEB 控制台->系统管理->JFFS设置,启用,格式化,得到 /jffs 空间。“挂载后执行 ”处输入“mount -o bind /jffs /opt”,以便 /opt 指向 JFFS 空间。
2. 下载附件,上传文件 opt.tgz 到路由器上:
1)在 系统管理->访问设置 把 SSH 和 Telnet 访问打开(如果没打开的话)。
2)用 WinSCP 等软件以 SCP 协议登陆路由,把 opt.tgz 整个压缩包传到 /tmp 目录下
3)用 Putty 或 Telnet 登录到路由器,输入:
cd /opt
tar -zxvf /tmp/opt.tgz。
tar -zxvf /tmp/opt.tgz。
3. 解压缩完成后,执行一下 /opt/goagent.autorun 看看有没有成功的信息,如果有即成功了。
4. 修改 /opt/etc/goagent/proxy.ini 中的 jeanzvpn 为你的 Google App Engine 的 App ID(为了测试你就用我的临时用一下吧,但完成后请自己申请和部署 GoAgent,切记,否则有 1G 流量限制,人多大家用的话一下就用完了)。
5. 重启路由器,万事 OK(重启后自动挂载 JFFS,绑定到 /opt,绑定后自动执行 /jffs/goagent.autorun,这个是从 Tomato USB 官网找到的自动运行的方法)。
6. 要使用 GoAgent 翻墙,请选择下面的任意一种方式:
1). 设置浏览器代理为路由器地址,端口 8087;
2).设置浏览器或或者 iPhone 自动代理脚本为 http://192.168.1.1:8087/goagent.pac(默认已经在 8087 端口开启 GoAgent PAC 服务,如果路由器的 IP 地址不是 192.168.1.1,请先修改 goagent.pac 的 127.0.0.1 为 路由器的地址);
3). Chrome 用户还可以用 Switchy Sharp 插件。
五、后话 实际使用后用 top 命令查看 CPU 和内存占用:单个客户端普通网页浏览的话,CPU基本上 5% 以下,初始响应速度似乎不如 Windows 和 Mac OS X 的 GoAgent 快;看 YouTube 视频的话,CPU 大概会在 5~10%之间,非常流畅。没有启用 swap 空间,内存占用和稳定性完全无问题。
By Yonsm2012.04.16
感谢所有工具和参考文章作者
下载:
http://115.com/file/e7n69oyv#(1.8.2 版本,已去除 logging 功能,已复用同一个线程/端口来做代理和PAC服务 )
From SkyDrive (1.8.0 版)
DualWan BBS 相关讨论:http://bbs.dualwan.cn/viewthread.php?tid=266521
from http://www.yonsm.net/post/645
No comments:
Post a Comment