水星 MW4530R OpenWrt 安装 GoAgent, 利用Gevent实现GoAgent稳定运行

来源:互联网 发布:php markdown 编辑器 编辑:程序博客网 时间:2024/05/09 20:13

水星 MW4530R OpenWrt 安装 GoAgent, 利用Gevent实现GoAgent稳定运行


刚刚开始学习OpenWrt. 参考了以下两个帖子后, 在水星MW4530R上的OpenWrt成功部署GoAgent,并且证实利用Python Gevent库能够实现GoAgent很稳定的运行

1. OpenWrt安装goagent实例教程
2. openwrt路由安装神器WallProxy实现全局fanqiang-5月25日更新Gargoyle1.5.10安装通过

现将我的步骤整理如下:

(1) 在路由器安装 Python

# opkg update
# opkg install python
# opkg install pyopenssl python-openssl


(2) 部署 GoAgent

下载GoAgent, 解压文件到电脑上

修改GoAgent的local文件夹里的proxy.ini文件

将GoAgent 监听 ip改成0.0.0.0

[listen]
ip=0.0.0.0
port=8087


将appid改成我之前已经在Google App Engine 部署好的appid, 多个appid用“|”分隔

[gae]
appid = myvpn|myvpn2


另外,我将PAC设定 enable = 0,因为我不打算将proxy.pac放到proxy.ini相同目录中.

[pac]
enable = 0


修改GoAgent的local文件夹里的proxy.pac文件,把里面的127.0.0.1:8087全部替换成路由器的内网IP,如 192.168.1.1:8087

在路由器制造/app/goagent/local目录

# mkdir -p /app/goagent/local

把GoAgent的local文件夹里的 certs目录proxy.py, 及被更改过的 proxy.ini 复制到路由器/app/goagent/local目录下.  将被更改过的 proxy.pac 复制到路由器/www目录下

(3) 启动GoAgent

# python /app/goagent/local/proxy.py

设定IE使用GoAgent作为代理.代理指向路由器的内网IP 192.168.1.1, 端口 8087. 然后上网浏览.

GoAgent 启动了不到几分钟立刻崩溃, 出现"ssleay_rand_add: Assertion `md_c[1] == md_count[1]' failed"错误. 确认是libopenssl的安全线程支持上有问题.

(4) 安装gevent

下载上面第二个帖子里提供的 python-greenlet_0.4.0-1_ar71xx.ipk 和 gevent_1.0rc2-1_ar71xx.ipk

下载点:
http://www.right.com.cn/forum/pl ... 3wyMTA2MjF8MTIxNTk5
http://www.right.com.cn/forum/pl ... 3wyMTA2MjF8MTIxNTk5

把它们解压后复制到路由器/tmp目录下,然后进行安装.

# opkg install /tmp/python-greenlet_0.4.0-1_ar71xx.ipk
# opkg install /tmp/gevent_1.0rc2-1_ar71xx.ipk


注:我没特意去安装libopenssl和libevent2这两个包,因为我的固件已经自带了.

(5) 再次启动GoAgent

# python /app/goagent/local/proxy.py

注意截图:这时 gevent 是已经被利用到了.



上网浏览几小时,GoAgent 完全稳定 !

(6) 增加开机启动GoAgent

修改/etc/rc.local,在exit 0 之前增加以下命令

python /app/goagent/local/proxy.py >/dev/null 2>&1 &

(7) 使用PAC文件作为自动代理设置(国内网站不走GoAgent, 国外被墙的走GoAgent)

以IE为例,在网络设置中,把自动配置脚本打勾,并填入以下地址

http://192.168.1.1/proxy.pac

(8) 将GoAgent的证书导入浏览器

使用GoAgent时会出现一个问题,那就是在查看https网站时,会出现SSL错误. 解决方法如下.

IE/Chrome自动导入证书
用管理员权限在电脑上运行goagent.exe, GoAgent会向系统导入IE/Chrome的证书.

IE 手动导入证书
打开IE,点击“工具->Internet选项->内容->证书->受信任的根证书颁发机构,导入->local\CA.crt.

Chrome 手动导入证书
打开Chrome://settings/->HTTPS/SSL->管理证书->受信任的根证书颁发机构->导入->下一步,浏览->local\CA.crt->下一步->将所有的证书都放入下列存储->受信任的根证书颁发机构->下一步,完成.

注:Chrome 也可以用 --ignore-certificate-errors 打开,那就不会有SSL错误的警告.

Firefox 手动导入证书
打开FireFox->选项->高级->加密->查看证书->证书机构->导入证书, 选择local\ca.crt, 勾选所有项,导入.