在 3.5MB 超小空閑空間的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 為例)
在 3.5MB 超小空閑空間的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 為例)
在 3.5MB 超小空閑空間的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 為例)
(以Tomato DualWAN WR500V 為例,WR500V 用戶不想看廢話的話請直接跳到“四、使用”開始看即可)一、來由
? ? GoAgent 是利用 Google App Engine 的網(wǎng)絡代理,速度超快,U2B之類的播放及其流暢,秒殺大部分VPN。介紹就不詳說了,具體自己 Google 吧……
? ?GoAgent 客戶端(準確說是中繼)是用 Python 實現(xiàn)的,可以在 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 控制臺->系統(tǒng)管理->JFSS設置,啟用并格式化,就能獲得 3.5M 左右的可用空間——敢情說以前這么大的空間都閑著,真是浪費啊老大……
? ?空間有了,準備開干。然后立馬給了個下馬威,ipkg 安裝后就花費了將近 2M 空間,安裝 python 的時候發(fā)現(xiàn) *_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 包。
三、折騰細節(jié)
1. Tomato DualWAN WR500V 支持 CIFS 客戶端,即可以在路由器上映射 Samba (簡單理解為類似 Windows 網(wǎng)絡共享)的路徑,如此一來,我們可以臨時性地獲得一個超大的“外援”空間。映射后,telnet 上去發(fā)現(xiàn) /cifs1 已經(jīng)可以用了。
2. 執(zhí)行 mount -o bind /cifs1 /opt 讓 /opt 綁定到遠端可用空間上。
3. 安裝 ipkg、然后 ipkg install python openssl 等,然后上傳 GoAgent 然后測試運行無誤(此步驟網(wǎng)上有很多教程,如參考:http://bbs.dualwan.cn/viewthread.php?tid=229261)
4. 上面步驟完成后發(fā)現(xiàn)總共耗費了 70M+ 空間(6498 個文件,似乎),好了,大刀闊斧地刪減文件,做到最終減少到了 7M 多一點(光這個步驟就幾乎花費了我超過 4 個小時的時間,Hacker、Cracker、Geeker 的成功之道:耐心+運氣+經(jīng)驗)。
5. 前文所述格式化裝載 JFFS,df -h 查看只有 3.5M,網(wǎng)上查了一下得知 JFFS 是支持壓縮的,cp -a /cifs1 /jffs,一陣忐忑后,發(fā)現(xiàn)全部拷貝進去了(正好壓縮了 50% 左右),/jffs 上只剩下 150K 左右空間空閑了,真險啊……
6. 執(zhí)行 mount -o bind /jffs /opt 重新綁定 /opt 到內部的 JFFS 空間上,再次執(zhí)行 GoAgent,成功,太棒了。
7. 剩下的收尾工作,卸磨殺驢,把 CIFS 取消掉(畢竟外援是靠不住的,并非 7×24 小時開機);設置自動運行等,打包分享,搞定手工。
四、使用
? ?如果你是 WR500V 用戶(或者其它 mipsel 架構的 CPU 的路由器或者高清播放機均可),可以直接用我導出的專用于 GoAgent 的 Python 包。特點:只有 JFFS 壓縮后僅占用 3.5M 空間;TGZ 打包,部署后直接可用。缺點:刪除了GoAgent cert 下的所有證書(實在沒空間來保留這 1M 多的證書了),不知道訪問那些 HTTPS 網(wǎng)站是否會有問題,尚未驗證(似乎沒遇到問題)。下面是 WR500V 用戶使用的步驟:
1. 在 WR500V WEB 控制臺->系統(tǒng)管理->JFFS設置,啟用,格式化,得到 /jffs 空間。“掛載后執(zhí)行 ”處輸入“mount -o bind /jffs /opt”,以便 /opt 指向 JFFS 空間。
2. 下載附件,上傳文件 opt.tgz 到路由器上:
1)在 系統(tǒng)管理->訪問設置 把 SSH 和 Telnet 訪問打開(如果沒打開的話)。
2)用 WinSCP 等軟件以 SCP 協(xié)議登陸路由,把 opt.tgz 整個壓縮包傳到 /tmp 目錄下
3)用 Putty 或 Telnet 登錄到路由器,輸入:
cd /opt
tar -zxvf /tmp/opt.tgz。3. 解壓縮完成后,執(zhí)行一下 /opt/goagent.autorun 看看有沒有成功的信息,如果有即成功了。
4. 修改 /opt/etc/goagent/proxy.ini 中的 jeanzvpn 為你的 Google App Engine 的 App ID(為了測試你就用我的臨時用一下吧,但完成后請自己申請和部署 GoAgent,切記,否則有 1G 流量限制,人多大家用的話一下就用完了)。
5. 重啟路由器,萬事 OK(重啟后自動掛載 JFFS,綁定到 /opt,綁定后自動執(zhí)行 /jffs/goagent.autorun,這個是從 Tomato USB 官網(wǎng)找到的自動運行的方法)。
6. 要使用 GoAgent FQ,請選擇下面的任意一種方式:
1). 設置瀏覽器代理為路由器地址,端口 8087;
2).設置瀏覽器或或者 iPhone 自動代理腳本為 http://192.168.1.1:8087/goagent.pac(默認已經(jīng)在 8087 端口開啟 GoAgent PAC 服務,如果路由器的 IP 地址不是 192.168.1.1,請先修改 goagent.pac 的 127.0.0.1 為 路由器的地址);
3). Chrome 用戶還可以用 Switchy Sharp 插件。
五、后話
? ?實際使用后用 top 命令查看 CPU 和內存占用:單個客戶端普通網(wǎng)頁瀏覽的話,CPU基本上 5% 以下,初始響應速度似乎不如 Windows 和 Mac OS X 的 GoAgent 快;看 YouTube 視頻的話,CPU 大概會在 5~10%之間,非常流暢。沒有啟用 swap 空間,內存占用和穩(wěn)定性完全無問題。
By Yonsm
2012.04.16
感謝所有工具和參考文章作者?
下載:
https://hdweb.googlecode.com/svn/goagent.tgz ?(2.0.2版本, 嘗試使用后請立即替換AppID ,未確認U2B是否可自動)
http://115.com/file/c2c4nlla#GoAgent-1.8.11-On-opt.tar ?(1.8.11版本,自己升級的話直接替換GA的文件即可)
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
更進一步的應用,自動轉發(fā)指定網(wǎng)站到GA: http://bbs.dualwan.cn/viewthread.php?tid=278761
iptables -t nat -I PREROUTING -i br0 -p tcp -d 12.34.56.78 –dport 80 -j REDIRECT –to-ports 8087
iptables -I INPUT -p tcp –dport 8087 -j ACCEPT?
DNSMasQ 配置: http://115.com/file/dpjlsv6j#dnsmasq.conf
在 3.5MB 超小空閑空間的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 為例)
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
