Shadowsocks + ChnRoute 實現 OpenWRT 路由器自動翻牆配置

來源:互聯網
上載者:User


這篇文章介紹的方法基於aa65535的shadowsocks-spec for openwrt,介紹了如何在OpenWRT下配置自動翻牆,新版本支援在Luci下圖形化配置,大大簡化了配置過程。配置完成後,路由器本身獲得自動翻牆能力,所有連入該路由的裝置都可無障礙訪問被牆的網站。是運行於路由器的透明代理。

方案根據IP判斷是否代理,國內IP不代理,國外IP走代理。代理通過shadowsocks所帶ss-redir做TCP轉寄實現,分國內外IP通過國內IP段列表檔案chnroute來區別,並通過iptables規則分別處理(這些功能已經全部整合到shadowsocks-spec裡了無需額外配置)。由於是基於IP的判定,故需要解決DNS汙染的問題,故搭配使用ChinaDNS來解決。

由於只要國外IP均走代理,而不是被牆才走代理,那麼本方案的優缺點也就很明顯了。

優點:基本不會有漏網之魚,保證所有被牆網站能訪問;能夠一定程度改善國內訪問一些國外網站緩慢的問題,如果你的伺服器速度很好,那麼甚至可以起到加速國外網站訪問的作用。

缺點:如果伺服器速度一般,訪問一些網站甚至會減速;對一些限制IP的網站和軟體應用可能會造成麻煩。總之,請酌情選擇。


一、shadowsocks 安裝

首次安裝的話,先安裝必要的包,確保路由器連網,先更新軟體包列表(下載有問題的請手動到openwrt.org下載所有需要的包並上傳到路由器上使用opkg install XXX.ipk命令安裝):


opkg update
shadowsocks有openssl(檔案名稱是shadowsocks-libev-spec-X.XX.ipk)和polarssl(檔案名稱是shadowsocks-libev-spec-polarssl-X.XX.ipk)兩個版本選擇,ROM空間吃緊的就選擇後者吧。

先安裝必要的包,如果要用polarssl版本的shadowsocks(polarssl體積更小):


opkg install ipset libpolarssl resolveip iptables-mod-tproxy

如果要用普通版本(openssl)的shadowsocks,那麼(openssl相容性更好):


opkg install ipset libopenssl resolveip iptables-mod-tproxy

期間可能會遇到類似以下的錯誤提示:

kmod: failed to insert /lib/modules/3.10.44/ip_set.ko
kmod: failed to insert /lib/modules/3.10.44/ip_set_bitmap_ip.ko
kmod: failed to insert /lib/modules/3.10.44/ip_set_bitmap_ipmac.ko
...
沒關係,這時因為安裝ipset包後需要重啟,我們此時先重啟一次路由器。

然後下載下面四個包,前兩個ipk包需要根據自己CPU型號選擇:

 

接著將下載的包通過WinSCP之類的工具上傳至路由器的/tmp目錄。

接著安裝shadowsocks和chinadns,一步步執行:


cd /tmp
opkg install shadowsocks-libev-spec_x.x.x-x_ar71xx.ipk
opkg install ChinaDNS_x.x.x-x_ar71xx.ipk
opkg install luci-app-chinadns_x.x.x-x_all.ipk
opkg install luci-app-shadowsocks-spec_x.x.x-x_all.ipk

特別提醒:2015.1.8,由於ChinaDNS-C更名為ChinaDNS,所以包名有變化,此前安裝過ChinaDNS-C的,需要手動卸載並重新安裝新版。

安裝完成後,shadowsocks和chinadns應該會被配置成開機啟動,如果發現沒有生效,運行:


/etc/init.d/shadowsocks enable
/etc/init.d/chinadns enable

二、shadowsocks 配置

我們登陸Luci,指向“服務”,此時應該能夠看到shadowsocks和chinadns了。

