2016年5月18日 星期三

各種翻牆工具的個人淺見

前言

以前曾有一段日子旅居深圳,對GFW的理解和使用各種工具翻牆算是有點經驗,
雖然多年前已回到牆外,但偶爾也須要進入匪區,故此還是保持了解各種工具,
就曾經搭建過或使用過的說說


目前還有效的工具

1) shadowsocks

   這個還是現在最熱門的工具,暫時來說沒聽到大面積陣亡
   優點

   多平台,服務器可部署到由路由器到任何系統,版本眾多,輕盈的shadowsocks-libev
   可在64M/0 vswap的Linux VPS運行,而不會跑不動。客戶端也是多平台,路由器,
   電腦到移動裝置,幾乎涵蓋所有系統,可以說是install once, Fuck GFW everywhere
 
    缺點

    因為只使用預定密鑰作為客戶端和服務器的唯一辨別身份方式,有可能會遇上中間人
    攻擊,客戶端連上是偽造的目標服務器,在服務器方面的缺點更明顯,因為只用預定
    密鑰,於是錯誤的密碼或加密方式服務器照樣回應客戶端的請求,只是不連接到目標
    網站,有無聊者用字典窮舉密碼,而不是拒絕連線,日誌上就出現很多ERROR,我的最
    高萬多個錯誤,共二百多個來自CN的IP試著連線,shadowsocks-libev可以開啟一次性
    認證,但很多客戶端不支援,例如iOS的Surge,A.Big.T都沒有,變成無法使用這一方式
    ,如果寫個腳本紀錄日誌的錯誤次數,達到某一數目調動iptables封鎖,又會誤傷填錯
   密碼的用戶,或者是分配到被封的IP而連不上服務器。

    多用戶無法簡易控制用戶訪問的端口,一個人或三數好友使用時問題不大,但用戶有
    一定數目時,如果有不良用戶通過代理hack其他服務器的sshd,或者濫發郵件,端口掃
   描等等行為,有可能是收到VPS供應商投訴或封權才知道,要防止可能要設置複雜的
   iptables規則作限制,另外限制連接數也要用上iptables,例如要限制14701端口的連
   接數,你得輸入,例如32個
 
   iptables -A INPUT -p tcp --syn --dport 14701  \
   -m connlimit --connlimit-above 32 -j REJECT --reject-with tcp-reset

   這是shadowsocks-libev官網的舉例,由於shadowsocks一端口一用戶方式,
   如果有20個端口要輸入20次或寫腳本自動化,相當麻煩,也不是一般用
   戶處理得了。

   結論

   還是推薦為首選搭建的工具,原因還是那個,輕盈,有效,多平台,不論低端VPS到
   高端VPS都可部署,應對無聊人士窮舉密碼方式是設置16位以上字符長度的密碼,不
   要理會就成,用命令隨機產生比較難以破解的密碼,例如:

    head -c 512 /dev/urandom | md5sum | base64 | cut -c3-18

   每一端口配上不同密碼

