西廂計劃

出自反共维基

西廂計劃提供了一組工具,使用戶能夠繞過中華人民共和國防火長城的關鍵字阻斷和 IP 封鎖等手段,直接訪問目被封鎖的網站。其命名是為了向中國古典文學史上「翻牆」的先驅者張生致敬。西廂計劃由於各種原因而於 2010 年暫停更新,最後發佈的一個版本目前已由於防火長城的更新而無法使用,但在當時的測試中已可以直接訪問 Youtube

計劃與設想[編輯]

西廂計劃與其他的翻牆工具不同,它並不是代理服務或 VPN,而是從技術層面避開防火長城的封鎖手段,如 TCP 連接重置、DNS 劫持IP 封鎖和 URL 關鍵字過濾,為此西廂計劃希望提供三種特性:

  • TCP 連接混淆:在每次連接中,通過對防火長城入侵檢測系統進行注入,與正常的連接混淆,使得防火長城無法正確解析連接和檢測關鍵詞,從而避開關鍵字過濾。
  • DNS劫持:通過匹配防火長城偽包的指紋並將其過濾,從而使一般的 DNS 解析也能獲得正確的結果,但需要使用未受污染的 DNS,例如 Google Public DNS
  • 單向隧道:利用防火長城僅僅對出站的數據包進行過濾的特性,將發出的數據包透過不受過濾的服務器中轉,而收到的數據包可直接穿過防火長城到達客戶端。這種情況下,由於防火長城無法獲取請求 URL,關鍵詞過濾也將失效。當時的測試中,以這種方法觀看經由 HTTP 協議傳輸的在線視頻時,中轉服務器僅耗費極小的流量。

由於西廂計劃無需加密或透過代理伺服器中轉,亦不需要第三方支援,因此在多種翻牆方式中理論性能顯得較爲優秀。

技術原理[編輯]

西廂計劃採取了 T. Ptacek 等在 1998 年的論文中提出避開入侵檢測的注入方法,即發出特製報文,使得這些報文對對方沒有效果,但是讓入侵檢測系統錯誤地分析協議,從而讓其錯誤地認為連接被提前終止了。由於防火長城的 TCP 棧非常簡陋,因此可利用此特性,對所有遵守 RFC 的目標主機都採取特定措施,讓防火長城無法正確解析 TCP 連接,從而避開關鍵詞監測。

局限[編輯]

西廂計劃的連接混淆功能對於基於 IP 地址的封鎖和其他無狀態的封鎖不能生效,因為它需要通過注入攻擊改變防火長城的連接狀態,如果封鎖與連接狀態無關便無法進行連接混淆。另外,連接混淆的實現假設連接雙方遵守 RFC。有一些目標主機或者防火牆不遵守 RFC,可能導致正常不含關鍵詞的連接被對方終止或者忽略,這可以經由使用 ipset 把作用範圍限制在需要的地址段而避免。

西廂計劃目前依賴 Linux 內核netfilter 功能,因此要求用戶平台是 Linux,其他平臺的移植項目功能均有所缺失。Windows 平臺上曾有一個基於 Pcap WinPcap 的編譯版本實現了連接混淆的部分,但已不再維護。

由於防火長城的偽包指紋經常變動,因此用戶需要不斷更新才能正常使用。

後續[編輯]

西廂計劃後來發展出第二季與第三季兩個項目。第二季實現了單向隧道,而第三季則是對西廂計劃的後續開發,但兩者都是獨立的項目。

由 Onion Project 開發的西廂計劃事實上與此西廂計劃毫無關聯,而是一個基於 GoAgent 的瀏覽器包。

參考資料[編輯]

外部鏈接[編輯]