點擊shadowsocks,取消勾選“使用設定檔”,新的選項就出來了,我們把伺服器資訊填進去,代理方式選擇“忽略列表”,然後先把下面UDP轉寄功能關閉,然後儲存並應用(選項不要留空)。伺服器位址請盡量填入IP,否則容易出問題! 全部完成後,重新整理頁面,確保shadowsocks是已啟動狀態。否則請檢查配置。

 


 

 

當然,你可以繼續使用 config.json 進行配置,格式如下:

 










1

2

3

4

5

6

7


{

      "server": "X.X.X.X",

      "server_port": "443",

      "password": "password",

      "local_port": "1080",

      "method": "rc4-md5"

}

 

最後記得在Luci裡面填把“使用設定檔”勾上,然後填寫設定檔位置( 不要留空):

 

 

然後看一下ChinaDNS的配置介面,此時可以先按照預設的配置來,確保ChinaDNS可以正常啟動,也可以參考下面:

 

 

做出說明:

 


ChinaDNS參數說明


 代碼如下 複製代碼














 

然後,在Luci中切換至“網路”-“DHCP/DNS”設定,如下圖,在”DNS轉寄”中填入127.0.0.1#5353

 

 

其中,5353是ChinaDNS的連接埠,如果你在之前設定介面裡改了,這裡記得別填錯。

 

然後切到HOSTS和解析檔案選項卡,勾中“忽略解析檔案”

 

 

接下來的步驟會有區別,通過ChinaDNS進行防DNS汙染及解析結果最佳化,方案有三:

 

1、對於shadowsocks是用自己伺服器搭建的,推薦方案一,在自己伺服器上搭建DNS服務;

 

2、如果沒有這個條件,但伺服器支援UDP轉寄(較新版本Shadowsocks均支援),那麼方案二;

 

3、如果伺服器Shadowsocks版本老,不支援UDP轉寄,那麼可用方案三, 要求版本>=1.2.0;

 

4、如果方案三不好用,可以考慮使用方式情節四:TCP 方式查詢解決 DNS 汙染問題

 

前兩種方案,目前來說是絕對沒有DNS汙染現象的,此時ChinaDNS的作用完全就是為國外網站做解析最佳化,因為DNS查詢由Proxy 伺服器轉寄,DNS查詢的發起者相當於Proxy 伺服器,獲得的解析結果都是就近於Proxy 伺服器的;而方案三則會直面DNS汙染,此時ChinaDNS的防汙染功能發揮作用,同時方案三無法做到國外網站解析結果最佳化,因為獲得的IP是就近於你的位置的。方案四則可以有效避免國外DNS的汙染,不過同樣也無法做到國外網站解析結果最佳化。

PS1:ignore.list的定期更新以匹配最新IP段分配,長時間不更新可能導致部分國內IP走代理或者國外不走代理,可以使用下面的命令:



wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/shadowsocks/ignore.list
或者:


curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/shadowsocks/ignore.list
當然你也可以重新下載新版的shadowsocks重新安裝。ChinaDNS的同樣也需要更新,長時間不更新可能導致解析某些地址時候失敗,預設位置是 /etc/chinadns_chnroute.txt

PS2:ChinaDNS的 chinadns_chnroute.txt 和shadowsocks的 ignore.list 其實是重複的,此時你只需把luci配置介面裡面ChinaDNS的chnroute改成 /etc/shadowsocks/ignore.list 就行了, chinadns_chnroute.txt 也就可以刪除了,這樣一來省點空間,而且免去要同時更新兩個檔案的麻煩。

PS3:如遇到別的被牆網站沒問題但YouTube, Facebook, Twitter打不開,應該是DNS汙染造成,請用dig命令排查,並嘗試更換DNS轉寄方案。方案一和方案二可以配合這個dnsmasq設定檔使用效果更佳:dnsmasq_list.conf ,具體用法我就不詳細說了,總之去掉ipset=/…/…的行,然後把127.0.0.1#5353改成你的相應地址。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.