論野生技術&二次元

使用非443端口轉發https流量扶牆(一)

試試看見光了多久死hhhhhh

原理

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

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

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

 

優點

局限

步驟

  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地址  打包下載

 

 

退出移動版