2) HTTPS/SSL 代理

   這個方式存在很久,暫時仍然有效

   優點

   通常以stunnel作為加密隧道,後端可自由配搭不同的代理,只要支援CONNECT方式
   的都行,我就搭建過配合squid3,3proxy和tinyproxy,這些後端已很成熟,能控制用戶訪
   問的端口,或是服務器接受的連接數,也可設置用戶認證方式,電腦上無須使用客戶
   端,現在大多數browser支援HTTPS代理,在一些限制嚴格的公司內,如不能下載安裝
   軟件,控制用戶訪問的網站,端口,可以購買商業用的SSL證書,設置用戶認證,把
   代理設置在443端口,公司不能封這端口,只須在browser設置代理就能突破公司封鎖,
   而且網管不知你去了那裡。

   這個方式也是多平台,路由器刷了第三方韌體,例如Asuswrt-Merlin,又能擴展entware
   環境,就可搭建服務器在路由器,使用的資源也不多,也可以設置stunnel為客戶端連
   接服務器。移動設備也有支援,ios的Surge和A.Big.T都有支援http with tls ,安卓也有
   tls-tunnel等app,只是不太好用。

  缺點

  部署麻煩,如果使用IP + 自簽名證書,須要自己gen,同時要把證書導入browser或系統
  ,非常麻煩,而且據說GFW能分辨證書,會按照類型封殺服務器,據說現在還包括免費
   的有效證書,例如Letsencrypt ,通常商業不會用這些,不能混跡其中,危險性便
   增加了。
   另外有說SSL握手特徵明顯,GFW容易察覺,shadowsocks的作者clowwindy
   就不建議使用SSL翻牆, 按我看原文 。
   個人淺見以數據安全和防止中間人攻擊就高於shadowsocks,對於窮舉密碼的無聊人仕
   直接拒絕連接,有效得多,而且有網友使用還沒見到大量被封。

   搭建成本高昂,為了比較難被封鎖,除了VPS的費用,還要購買域名和証書,這無疑比
   較其他方式使費較多,使用域名連接一旦遇到DNS污染,還得修改hosts文件把域名指向
   IP抵禦,如果封的是服務器IP,全部投資報銷。

  結論

  我還是推薦搭建作為輔助工具,原因是少數用戶使用我搭建的SSL代理至今還沒有連接
  不上的報告,這些有用Letsencrypt證書或自簽名證書,如果條件許可,請購買商業用的
  SSL證書配合域名搭建,可以混跡其中使GFW不會亂封,openvpn之所以失效就是特徵
  明顯,公司不會以這個協議的VPN作為數據安全通道,於是便大面積失效。使用這類
  SSL代理最好是三兩好友算了,我經常懷疑GFW會根據加密連接數目主動檢測是否翻牆
 ,為了長久翻牆,不要超過三個用戶,最好自己私用。

  另外前端可改為較新的nghttp2 點我 點我 據說速度驚人,但我未搭建過。

3) Cisco IPSec VPN

    目前算是很流行的VPN,暫時有效

    優點

    以StrongSwan搭建服務器,多平台,由路由器到各種*nix系統都可搭建,客戶端也是
    涵括各種系統,移動系統2大主流還原生支援,使用共用密鑰配合用戶認證,連客戶
    端都不用安裝,而且穩定性高,兼容性好,使用方便加設置容易,數據安全性高。這
    個VPN協議為商業公司使用的方案之一,混跡其中可使GFW不敢亂封,當然在共匪開
    大會時會有嚴重干擾。

    缺點

    全局代理,不能分流,訪問匪區網站時等如繞了地球一圈,多用戶的時候難以防範不
    良用戶,例如作為BT代理,hack其他服務器等等,如要限制有可能要設置複雜的規則
    ,限制用戶訪問的端口和下載的文件。

   搭建麻煩,單是那一堆iptables規則足夠麻煩,使用固定端口,點我看官方論壇討論
   這被封鎖機會大增,現在是GFW無法檢測關鍵字,而且是商業上公司常用VPN,才
   得以不死,據說GFW的IT狗已著手研究檢測IPSec VPN協議,以求檢測到流量特徵和
   關鍵詞。

   小弟第一次搭建時看了多篇中英文教學,搞了兩天才搭好,後來發現有人寫了一鍵
   安裝腳本,第二個服務器干脆用人家的腳本好了,免頭痛 點我取得腳本

   結論

   一般我會在服務器搭建2種工具,shadowsocks-libev是主力,如果是用窮鬼級NAT VPS
   ,就配上自簽名證書+IP的SSL代理,因為搭建不了IPSec,端口不能改,獨立IP的正常
   VPS,則選擇IPSec VPN 作為第二工具,以ss-libev和IPSec配搭,使用資源不多,一枚
   openvz 128M/128 vswap 的vps已經足夠有餘,在iOS下會隨時遇到奇怪的shadowsocks
   客戶端問題,這時較穩定的IPSec便會派上用場,對於使用iPhone的朋友,分享給他們
   使用,客戶端不須要付款,不必下載,對於女性朋友,0技術更是恩物,只要截一張
   設置的圖,她們就會使用。故此我是推薦搭建的選擇方案之一。

