極路由壹S折騰筆記-安裝goagent+nginx實現科學上網和優酷去廣告

49

天津11选5走势图分析 www.lixcgb.com.cn 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啦,呵呵

發表評論

您的郵箱不會公開,當您的評論有新的回復時,會通過您填寫的郵箱向您發送評論內容。 必填字段 *

為何看不到我發布的評論?

正在提交, 請稍候...