极路由壹S折腾笔记-安装goagent+nginx实现科学上网和优酷去广告

49

hiwifi

家里的移动设备越来越多,目前就有8台终端要联网,服役了3年的D-LINK终于到了要下岗的时候了,赶上京东的618店庆,拿了个带SD的极壹S,到手直接刷残废了,无限重启,无限闪灯,赶上阿兵要结婚没顾上折腾,就扔在一边了。

抽开手之后才开始仔细研究一下这个小东西,极路由按住RESET加电会通过TFTP加载固件,理论上FLASH本身没坏的情况下是刷不坏的(我反复刷了4次才正常开机),ROOT和刷Openwrt有傻瓜包,网上教程到处都是就不再赘述了。

更新日期 2014/9/30

安装goagent

极壹S目前比较成熟的OpenWrt固件就是PandoraBox了(只有LAN灯不亮,其他一切正常),登录到路由器,按照顺序安装下列软件包

libffi
pyopenssl
python-openssl
python-crypto

使用WinSCP登录路由器,文件协议选择SCP,建立/usr/lib/goagent文件夹,上传goagent的certs文件夹和下列文件

CA.crt
dnslib-0.8.3.egg
proxy.ini
proxy.pac
proxy.py

由于安全线程的问题,该固件的/lib/libcrypto.so.1.0.0 /lib/libssl.so.1.0.0两个文件需要替换掉,否则goagent会经常崩溃,壹S自带的SD卡里带了这两个文件

重启路由就可以了。

goagent开机自启动

在启动项中增加

#goagent
killall python
python /usr/lib/goagent/proxy.py   &

或者将goagent注册为系统服务,新建一个文件goagent,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh /etc/rc.common 
 
START=99;
 
PIDFILE="/var/run/goagent.pid";
DAEMON="/usr/lib/goagent/proxy.py";
 
start() {
  sleep 3;
  if  `ps |grep -v grep |grep "python $DAEMON" >/dev/nul`; then 
    echo "running";
  else
    start-stop-daemon -S -m -p $PIDFILE -c nobody -b -x python -- $DAEMON;
  fi;
}
 
stop() {
  if  `ps |grep -v grep |grep "python $DAEMON" >/dev/nul`; then 
    start-stop-daemon -K -p $PIDFILE;
  else
    echo "Not running";
  fi;
}

上传到/etc/init.d目录,并将文件属性设置为0755,再登陆OpenWrt的WEB界面就可以在启动项中看到了,点击启用和开始即可

可选安装包

libevent2
python-greenlet
gevent

开启gevent模式,可以优化性能,减少系统资源占用。

libevent2可以在WEB界面直接安装,python-greenletgevent官方源没有提供,下载ipk包上传到/tmp目录

opkg install /tmp/文件名.ipk

如果安装时遇到pkg_hash_fetch_best_installation_candidate错误,在WEB管理界面->系统->软件包->配置(或者手动编辑/etc/opkg.conf)尾部追加

arch all 1
arch ralink 200
arch ramips_24kec 100

再执行安装,重启goagent可以看到gevent/1.0字样,说明启动成功最明显的变化就是可以在top中看到goagent的内存占用减少了一半左右。

配合Dnsmasq和iptables实现自动科学上网

添加防火墙自定义规则

iptables -t nat -N GFW
iptables -t nat -A GFW -p tcp -d 1.1.1.0/24 -j REDIRECT --to-ports 
iptables -t nat -A GFW -p tcp -j RETURN
iptables -t nat -A PREROUTING -p tcp -j GFW

在Dnsmasq中将域名解析到1.1.1.1/254 示例代码如下

#Flickr
address=/.flickr.com/1.1.1.1
address=/.yimg.com/1.1.1.1
address=/.staticflickr.com/1.1.1.1

具体设置方法参考openwrt过滤广告

修改goagent配置文件开启透明代理模式以支持https转发

[gae]
transport = 1

python2.7占用的空间很骇人,搜遍百度谷歌也没有找到解决方案,于是研究了下代码,这里分享下这个小技巧,可以节约2M左右的空间,保留/usr/lib/python2.7目录中的config lib-dynload plat-linux2 site-packages os.py,其他的文件压缩到/usr/lib/python27.zip以牺牲少量性能,来换取点空间折腾其他东西。

安装nginx屏蔽优酷/土豆/酷6/PPTV/搜狐视频广告

