Cross Great Firewall

1 minute read

Introduction

大家知道,中國有個惡名昭彰的防火長城 (Great Firewall, GFW) ,它幫你檔下了許多敏感的網站、對中國官方不利的網站等等,但是它也封鎖了 Youtube, Facebook, Twitter, Google, Wikipedia 等等。不過,如果你身處中國境內,又具備一些相關知識,這區區一個防火牆怎麼擋的了我們呢?我們當然要嘗試跨越一下。

題外話:當你在中國境內的時候你想翻牆出來上社群網站,當你在中國境外的時候你想翻牆進去看影片XD 所謂外面的人想進去,裡面的人想出來啊!

VPN

這個方法是許多人最快想到的方法,也的確是很好的方法。相信大家都聽過openVPN,但這項服務因為 VPN 握手封包特徵明顯,在中國境內極容易失敗。

那我們不用那些外面可見的節點,自己去外面 Amazon 或是 Linode 租個 server 當成 VPN server 如何?這點也未必可以成功,因為太多人這樣做了,中國不可能置之不理,有些你在外面服務商租的 server,在中國甚至連 ping 都 ping 不到。

許多 Google Play 、網路上的翻牆軟體,其原理都是透過這一點達成。

因此,總結而言,雖然VPN 是可行的,但卻不能保證每個 server 都能穩定連線,可能會導致有時候失敗有時候成功的情形,而且速度也是一大問題。此外防火長城如果發現你在用 VPN 做壞事,封包會慢慢的掉,最後越掉越多…… (他不是直接切斷連線,讓你以為是你自己的問題XD?)

SSH tunnel

這個方法我覺得最為可行,我 2016 年七月的時候身處中國境內就是用這個翻牆的,不過當然你要有一台境外的 server就是。 簡單而言就是建立 ssh 連線,讓封包從這條加密通道過去,就可以成功翻牆啦!

不過 ssh 握手封包特徵更是明顯,為什麼中國不封鎖呢?我的同學猜測是這樣就弊大於利了,許多學術、官方服務都需要 ssh 到外面,如果你連 ssh 都要封鎖那可能會導致許多服務停擺。

因此我們可以有效利用這點,再加上 ssh 傳術是有加密的,GFW 就擋不住我們了。

簡易用法:

$ ssh -D PORT USERNAME@HOSTNAME

接者把你的瀏覽器設定 proxy 到 localhost:PORT 即可,它可以當作 socks5 proxy,詳細可以參考 Peteris Krumins’ blog

ShadowSocks

由一位中國人開發的知名翻牆軟體 ShadowSocks,2015 年 8 月的時候被中方請去喝咖啡,被迫刪除 GitHub repo,不過他有八千多人 fork,根本就滅不了XD

背後原理一樣是 ssh tunnel,不過他有做一大堆混淆跟加密,消除封包特徵,讓你根本看不出來這些封包在幹麻。

有許多熱心民眾架設所謂的 ShadowSocks server (ss server),讓你可以自由連上翻牆,當然也可以自己架在外面自己使用,據說 ShadowSocks 是翻牆的利器之一。

Tor

Tor 嚴格說起來不是翻牆用的,它透過像洋蔥一般的多層 proxy,達到隱蔽來源的效果,讓你能夠「匿名」瀏覽網站,因此也被用來做許多非法行為。

他的多層 proxy 特點可以用來翻牆,Wikipedia:

Tor會自動檢測節點是否可達目標位址。如果返回錯誤無法到達,它會自動更換節點。

但是在這樣層層的節點跳躍之下,可想而知速度一定是奇慢無比,因此我並不把它當作一種翻牆工具。回歸他的本質:匿名瀏覽,將它當作匿名上網的軟體吧。

Further Readings