4) Cisco AnyConnect VPN

    在iOS裝置上,未有shadowsocks客戶端出現前,幾乎是ifans的標配工具,目前還是有
    效,未聞有大面積陣亡案例。

    優點

    以ocserv搭建,非常穩定,無論客戶端還是服務器,可以分流,在iDevice下載了 Cisco
    Anyconnect 客戶端,可以使用證書連接,也可以用戶認證連接,或是兩者相加,不同
    於IPSec,端口可以自定,可用域名+有效SSL證書搭建,商業上公司常用VPN協議,據
    說是Cisco力推的VPN協議,混跡其中,GFW不敢亂封,我自己搭建了一枚,用域名加
    Letsencrypt證書,以用戶認證登錄連接,端口設在443,客戶端也是多平台,由路由器
    的vpnc客戶端到任何主流系統都能使用

    缺點

    搭建困難,須有一定技術,這也是花了我不少時間搭建的貨色(技術不好的原因),幸
    好有好人寫好了一鍵安裝腳本,如果不想頭痛 點我免頭痛 ,第一次搭建時我自己手動
    搭建,重灌系統後使用上面腳本搭建,並自行配上letsencrypt免費證書取代自簽名
    證書。速度不是特別出眾,感覺上部署在同一服務器上的shadowsocks比它還快速。

    結論

    這也是推薦的輔助工具,在一個服務器上除shadowsocks外可考慮部署,可因應不同情
    況使用,在一枚openvz vps 128M/128M vswap 運行它與shadowsocks,
    在debian 7 x86下綽綽有餘,耗用資源不多

5) gfw.press大殺器

    最新出品的工具,號稱除白名單外,再也不能破解的協議,開發者是推特趙國劣紳石
    斑魚大爺 @chinashiyu ,其官網是http://gfw.press ,這是他的github代碼倉庫

    優點

    確實非常穩定,我搭建了一枚在cloudatcost,順便測試自己的腳本,有5位推友幫忙
    測試,多天正常使用,直到服務器挂了前都沒有受到任何干擾,有測試用戶連續
    使用10小時沒有斷線一次。
    附上推友@FWT_T_O_O源碼分析,後端自由配搭,相當靈活。

    缺點

    以Java編寫的程序,對VPS有一定要求,少於512M/512M vswap的openvz vps最好
    不要嚐試,跑不動的機會極高。文檔不足不利第三方開發和搭建,
    除電腦系統客戶端外,移動系統只有安卓客戶端,iOS用戶暫時無緣。
    部署並不十分困難,由於它只是一條類似stunnel的加密隧道,搭建的麻煩在於
    後端代理,如果是debian base 用戶,或者可以試試小弟編寫的簡陋腳本安裝

    結論

    如果shadowsocks失效的話,小弟首選轉戰這個,再配搭HTTPS/SSL代理或
    IPSec VPN在電腦上和iDevice使用,有較強勁VPS的朋友,
    甚麼虛擬方式的VPS也可以試試搭建,如果有高手志願者以Python/C/C++等等
    較少資源改寫,相信會火起來。

