|
本帖最后由 171621 于 2017-11-1 00:04 编辑
首先要先感谢这两个帖子的作者sady和新明小筑:
https://www.right.com.cn/forum/thread-114641-1-1.html
http://muramato.blogspot.com/2012/04/tomatogae.html
从这两个帖子摸索,经过1天的努力终于从100%的菜鸟到成功完成Wall-proxy部署实现部分FQ。虽然还有一些问题需要学习解决,但是主要的功能已经成功实现还是感觉蛮有成就感的~~~~当然在操作之前也搜索过其它很多的帖子,但最后这两个帖子的内容成功帮助我完成部署,所以还是要感谢其它所偶帮助我入门的帖子的只不过在这里就不点名了,你们就做一回“无名英雄”吧~~~~
废话太多了,不过开始前还是先介绍一下基本信息,目的是尽可能的帮助那些像我一样的菜鸟们能傻瓜操作完成部署。还有些问题要请教高手们呢~~~
我的E3000刷的是1.28版的Tomato by shibby,具体的配置看下图,我刷好后只设置了PPPoE和5G能够正常上网。之前还刷过TTDW版尝试双拨和IPV6,但是貌似是我的ISP限制了双拨,并且阻止了Tunnelbroker来ping我的公网ip,于是这两个功能目前无法实现,郁闷中~~~~
下面开始一步一步列出实现的步骤,所有蓝字的备注部分是经过我操作过程中走过的弯路整理出的心得,高手可直接掠过,菜鸟们可以看一看,或许能帮到你~~~~
第一步:PC端申请Google App Engine账号并部署APPID
这是一切的基础,基本上没有什么难点,具体做法不废话了,自己搜别的帖子学习吧。现在一个账户貌似可以申请25个appid,所以一个帐户一天可以有25G流量,够用了吧~~~~~
第二步:PC端配置Wall---proxy
这一步也没有什么可说的,自己去wiki上学吧,上面已经说得很详细了:https://code.google.com/p/Wall---proxy/,和gae一个意思。
第三步:路由器刷TT
关于这一步也不具体说了,网上教程太多了,对于E3000来说,可以参考这两个帖子一步一步照做就可以了:
http://bbs.dualwan.cn/thread-243541-1-1.html
http://bbs.dualwan.cn/viewthread.php?tid=243551&from=favorites
注:关于刷机顺序的问题,据说可以直接从官方固件刷TT,我没试过,但是应该是可以的。如果想稳妥点的话就先刷DD然后再刷TT吧,只不过E3000官方固件刷DD的时候好像没法像上面帖子里说的那样直接刷你想要的版本,要按照wiki的教程先刷官方给出的trial版,然后就可以直接刷TT了,我就是这么做的。DD的Trial版到这里:http://dd-wrt.com/wiki/index.php/Linksys_E3000,找到下图红框的连接就可以了
刷好后设置好TT能够正常上网
第四步:重头戏,TT部署Wall---proxy
有了Wall---proxy,路由器也配置好TT后,我们用一个U盘来配置Wall---proxy。当然也可以直接把Wall---proxy放到路由器里(只要路由器里的空间够用,一般情况下都是够用的),只不过那个方法我还不会,而网上的教程多半都是用U盘做的,所以这里就是U盘版的教程:
注:以下所有用到的文件和软件已经打包传到网盘上了,需要的可以去下载,地址贴在帖子的最后,包括DiskGenius单文件版,WinSCP514便携版,site-packages.tar.gz和Wall---proxy2.2.5版路由器安装文件,菜鸟们直接拿来用就可以了
以下步骤是我实践后的成果,方法可能比较笨,但是能保证成功。高手们可以根据情况自己调整。我用的是Windows系统,其它系统的话远离差不多
这里引用开头感谢的两篇帖子里的一些图片,再次感谢一下两位作者~~~~
1. 用DiskGenius删除U盘分区。TT用的是Linux系统,因此类似FAT16,FAT32之类的格式是无法使用的,把分区删掉,DiskGenius保存即可;
2. 路由器的USB AND NAS的USB Supoort页面按照下图来设置:
3. 将U盘插入路由器,稍等一会儿刷新路由器,要让路由器加载U盘,只要能在路由器界面的USB AND NAS下的USB Support最下面看到U盘信息就可以了,此时的U盘应该是没有分区(partition)的
4. PC端开启telnet(方法自己Google),或者用SSH软件登录路由器,对U盘建立一个sda分区:
Windows里运行Run,输入Telnet 192.168.x.x(路由器ip),输入用户名(初始一般是root)和密码(初始一般是admin),进入后可以输入fdisk -l /dev/sda,然后按p查看U盘分区,因为刚才都删掉了,所以应该是没有分区的,如下图
如果前面没有删除分区,就会像图B那样,需要删除分区,以图B为例,输入的指令为:
fdisk -l /dev/sda
p
d #此处开始删除分区
1
p
d
回车
p
这样就清空分区了,接下来建立分区:
fdisk -l /dev/sda
p
n #此处开始建立分区
p
1
回车
+1000M #此处是建立分区的空间大小,可根据情况自己设定,不一定非要1000M
wq
这样就建立好一个分区了,上图中还建立了一个swap分区,我不懂干什么用的,不过本教程用不到,自己以后慢慢研究吧
5. 将U盘分区格式化为ext3文件系统
刚才建立了一个分区sda1,需要将其格式化成ext3系统才能在Linux系统下使用,如果这个时候路由器已经挂载(mounted)了U盘的话,需要先卸载再格式化:
umount /dev/sda1 #卸载分区
mkfs.ext3 /dev/sda1 #格式化分区
6. 格式还完成后建议重启路由器,使U盘sda1分区自动挂载到/tmp/mnt/sda1下面,重启后在USB AND NAS的USB Support最下面确认:
7. 重新telnet或SSH进入路由器,建立/opt目录:
mkdir /mnt/sda1/opt
mount -o bind /mnt/sda1/opt /opt
cd /opt
到此/opt空间准备好了
8. 安装optware
wget http://bbs.dualwan.cn/downloads/optware-install.sh -O - | tr -d '\r' > optware-install.sh #获取安装脚本.
chmod 755 ./optware-install.sh #给序可执行权限
sh ./optware-install.sh #开始安装optware
ipkg update #更新软件包
9. 安装python2.7
ipkg install python27 #时间稍长一点,耐心等待
10. 安装 gevent_1.0rc2 和 pyopenssl_0.13支持.据说这两个不是必须的,但能让Wall---proxy稳定运行和提高性能,所以装了吧
应该是不同版本的内容不同,这两个需要编译,而且花的时间相对相当长,对于菜鸟的我来说就直接无知的用人家编好的吧,以后慢慢学习~~~~
附件里的site-packages.tar.gz,使用WinSCP将其放到U盘/opt/lib/python2.7/site-packages下面,WinSCP的用法自己Google吧。
注:对于菜鸟来说,WinSCP登录方式使用SCP协议,按下图设置好后登录即可:
放好后把site-packages.tar.gz解压:
cd /opt/lib/python2.7/site-packages
tar zxvf site-packages.tar.gz
至此python/2.7.3+gevent/1.0rc2+pyopenssl/0.13安装完了
注:python,gevent和pyopenssl版本不同会有区别,如果想装新版本的话需要编译,这个以后慢慢学吧
11. 安装Wall---proxy
实际上就是把Wall---proxy放到U盘里就可以了,我装的是官网上的Windows首次使用的2.2.5版本,虽然它说Tomato可以用那个0.5MB版的,但是我试的时候有些网站打不开,具体原因在帖子最下面说明,所以这里把Windows版无关的文件删掉就可以放了,主要就是local下面的cert文件夹,misc文件夹,src.zip文件夹,config.py,pac,proxy.ini和startup.py。
如果想省事的话,下载附件,里面有已经打包好的Wall---proxy.rar文件,解压后将Wall---proxy文件夹放到/opt目录下面即可
放好后设置proxy.ini,[listen]里的ip改成0.0.0.0,[gae]下面的appid替换成你自己配置好的Wall---proxy appid,多个appid中间用“|”分隔开
至此Wall---proxy就部署好了
第五步:启动Wall---proxy
Telnet或SSH进入路由器,运行下面指令:
/opt/bin/python2.7 /opt/Wall---proxy/startup.py
稍等片刻,如果看到如下类似的现实就说明Wall---proxy已经成功启动了:
Tomato v1.28.0000 MIPSR2-121 K26 USB Big-v p n
========================================================
Welcome to the Linksys E3000 [TomatoUSB]
Uptime: 06:28:55 up 2:07
Load average: 0.00, 0.00, 0.00
Mem usage: 17.6% (used 10.64 of 60.56 MB)
WAN : xxx.xx.xxx.xx/xx @ xx:xx:xx:xx:xx:xx
LAN : 192.168.x.x/xx @ DHCP: 192.168.x.x - 192.168.x.x
WL0 : xxxxxx @ channel: US6 @ xx:xx:xx:xx:xx:xx
WL1 : xxxxxx @ channel: USauto @ xx:xx:xx:xx:xx:xx
========================================================
root@unknown:/tmp/home/root# /opt/bin/python2.7 /opt/Wall---proxy/startup.py
------------------------------------------------------------------------------
Welcome to use Wall---proxy, Copyright (C) 2009-2013 HustMoon Studio
Version: Wall---proxy/2.2.5 (python/2.7.3, gevent/1.0rc2)
Listen : 0.0.0.0:8086
------------------------------------------------------------------------------
Initializing fake CA for https2http:
Please make sure you have imported "/opt/Wall---proxy/cert/CA.crt" to the Trusted
root CA list for your browser.
CA Information: Wall---proxy CA (2000-01-01 01:00:00 - 2034-10-08 17:21:28)
Wildcard Certificate: YES
Initializing UrlFetch for url fetch:
Debug level: 0
Global timeout: 60.0
Use keep alive: YES
Initializing Utility for proxy-auth, hosts, forward.
Forward timeout: 60.0
Remote DNS: ['xxx.xx.x.x']:xx (TCP,3s,L,IPv4,0B)
Initializing PAAS for proxy based on cloud service.
Init GAE with appids: appid|appid|appid|appid|appid|appid|appid
max_threads when range fetch: 3
GAE listen on: 0.0.0.0:8087
Init PAAS with url: http://gops.apink.tk/
PAAS listen on: 0.0.0.0:8088
Initializing PAC for proxy auto-config.
RuleList: k0|0|0+h0:0|9:9|8:8+r0|1|0=18 rules from string.
RuleList: k0|0|0+h0:0|1:1|20:20+r0|0|1=22 rules from string.
RuleList: k0|0|0+h0:0|0:0|1:1+r0|0|0=1 rules from string.
RuleList: k0|0|0+h0:0|0:0|3:3+r0|0|0=3 rules from string.
RuleList: k0|0|0+h0:0|0:0|1:1+r0|0|0=1 rules from string.
RuleList: k0|0|0+h0:0|0:0|13:13+r0|0|0=13 rules from string.
RuleList: k0|0|0+h0:0|0:0|0:0+r0|0|1=1 rules from string.
PacFile: schedule to load rules from "string:///^https?:\\/\\/.*?(?:youku|qiyi
|iqiyi|letv|sohu|ku6|ku6cd..., https://autoproxy-gfwlist.googlecode.com/svn/trun
k/gfwlist.txt, userlist.ini", save to "proxy.pac".
RuleList: schedule to load rules from "string:///^https?:\\/\\/.*?(?:youku|qiy
i|iqiyi|letv|sohu|ku6|ku6cd...".
RuleList: schedule to load rules from "https://autoproxy-gfwlist.googlecode.co
m/svn/trunk/gfwlist.txt, userlist.ini".
------------------------------------------------------------------------------
PAC RuleList result:
string:///^https?:\\/\\/.*?(?:youku|qiyi|iqiyi|letv|sohu|ku6|ku6cd...: k0|0|0+
h0:0|0:0|0:0+r0|0|1=1, string
Total: k0|0|0+h0:0|0:0|0:0+r0|0|1=1
Resolve 'www.google.com.hk' to ['xxx.xxx.xx.xx'] with dns xxx.xx.x.x.
Resolve 'www.google.com' to ['xx.xxx.xxx.xxx', 'xx.xxx.xxx.xx', 'xx.xxx.xxx.xxx'
, 'xx.xxx.xxx.xxx', 'xx.xxx.xxx.xxx', 'xx.xxx.xxx.xxx'] with dns xxx.xx.x.x.
Resolve 'talkx.l.google.com' to ['xxx.xxx.xx.xxx'] with dns xxx.xx.x.x.
Resolve 'talk.google.com' to ['xx.xxx.xx.xxx'] with dns xxx.xx.x.x.
第六步:配置浏览器
至此恭喜你,Wall---proxy已经可以使用了,浏览器(以IE为例,Opera Developer用的也是IE内核)里设置http://路由器ip:8086/proxy.pac或者proxy 路由器ip:8086两者选其一就可以了,pac貌似相对更智能一点。如下图:
Google Chrome的SwitchySharp以及Firefox的FoxyProxy自行Google方法吧,很简单的。iOS设备里面的设置也是一样。
现在打开Google或者YTB或者FB试试看吧:
第七步:设置路由器开启后自动运行Wall---proxy
路由器的Administration里面WAN Up添加如下指令:
sleep 10
mount -o bind /mnt/sda1/opt /opt
/opt/bin/python2.7 /opt/Wall---proxy/startup.py&
保存
路由器的Administration里面Firewall添加如下指令:
sleep 5
iptables -I INPUT -p tcp --dport 8087 -j ACCEPT
iptables -I INPUT -p tcp --dport 8086 -j ACCEPT
保存
至此大功告成啦!享受YTB的世界吧~~~~
注:
1. 如果你重启路由器后再次telnet进入路由器运行/opt/bin/python2.7 /opt/Wall---proxy/startup.py后出现如下显示:
Tomato v1.28.0000 MIPSR2-121 K26 USB Big-v p n
========================================================
Welcome to the Linksys E3000 [TomatoUSB]
Uptime: 06:13:26 up 1:52
Load average: 0.00, 0.02, 0.00
Mem usage: 35.4% (used 21.46 of 60.56 MB)
WAN : xxx.xx.xxx.xx/xx @ xx:xx:xx:xx:xx:xx
LAN : 192.168.x.x/xx @ DHCP: 192.168.x.x - 192.168.x.x
WL0 : xxxxxx @ channel: US6 @ xx:xx:xx:xx:xx:xx
WL1 : xxxxxx @ channel: USauto @ xx:xx:xx:xx:xx:xx
========================================================
root@unknown:/tmp/home/root# /opt/bin/python2.7 /opt/Wall---proxy/startup.py
Warning: Listen on 0.0.0.0:8086 failed, listen on 0.0.0.0:8086 instead.
Traceback (most recent call last):
File "/opt/Wall---proxy/startup.py", line 9, in <module>
main()
File "<string>", line 1749, in _42
File "<string>", line 1729, in ____
File "<string>", line 1619, in _74
File "<string>", line 1613, in _______
File "<string>", line 1592, in _53
File "<string>", line 1415, in __init__
File "build/bdist.linux-mips/egg/gevent/server.py", line 78, in init_socket
File "build/bdist.linux-mips/egg/gevent/server.py", line 89, in get_listener
File "build/bdist.linux-mips/egg/gevent/server.py", line 153, in _tcp_listener
File "<string>", line 1, in bind
socket.error: [Errno 125] Address already in use: ('0.0.0.0', 8086)
那就说明路由器已经将Wall---proxy正常启用了。如果想要暂时关闭Wall---proxy服务,可以直接telnet里关闭python27服务,运行以下命令即可:
killall -9 python2.7
之后如果想要再开启可以再运行一次/opt/bin/python2.7 /opt/Wall---proxy/startup.py,但是关闭telnet之后python也就自动关闭了,想要用Wall---proxy的话需要重启一遍路由器,这样python就又自动开启了
2. 经过测试,我发现在手动设置路由器ip和端口的情况下iPad上的Twitter app无法使用,Daylimotion app无法播放视频,FB Messenger app无法用,iPhone上基本上只有YouTube能看视频,页面上的视频贴图都无法显示:
查看telnet上的log,发现基本上都出现的是如下的错误:
192.168.x.x - [2014-10-08 21:33:21] FWD xx.xxx.xxx.xxx "CONNECT www.google.com.
hk:443 HTTP/1.1" 200 -
192.168.x.x - [2014-10-08 21:33:21] FWD xxx.xxx.xx.xx "CONNECT lh3.googleuserco
ntent.com:443 HTTP/1.1" 200 -
192.168.x.x - [2014-10-08 21:33:22] FWD xxx.xxx.xx.xx "CONNECT plus.google.com:
443 HTTP/1.1" 200 -
192.168.x.x - [2014-10-08 21:33:24] WP SSLError for www.youtube.com:443: [Errno
8] _ssl.c:504: EOF occurred in violation of protocol
192.168.x.x - [2014-10-08 21:33:31] GAE xxx.xxx.xx.xx "GET http://www.facebook.
com/ HTTP/1.1" 302 0
192.168.x.x - [2014-10-08 21:33:31] WP SSLError for www.facebook.com:443: [Errn
o 8] _ssl.c:504: EOF occurred in violation of protocol
目前还不知道怎么解决,查gae的wiki貌似是证书版本的问题。还好主要的网站运行良好,就先凑合用了。如果有高手知道怎么回事还请指点,多谢!
3. 关于证书,你在第一次浏览器里运行Wall---proxy时可能会提示安装证书,这时只要选择“Yes”允许安装就可以了。如果之后运行新版本的Wall---proxy的话会被要求重新安装证书,这时候可能需要重新覆盖U盘里的Wall---proxy文件,否则会出现http://blog.netsh.org/posts/goag ... ror_1013.netsh.html这里描述的错误。这时就需要修复证书文件
最后贴上部署所需的文件包:
[已失效]
废了老半天劲,教程就贡献到这儿了,还有好多东西要学,欢迎大家下面交流讨论~~~~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|