試試看見光了多久死hhhhhh

原理

實驗表明,我國自主研發的科技火牆型絡設備(以下簡稱GFW)具有以下特徵:

  1. 對所有目標端口上的流量存在字符串過濾,如HTTP和明文的郵件消息
  2. 對443端口存在主動探測或舉報機制(具體情況不明),表現為具有包括Google、Twitter等的CN在內的證書的ip會在半個月後被牆
  3. 目前,GFW對非443端口上流經的HTTPS流量不存在第2條所述的措施

436919cbgw1etosshjvw6j209s01pweg

 註:也可以是用SNI Proxy來隱藏證書,主動探測一般情況下不會使用SNI擴展來探測443端口的證書。可以使用這篇博客中提到的項目lua_resty_sniproxy。

 

優點

  • 省電,和正常上網耗電一致,且移動設備可保持長連接在線
  • 不用怕hosts文件被上傳,因為本來裡面的ip都是被牆的
  • 可以與socks代理同時使用,無需切換hosts
  • 適用於重度Google用戶

局限

  • 運行Windows並且直接連接互聯網的設備將無法使用本方法
  • 運行未root的Android設備及未越獄的iOS設備在使用移動網絡時無法使用本方法
  • 必須能控制路由器或設備的上級網關的iptables設置(如刷了openwrt之類的路由器);如果路由器無法刷第三方ROM,但局域網中存在任意一台*nix設備,請參見使用非443端口轉發https流量扶牆(二)
  • 只對HTTPS流量起作用,本文主要介紹Google全線服務以及Twitter的操作實例
  • 覆蓋面窄,如果要覆蓋更多網站,需要更複雜的配置

步驟

  1. 將目標IP根據證書類型合併,即證書具有相同的DNS名稱的服務歸為一類。歸類的作用是接來下可以少寫很多iptables規則。對Google來說,只要具有泛域名為*.google.com, *.googleusercontent.com, *.googleapis.com的證書的三類IP就可以了。此處的IP不需要能夠直連。甚至可以填一個無法路由的地址,只要在接下來的iptables中對應即可;但是這樣的話,使用代理時如果使用本地解析的(無法路由的)IP,將會無法連接。
  2. 將以上列表填入hosts。文末給出了實例配置。如果未越獄或未root,不具有修改hosts文件的權限,可以在路由器中寫死DNS解析;但是在移動網絡下就沒有辦法了。我們假設hosts中有這樣一些項
  3. 在VPS上設置端口轉發,可以使用iptables。我使用nginx(編譯stream_module)作轉發,文末有示例配置。Ubuntu/Debian可以這樣安裝:
  4. 在路由器上設置轉發規則:

    其中66.66.66.66是你VPS的IP,並且將44300的入站流量轉發到74.125.224.55:443。如果是直接連接互聯網的設備(如linux的pc或移動網絡下的Android,將PREROUTING鏈改為OUTPUT):

    注意如果在Android上使用Shadowsocks的NAT模式,關閉ss後需要重新設置iptables規則。

附件

Gists地址  打包下載

  • 示例hosts配置(見壓縮包或Gists)(本地)
  • 示例nginx配置(VPS上)
  • 對應的iptables配置示例(路由器上)