6) V2Ray

    這也是較新的工具,也是新一代配上混淆流量,躲避GFW流量特徵檢測,並且兼容
    shadowsocks協議的工具,部署它可除可使用V2Ray外,也可使用shadowsocks而無須
    另外安裝 手冊在這裡 v2ray project官方github代碼倉庫

    優點

    這個我部署了一個在低階VPS上,後來因使用不常使用,且低階VPS跑起來吃力,就
    把它刪除了,搭建非常簡單,在Linux VPS上以root執行以下命令就完事了

    bash <(curl -L -s https://raw.githubusercontent.com/v2ray/v2ray-core/master/release/install-release.sh)

    配置文件類似shadowsocks,如果有搭建ss服務器的朋友,很容易就會配置服務器文件,
    算是無痛轉移,這個在搭建後測試期間相當穩定,也沒有受到任何干擾或失靈。

    缺點

    和gfw.press一樣,對於VPS要求較高,由於以golang編寫,官方建議一人使用VPS最少
    128M RAM,更多用戶如此類推,2 vcore的VPS較能發揮速度優勢,客戶端暫時只有電
    腦系統,在移動裝置只能使用兼容的shadowsocks

    結論

    同樣,如果shadowsocks失效,這也是我會轉戰的目標,配搭其他的工具,在電腦和移
    動裝置使用,電腦上主力使用,移動裝置使用IPSec,AnyConnect或HTTPS/SSL代理,如
    果網友的VPS夠強勁,建議搭建一枚,即可使用v2ray和shadowsocks兩件工具,
    電腦和移動裝置都可使用

7) lightsword

    以nodejs編寫的代理,客戶端支援電腦和iOS,iOS客戶端售8元港幣,
    官方github代碼倉庫

    優點
   
    小弟在一枚256/512 vswap openvz vps搭建過,並購買了iOS客戶端測試,抱歉,完全
    沒有發現有任何優勢,大概是shadowsock的nodejs改寫版本,客戶端並不兼容SS

    缺點

    以nodejs編寫的程序,和Java一樣,RAM Eater ,低階VPS相當不利,功能上沒有
    出彩的特點,用於混淆流量的加密只支援aes-128/192/256-cfb , 而沒有較輕量的
    chacha20和rc4-md5, 安卓沒有客戶端,iOS客戶端售價便宜,
    本來是針對當時ios的ss客戶端Surge,後者達到天價的$99美元,但隨著
    shadowrocket,A.Big.T只售8元港幣,這個優勢也沒有了,ios客戶端到我刪除之前,
    就只支援全局代理。
    服務器方面,以python shadowsock連系統70個連接只用3X RAM左右,但lightsword在
    同一VPS相同條件下,已經使用80M以上記憶體,而且還不斷增加,其實以前也是有
    shadowsocks nodejs版本,後來clowwindy停止開發,原因 ,nodejs官方解釋
    服務器沒有UDP轉發,沒有一次性認證,沒有輕巧的加密方式,官方文檔不全,配置
    描述文件在我刪除服務器前沒看見,我是把命令行參數寫到腳本使用,唯一是搭建不
    難,官方有一鍵安裝腳本,自行搭建只要安裝了nodejs,以npm即可安裝。
   
    結論

    在沒有大改變之前,不建議搭建或使用。

8) shadowsocks-R

    號稱根據shadowsocks弱點加以「改良」的版本,支援電腦客戶端和部份移動裝置,
    這是官方github代碼倉庫

    優點

    沒有使用或搭建,說不出來

    缺點

    移動裝置客戶端支援不多,其他同上

    結論

    本人不會作出推薦或者不推薦的個人建議,作為用家未來也不會部署服務器或使用,
    如果網友有興趣,自行往官網看手冊文檔,這裡給出shadowsocks和shadowsocks-R的
    網絡事件和安裝腳本
    关于ShadowsocksR和Shadowsocks的安全性
    ShadowSocks协议的弱点分析和改进 #38
    对GPL协议的违反 #28
    ShadowsocksR一键安装脚本

最後,這裡並沒涵蓋所有工具,這些意見非常主觀,而小弟也非IT人,只是普通用家
的個人體會,錯誤和偏見是絕對的,不須要用來參考,當作是笑話閱讀最好,然後給
出「哦」一個字就可以了。

:)

 
 

12 則留言:

  1. 了解了很多翻墙软件,感谢你,虽然有很多专用名词看不懂。。。。

    回覆刪除
  2. stunnel支持PSK,不需要证书。或者申请一个免费(eg.tk)域名,带上免费证书(wosign、startssl)之类。也可以

    回覆刪除
  3. 只不过stunnel转化效率比较低,在U2B看视频时仅有1/2带宽的速率。

    回覆刪除
  4. GFW.Press 如何布设。我手头有一个空闲的VPS

    回覆刪除
  5. 如果是用于玩游戏有什么推荐吗?目前用的是 shadowsocks 在路由器端全局翻墙,但是由于 PS4 上的 party 用的是 udp,ss 并不能很好支持,导致无法跟朋友在 party 语音。

    回覆刪除
  6. 好文好文。请问可以转载吗?

    回覆刪除
  7. GFWpress不是shadowsocks下sspanel的一个应用吗……这熟悉的风格和UI……
    另外sspanel已经removed for some reason了……
    GOD BLESS

    回覆刪除
  8. 真的是好文章:
    我感覺現在這時代,自己架設vpn非常困難,
    使用免費的怕個人資訊會外洩
    我聽人家說 還是直接使用一些付費型的VPN。會比較安全。
    之前用過expressvpn感覺還行。
    关于翻墙,之前看到這一篇: 不知道博主有何看法
    科学上网

    回覆刪除