有了优酷去广告 – 解决2003错误的顿悟之后,终于可以和优酷广告说拜拜了

首先解除固件自带的uhttpd对80端口的占用,修改/etc/config/uhttpd文件中的80端口为其他的不常用端口,执行

/etc/init.d/uhttpd restart

重启uhttpd,这样路由的WEB管理界面就变成了192.168.1.1:自定义端口

到OpenWrt安装nginx软件包,编辑/etc/nginx/nginx.conf文件添加以下内容

流量太大,服务器跨了,暂不开放了

编辑/etc/hosts文件或者本地的hosts文件添加内容

# AD Block
192.168.1.1   static.youku.com
192.168.1.1   player.youku.com
192.168.1.1   v.youku.com
192.168.1.1   js.tudouui.com
192.168.1.1   player.ku6cdn.com
192.168.1.1   player.ku6.com
192.168.1.1   player.pplive.cn
192.168.1.1   tv.sohu.com

本地连接的DNS使用路由的IP或者在路由中添加防火墙规则强制转发到路由器,在防火墙自定义规则中添加代码(手动修改文件路径/etc/firewall.user)

#DNS
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53

重启路由或者运行/etc/init.d/nginx restart重启nginx
现在访问这些视频网站就没有广告了,其他视频网站支持还在开发中..

修改系统文件数限制

如果nginx运行一段时间之后经常500错误,可以修改系统文件数限制,编辑/etc/sysctl.conf文件中的fs.file-max为65536,执行sysctl -p应用

挂载swap

按照这样使用的话极路由的128M内存还真是有点吃紧,给一点swap以应对突发情况

使用Putty登录路由执行以下命令

dd if=/dev/zero of=/mnt/sd/.swap bs=1024 count=131072
mkswap /mnt/sd/.swap
swapon /mnt/sd/.swap

这版潘多拉没办法使用fstab来自动开机挂载swap文件,我们可以在启动项中加入swapon /mnt/sd/.swap来实现开机自动挂载
这个奇怪的问题已经找到解决办法了,由于我们的swap文件在SD卡上所以要先挂载了SD卡才能访问到swap文件,编辑/etc/init.d/fstab文件,将start()部分的do_swapon放到do_mount后面,重启fstab就可以了

config_foreach do_mount mount
config_foreach do_swapon swap

文章中所有出现的/mnt/sd/是我的SD卡路径,可以使用df命令查看自己的SD挂载路径,该版本的多拨有个BUG,重启之后不会拨号,在本地启动脚本中加入 /etc/init.d/nwannumset start 即可。即使只将被封的网站流量通过路由器,对路由的小CPU来说也还是比较吃力的,所以可以配合pdnsd解决DNS污染问题,很多网站就可以直连了。

