2015年8月29日 星期六

在 ConoHa 上以 Ubuntu 14.04 LTS 架設 Shadowsocks 服務

在文章的開頭,謹此向 Shadowsocks 唯一的開發者 clowwindy 致敬,撰寫了這套基於 Socks5 協議撰寫的代理伺服器程式,雖然最終他因為疏於保護網路身分,導致真實身分被揭發,進而在被有關當局施壓後刪除了 Github 上所有的 Shadowsocks 程式碼,但是 Shadowsocks 與它基礎架構的 Socks 會繼續活下去,發展茁壯,生生不息

之前介紹過在 VPS 主機上運行 PPTP 協議的 VPN 或是 OpenVPN-Access Server 之後,這次來介紹 Shadowsocks 這套基於 Socks5 協議撰寫的代理伺服器程式,其實 OpenVPN-Access Server 搭配大頻寬 VPS 後已經堪用,但是 Shadowsocks 還是有它吸引人的地方,以下列舉

  • 十分的省電
  • Shadowsocks 與其他 VPN( Virtual Private Network,虛擬個人網路)協議相比之下十分的傑出,電量的消耗極低,這點在行動裝置上更加明顯

  • 支持自動連線與自訂路由表
  • 在網路不穩的環境下可以十分流暢的切換,而自訂路由表則能夠針對個別使用者的環境做網路導向

  • 可自行架設 Shadowsocks 伺服端
  • 當然有基礎的 Linux 常識下自行架設 PPTP、IPSec、L2TP 甚至 OpenVPN 都可以,但 Shadowsocks 的伺服端不需要很高的硬體需求,一般來說 512MB 的記憶體與 10GB 的儲存環境下搭配 Ubuntu 就可以穩定的運作

  • 傑出的隱蔽性
  • Shadowsocks 可以使用 AES ( Advanced Encryption Standard,高階加密標準)搭配自訂密碼來加密整個傳輸過程,也就是說伺服端與使用者之間的傳輸過程無法被讀取其內容,基本上旁道攻擊之外的方法是無法探知傳輸內容的,也就是說除非伺服端或使用者被入侵,否則傳輸過程是安全而隱密的,而惡名昭彰的防火長城可以利用 IDS ( Intrusion-detection system,入侵檢測系統)來探查 OpenVPN 的連線建立封包,進而干擾它的傳輸能力,然而因為缺少明顯的連線特徵與高度加密性,防火長城並不能知道 Shadowsocks 正在進行加密傳輸,當然透過發覺大流量的、特定傳輸埠號的 SSH 連線還是可以封鎖單一網路位址的連線,但並無法探查、解析 Shadowsocks 的傳輸

  • 打破防火長城的神器
  • 承上點,對於在大陸地區辦公的外籍人士而言,防火長城造成了眾多干擾,雖然說 VPN 可以突破封鎖。但是在防火長城封鎖日益僅的今日,連 OpenVPN 都可能被干擾的情況下,Shadowsocks 的高度突破能力就十分的吸引人


    然而請注意,Shadowsocks 僅僅是使用加密與模糊化的、基於第五版 Socks 協議撰寫的 Proxy Server(代理伺服器程式),並非 VPN 協議建立加密的私人通道,它僅僅是一個與 SSH Tunnel 有血緣關係的代理伺服器而已,與 VPN 協議有差異

    2015_08_23_144218
    因為要去大陸地區辦公,作為 OpenVPN-Access Server 的備案,來弄個 Shadowsocks 保平安

    雖然說 Shadowsocks 的開發者 clowwindy 在被有關當局施壓後已經刪除了 Github 上所有的 Shadowsocks 程式碼,但 Github 上還是有跟山一樣高的自動安裝資源跟備份,直接導入系統後就可以一路按「Y」到底了,當然也可以自己弄一些額外的設定就是了

    2015_08_23_155757
    首先也是弄一台運作 Ubuntu 14.04 LTS 系統的單位出來,fail2ban 記得裝一下
    2015_08_23_155812
    接著引用 Github 上的來源碼
    wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
    2015_08_23_155824
    沒意外的話就會從 Github 上下載打包好的檔案下來
    2015_08_23_155842
    接著是 chmod +x shadowsocks.sh./shadowsocks.sh 2>&1 | tee shadowsocks.log 安裝
    2015_08_23_155910
    接著會要你設定密碼,不建議用預設的密碼,畢竟小心駛得萬年船
    2015_08_23_160013
    設定與使用者端的傳輸埠,預設值是沒問題的,除非被擋了不然沒必要更改
    2015_08_23_160018
    到這裡設定就已經完成了
    2015_08_23_160157
    完成設定後會跑出檢視畫面,當然這是針對單一使用者的配置
    2015_08_23_160256
    使用 vim /etc/shadowsocks.json 來編輯設定,對多重使用者做設定

    ** 這邊簡述 Vim 編輯器的指令,i 是進入編輯模式、Esc 離開編輯模式到上層,在上層 :w 是存檔、:wq 是存檔後離開、:q 是直接離開不存檔
    2015_08_23_160757
    多重使用者作設定,可針對不同的使用者設定密碼跟個別的傳輸埠,只要依照 "使用者傳輸埠":"使用者密碼", 去撰寫

    到這邊伺服端的處理都完成了,重新啟動 Shadowsocks 後就可以了(最快的方式是用 Reboot 指令重開伺服器),以台北地區的 vDSL 服務作測試,理論頻寬 100M/60M,國內直接連線到伺服器延遲約 27 微秒,你說在防火長城之下的連線效能?我覺得能用就要偷笑了

    2015_08_24_200500
    測試結果,而 Shadowsocks 使用者端軟體基本上填入你的伺服端網路位址、傳輸埠號與密碼就可以了

    3 則留言:

    1. 您好,請問這款代理支援 Socks5,那可否在不安裝他 client tools 的情況下直接設置IE的代理設定使用?
      透過自架在內網的 Socks5 proxy server 進行代理來上網的話,對於安全性是否有疑慮?

      回覆刪除