1. 程式人生 > >(轉)[AC56U/AC68U/AC87U] Redsocks2自動配置,科xx學xx上網指令碼

(轉)[AC56U/AC68U/AC87U] Redsocks2自動配置,科xx學xx上網指令碼

#---------------------------------------------------------------------------------------------------------------
# 前言 # 申明:使用此指令碼請閱讀本貼使用教程,若由此指令碼帶來的風險請自己承擔
# 本指令碼會指導你在你的路由器上配置redsocks2程式
# 如果配置成功,你的路由器z區域網內都能達到透明出牆效果
# 本指令碼在刷merlin韌體後的華碩“RT-AC68U”上測試通
# 理論上適用於刷過merlin韌體的RT-AC56U,RT-AC68U,RT-AC87U和刷了merlin韌體的R7000
# 感謝redsocks2原始碼作者semigodking的工作(

https://github.com/semigodking/redsocks
# 特別感謝小寶(mailto:[email protected])對指令碼帶來的改進,並且在我寫此指令碼中給我很多寶貴的意見。
#---------------------------------------------------------------------------------------------------------------
# version 1.0: 20150506
# 特色
# 可使用單個redsocks2程式實現防DNS汙染,轉發代理流量,不需要shadowsocks程式,只需要提供shadowsocks賬號
# 使用redsocks2自動判斷機制來判斷網站是否被牆,如果被牆則會自動將流量導向shadowsocks,實現透明上網,不需要ss-local
# 會根據判斷結果建立本地被牆ip地址快取,最大的好處在於不需要維護被牆網站黑名單
# Shadowsocks賬號支援UDP轉發功能的,會利用redsocks2內建redudp功能進行udp轉發,不需要再執行ss-tunnel
# 不支援UDP轉發的,將利用Pndsd通過TCP請求google DNS伺服器獲得無汙染ip
# version 2.0: 20150509

# 去除1.0中由pdnsd通過TCP請求googleD NS功能
# 增加dnscrypt-proxy,通過dnscrypt-proxy加密請求opendns,解決DNS汙染
# 現在支援UDP轉發的賬號,選擇yes後會配置兩個DNS server(redudp + dnscrypt-proxy)
# 不支援UDP轉發的賬號,選擇no後配置單個dnscrypt-proxy
# 兩種方式都能獲得24小時內的毫秒級DNS解析(由pdnsd實現)
# 現在執行完指令碼後,指令碼會自動刪除,以免重新下載指令碼到相同目錄後使用到舊的指令碼# 當然,還修復了V1中的一系列問題~
# 2015年5月10日00:52:53,修復了部分使用者啟動服務後不會載入nat rules的bug

# ---------------------------------------------------------------------------------------------------------------
# 大家使用後有什麼問題請在帖子後面反饋,最好是貼上系統日誌,我會及時作出迴應。
# V2指令碼在本人的AC68U上測試通過。
# 我會不斷完善這個指令碼,讓大家都能執行完就能達到直接出牆的效果,也歡迎大神對我的指令碼提出意
# PS:如果大家在用koolshare小寶的韌體,那麼請在使用本指令碼前在web內禁用ss
# ---------------------------------------------------------------------------------------------------------------
工作原理:(下圖)(V2版本)# 調整了V1版本的DNS方案,去除pdnsd的tcp請求google DNS功能

工作原理:(下圖)(V1版本)
# 藍色線條① 支援UDP轉發的,DNS請求將通過redsocks2內建redudp(功能同ss-tunnel)對DNS進行轉發
# 橙色線條② 不支援UDP轉發的,利用Pndsd通過TCP請求google DNS伺服器獲得無汙染ip
# iptables將對80,443埠的TCP連結請求全部轉發到redsocks2的1088埠
# redsocks2的判斷機制是基於相應時間,如果某個ip,比216.58.221.100:443在3秒內(這個時間可以自己定義)沒有返回資料
# 那麼redsocks2就會自動嘗試將216.58.221.100:443轉發到shadowsock,從而實現**(圖中紅色流量)
# 同時216.58.221.100:443這個ip和埠會被記錄到redsocks生成的一個ip快取檔案中去(/jffs/redsocks2/ipcache.txt)
# 在下一次訪問216.58.221.100:443這個地址的時候,redsocks2就不會先嚐試本地網路,而是直接將流量轉發到shadowsocks
# 所以第一次訪問牆外網站會有些許慢,不過以後都是非常順暢的
#---------------------------------------------------------------------------------------------------------------
教程:準備:shadowsocks賬號一枚;ssh或telnet登入軟體(windows CMD也行)
step1:
用telnet或者ssh登入到你的路由器,按順序輸入以下內容

wget http://www.mjy211.com:81/redsocks2_v2.sh
chmod +x redsocks2_v2.sh
sh redsocks2_v2.sh

如果你沒有開啟JFFS分割槽和Enable JFFS custom scripts and configs,那麼指令碼會幫你開啟,並提示你重啟,重啟後再執行以上命令就行

step2:
按照提示輸入你的shadowsocks賬號資訊,如果密碼部分太複雜,建議用將密碼貼上進去,以免出錯
如果出錯,可以隨時用 Ctrl+C終止指令碼,然後重新執行指令碼再重新輸入
加密方式,請輸入小寫

輸入好了以後還會出來一個確認頁面,如果你沒輸錯就輸入yes
然後指令碼會自動把redsocks2執行檔案下載下來
並進行相關配置

step3:
如果你的賬號支援udp轉發,輸入yes,如果不支援,輸入no,如果你不確定你的賬號是否支援udp轉發,你可以問銷售賬號的或者就選no也行不過還是推薦支援udp轉發的,輸入yes
選擇yes會配置redudp + dnscrypt-proxy 雙dnsserver
選擇no則用dnscrypt-proxy

輸入後,指令碼會自動下載pdnsd程式和pdnsd配置檔案,dnscrypt-proxy相關檔案
然後開啟相關服務。

到此為止,安裝翻wall環境就已經結束
建議windows使用者在測試**之前先清空電腦的DNS快取,在CMD中輸入以下內容

ipconfig /flushdns

稍等片刻後
如果一切正常,那麼你現在應該就能出牆了
如果不能上,請多次重新整理下系統DNS快取和瀏覽器頁面,並耐心等待片刻
記住,第一次進的被牆網站,速度會比較慢,因為redsocks2會有一個3秒的判斷機制,不過之後就會很快了。
#--------------------------------------------教程完-------------------------------------------------------------------
PS:
此指令碼會生成三個檔案,stop.sh   start.sh    uninstall.sh,意思大家看字面應該就懂了
如果你想暫時不**:那麼在telent中執行以下,這停止個指令碼會自動幫你關掉**相關程式,重啟dnsmasq,清空iptables規則,重啟防火牆,然後你就能回到大中華區域網了,不需要重啟路由

sh /jffs/redsocks2/stop.sh

如果你又想**了,那麼執行一下就ok,同樣不用重路由器,記得執行後清空下電腦的DNS快取。

sh /jffs/redsocks2/start.sh

如果你不想用本程式,那麼解除安裝掉就行,解除安裝是很乾淨的,也不需要重啟

sh /jffs/redsocks2/uninstall.sh

執行解除安裝指令碼後,相關的程序,iptables規則,nat-start內的相關內容,相關的檔案和資料夾都會清理,就像你從來沒裝過這個軟體一樣

#--------------------------------------------------------------------------------------------------------------
測試24小時毫秒級DNS解析

由於pdnsd的快取,dns請求相當快