共 49 条评论

  1. 回复

    nginx的这段,可以完整的发到我邮箱里面吗?

    • 回复

      不好意思,没有在维护了.

  2. 回复

    编辑/etc/nginx/nginx.conf文件添加以下内容。是什么内容?

  3. 回复

    极路由极2理论上也是可以刷入极1S的固件吗?我看主控芯片都一样,只不过5Gwifi不能用?

    • 回复

      U应该是一样的,但是1s的固件编译工程中很多HC5661字样,我不确定2是否要改成HC5761,应该是可以做出1s/2通用的固件,但是专门为1s编译的固件估计是有问题的,但是应该可以开机。

  4. 回复

    建议作者拓展一下,网站结构,可以做个分布式的技术交流站群。

  5. 回复

    欸?greenlet和gevent有编译好的嘛?

  6. 回复

    围观下

  7. 回复

    这个和那个opengg有啥不一样(去广告的部分)

    • 回复

      一样的,不同的是路由器下所有设备都没广告了,电脑/PAD/手机都没了。

  8. 回复

    大神可以把上面的固件和IPK包都发给我吗?

  9. 回复

    打算在tp720试试能不能干掉优酷的ad

  10. 回复

    好方法!谢谢楼主分享

  11. 回复

    这相当于是用NGINX+IPTABLES做了一个代理?所有请求都走它,会不会影响迅雷之类的P2P下载?尤其性能方面……有点担心,楼主测试过没?

    • 回复

      Dnsmasq中特定IP才会去goagent,nginx反代的只是视频网站的几个SWF,理论上是不会影响到P2P,不是一回事吧

  12. 回复

    话说不启动啊

  13. 回复

    python-greenlet和gevent 的ipk无法下载!

  14. 回复

    用ss替代goagent 还不错

  15. 回复

    正好需要

  16. 回复

    真厉害

  17. 回复

    想求那个代码,现在也是不想要广告

  18. 回复

    这个和那个opengg有啥不一样(去广告的部分)

  19. 回复

    霸气的分享!技术宅拯救世界

  20. 回复

    围观下

  21. 回复

    在tomato上安装nginx是否也可以?

    • 回复

      Tomato也能装Nginx实现相同的效果。

      • 回复

        nginx的这段,可以完整的发到我邮箱里面吗?

  22. 回复

    可是极路由官方有极1S的Openwrt包啊。
    有个问题想请教一下,为什么螃蟹的芯片不能刷Openwrt呢?

    • 回复

      官方只放出了极1的源码吧,至于什么芯片支持什么固件,这个和CPU厂商有关系,没驱动固件的开发者也没办法。

      • 回复

        我的极1S刷Openwrt后,空闲空间: 86% (1.40 MB),只有这点,安装一个软件就没有空间了,博主的是这样的吗?这正常吗。路由器名称 PandoraBox
        路由器型号 HiWiFi JI2 Board
        固件版本 OpenWrt PandoraBox 12.09.1 / LuCI 0.11 Branch (0.11+svn)
        内核版本 3.4.100

        • 回复

          我刷的内核是3.38,型号那里显示的是D-Team PRY-1

          • 有推荐的极2的Openwrt的包吗?或者博主你可以帮适配一个吗?官方的HiwifiOS我真的用的醉了,各种莫名其妙的Bug

  23. 回复

    请博主加我QQ好吗?我不是极路由,是如意云,也想像你这样,我会先按照你的文章操作,有不会的想方便向您请教,请一定要加QQ啊,我的QQ2577503

  24. 回复

    博主那个群 55969444 人满不能加了。。想问一下自己编译极壹s 的 openwrt 该怎么搞?MT7620a 的 u 貌似官方 svn 上的 openwrt 源码里没有
    谢谢

    • 回复

      不太清楚,潘多拉没有开源,听说有人自己编译OP成功了,不过各种问题,建议刷PandoraBox-ralink-pry1-r208-20140123.bin吧

      • 回复

        多谢博主!我后来照着 hiwifimi.com 上面的教程来了,他们的固件还挺稳定的,能否帮我加到极路由群里?我 qq 22987382

        • 回复

          抱歉啊,我不是管理…

  25. 回复

    博主能否讲OP固件共享一下?我刷的是PandoraBox-ralink-pry1-r208-20140123.bin,安装python一直不成功,运行的时候就提示“Illegal instruction”。
    另外python-greenlet和gevent两个文件能否也共享一下?
    谢谢

    • 回复

      我第一次刷是傻瓜包,现在用的是从这个群里找的固件 55969444,不知道是不是20140123,群共享里有很多1s相关的资源,你可以去看看。

  26. 回复

    前辈, 小白新入1s , pandorabox下要如何挂载SD呢, 我搜索了教程,没出现/dev/sda 这个东西 。

    • 回复

      刷完潘多拉重启之后SD会自动挂载的,你到/mnt目录下看看有个文件夹应该就是了。

  27. 回复

    好高端的方法,虽然不是1s我也去试试

  28. 回复

    不简单的折腾哈!

  29. 回复

    好折腾,直接用浏览器广告拦截插件就可以了,不过自己动手搞的,感觉就是不同~~

  30. 回复

    围观下

  31. 回复

    ftab 还是 fstab ?

    • 回复

      抱歉,笔误,谢谢更正

  32. 回复

    高端!

    • 回复

      现在 goa 也不稳定啊!

      • 回复

        仔细筛选下IP段,每个地区每个运营商都不一样,网上公布的不一定适合你,我这里稳定到没话说。

  33. 回复

    这方法应该适合各种OpenWrt系统的路由器吧

    • 回复

      话是这么说,但是有些地方是针对这个U和这个固件,会玩OpenWrt的可以参考,只会复制代码的新手最好是1s啦,呵呵

发表评论

您的邮箱不会公开,当您的评论有新的回复时,会通过您填写的邮箱向您发送评论内容。 必填字段 *

为何看不到我发布的评论?

正在提交, 请稍候...

This site uses Akismet to reduce spam. Learn how your comment data is processed.