2015年9月13日 星期日

Shadowsocks 自訂路由規則與應用,以「艦隊收藏」為例

在前一篇文章「ConoHa 上以 Ubuntu 14.04 LTS 架設 Shadowsocks 服務」中已經解釋過如何架設 Shadowsocks 代理服務的伺服端與安裝、設定客戶端,在這篇則是要解釋如何應用 Shadowsocks 的部分代理模式,在連線速度與頻寬中取得平衡點

許多的 VPS 廠商針對不同的方案有設置不同的流量限制,而 ConoHa 雖然號稱沒有流量限制,但是會針對巨量傳輸的用戶採取暫時性限速的措施來確保同一數據中心、骨幹路線上其他用戶的權利,也就是說一旦踩線,就準備體驗比中華電信的寬頻 ADSL 方案中最低規格還要低的連線速度

而藉由設置部分代理模式,可以將特定的流量才導引到 Shadowsocks 伺服端去傳輸,在 Shadowsocks 的客戶端裡面有兩種代理模式,分別是全局代理跟部分代理,而依照客戶端軟體的不同,有不同的名稱跟縮寫


2015_09_01_150610
在 OS X 適用的 ShadowsocksX 中,分為 Global Mode Auto Proxy Mode
2015_09_10_203551
而 Windows 適用的 Shadowsocks-win 的簡體中文介面中,則分為 全局模式 PAC 模式

全局代理意思就是所有的流量都經過 Shadowsocks 客戶端後往伺服端傳送,而部分代理是符合規則的流量才走上述的連線方式

2015_09_13_143602
在 Windows 適用的 Shadowsocks-win 中點選 適用本地 PAC 文件 後,藉由 編輯本地 PAC 文件 可以調整規則
2015_09_10_203502
PAC 文件會放在跟程式同一目錄下,檔名 pac.txt 的文字文件
2016_03_05_200748
pac.txt 打開大概就是這樣,這是經過我調整後的樣子
2015_09_03_175745
在 OS X 適用的 ShadowsocksX 中,PAC 文件會放在隱藏目錄下,檔名 gfwlist.js 的 json 檔案,這是原始狀態
2015_09_03_180010
初步修改後,可以看到我加上了測速網站的網址
2015_09_03_180020
則流量就會由原先走 HiNet 國內路線
2015_09_03_180126
導向到架設 Shadowsocks 伺服端的日本 VPS 廠商的網路出口

照理說透過編寫檔名 user-rule 的檔案,再更新本地 PAC 的話是可以達成一樣的效果,但會有很多我們台灣使用者沒必要繞道的網站也經由 Shadowsocks 導向,因此直接對 PAC 文件動手,刪除上千行來自 GFWList 的預設路由規則,撰寫適用於自己的路由規則,另外撰寫成功後請不要按下「從 GFWList 更新本地 PAC 文件」,雖然你撰寫的路由規則還是會生效,但 GFWList 的預設路由規則又回來了

而 GFWList 與 PAC 都是依照 Adblock Plus 的過濾規則去撰寫路由判定的,有興趣可以參考 Adblock Plus filters explained 來進一步了解,但這邊講述一下基本的路由判定規則


  • 萬用字元的書寫上,以 *.fenrisulfr.org/* 為例,可以省略部分,如.fenrisulfr.org/ 同 *.fenrisulfr.org/*
  • 默認規則,如 fenrisulfr.org 就是默認走 Shadowsocks
  • 例外規則,以 @@ 撰寫,如 @@fenrisulfr.org 就是不使用 Shadowsocks
  • 指定網域開始和結尾,以 | 撰寫,如 |fenrisulfr.org、fenrisulfr.org|分別表示以 fenrisulfr.org 開始和以 fenrisulfr.org 結束的網址
  • 泛用規則,以 ||撰寫,如 ||fenrisulfr.org,則 http://fenrisulfr.org、https://fenrisulfr.org 與 ftp://example.com 都走 Shadowsocks


  • 而在日本角川遊戲開發,DMM.com 營運的「艦隊これくしょん 〜艦これ〜」上,由於採取限定日本地區遊玩的策略,因此使用 Proxy 或是 VPN 來遊玩是海外玩家的解決方案,而在 OS X 適用的 ShadowsocksX 中規範了瀏覽器適用的路由規則,因此以在將 DMM 相關的網址加入 PAC 後,不論是直接使用瀏覽器遊玩或是使用「艦娘は今日も元気です。」都可以正常遊玩

    而在 Windows 環境中稍微麻煩一點,直接使用瀏覽器遊玩當然沒話說,但透過「提督業も忙しい!」的話,建議特別設定一下 Proxy 規則,而「七四式電子観測儀」在將 DMM 相關的網址加入 PAC 後就沒問題了


    2016_03_05_215432
    OS X 上修改完成的 gfwlist.js,可以看到 DMM 相關網域與「艦隊これくしょん 〜艦これ〜」的網址也在其中,這是較穩定的設置
    2015_09_13_143724
    而在 Windows 上需要查一下 Shadowsocks 客戶端的代理傳輸埠,通常是 1080,被佔用的情況下會要你更改代理傳輸埠
    2015_09_10_201012
    使用「提督業も忙しい!」的話,到「プロキシサーバーを指定する」後,Host 填入 127.0.0.1傳輸埠則是剛剛的代理傳輸埠號
    2015_09_09_172712
    沒意外的話,在重開「提督業も忙しい!」後就可以正常遊玩了