[轉]Linux下Tor的安裝和Meek的配置(非Browser Bundle模式)
Meek技術不僅僅救活了tor,也刺破了中共GFW封鎖網路的咽喉,當然 Tor Browser也更加成為被封鎖的目標,有網友寫的Linux下Tor的安裝和Meek的配置,美 博園轉載於此,給有技術的網友一個啟發和思路,如果更多人能夠自己建立Tor-Meek翻牆,應該會是中共流氓集團防不勝防。言歸正傳看主題:
博主喜歡折騰東西, 比如說好好的Tor Browser Bundle不用, 非要裝一個純的Tor來玩, 於是各種好玩的事情便紛至沓來。
關於Tor和Meek的基本介紹
TOR
Tor就不怎麼說了, 都懂。 三層代理支持, 只有出口節點知道訪問內容, 只有入口節點知道訪問的IP。
純Tor目前連接不上, 目錄伺服器被Block掉了。 導致的後果就是Tor無法直接連接Tor電路。
網橋
目前可用的辦法是讓Tor連接到中繼網橋上, 中繼網橋相當於跳板, 將客戶端的請求轉發到Tor電路中。
常規的中繼網橋流量明顯, 容易被盯上和封鎖, 因此有了幾款流量混淆外掛程式。
obfs2/3/4, ScrambleSuit, 當然還有今天的主角Meek。
流量混淆外掛程式可以將非常明顯的Tor數據包偽裝成普通的包, 防止被流量檢測器盯上。
網橋存在問題在於經常會被動態Block, 由於正常用戶需要通過各種方式獲取可用的網橋信息, 博主猜是他們也用各種類似辦法獲取網橋, 一旦發現新的就統統幹掉。
此外通過分析數據流量和目標地址, 估計也有一些辦法可以判定某些目標地址是網橋節點, 只要被盯上就會被幹掉。
歸根結底就是網橋無法長期穩定使用。
Meek
最後是Meek。
Meek是最近一個牛逼虎虎的外掛程式, 用Meek可以讓Tor連接到被封鎖的網路上。
Meek的原理簡單來說是內容的欺騙, 首先把真正需要訪問的地址(Tor網橋地址)塞進HTTPS包內部Header中, 在HTTPS包的外部把目標URL填寫為沒有被幹掉的普通地址, 在傳輸的過程中由於目標地址正常, 所以數據包可以成功到達伺服器。
到達正常伺服器, 解析出HTTPS內容, 在包的內部Header中發現HOST欄位, HOST欄位指向了真正需要訪問的被封鎖的URL。 由正常伺服器將包再次轉發。 由於這時候包已經成功到達敵國, 在敵國的傳輸不會受到干擾, 因此數據包正常到達真正的目標伺服器。
相當於拿一個正常的伺服器作為跳板轉發請求。
Meek現在據稱還處於測試階段, Tor的開發者們把Meek部署到三個大型的服務商里, 分別是亞馬遜的AWS, 微軟的Azure, 還有谷歌的GAE。 這些大型的服務商都提供了上述的HTTPS解析能力。
Tor的安裝
最簡單的辦法是照著教程做, 直接從torproject上面拉最新版:
https://www.torproject.org/docs/debian.html.en
源碼編譯也是可以的。 注意glibc之類的依賴, 博主手氣不好, 手動編譯經常失敗。
Meek的下載和安裝
從Tor的Git倉庫中拉一個最新版本的代碼:
git clone https://git.torproject.org/pluggable-transports/meek.git
把代碼搞到手之後就可以準備編譯了。 代碼是用go寫的, 博主由於不認識go, 搞了很久才把客戶端編譯好。
這裡需要了解的一點是meek-client是基於Tor的一個庫寫的, 在代碼中也可以看到工程的頭部引用了Tor的一個go庫。 因此直接進入目錄里編譯的話會報錯。
解決方案是讓go拉取Tor的對應庫:
go get git.torproject.org/pluggable-transports/goptlib.git
當然在這之前還必須把環境變數配置一下, 例如GOPATH什麼的。
最後進入meek-client編譯:
go build
如果ok的話可以拿到一個叫做meek-client(沒有任何尾碼)的執行檔, 拿出來用即可。
這裡假設把meek-client放到/tmp/meek-client里。
Tor的配置
接下來需要配置Tor讓它走meek通道, 編輯/etc/tor/torrc, 加入下述幾行:
UseBridges 1 Bridge meek 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com ClientTransportPlugin meek exec /tmp/meek-client --log /tmp/meek-client.log
解釋一下:
首先是配置使用Bridge。
然後配置Bridge信息, 是Meek類型的Bridge。
關鍵的來了, 配置front為Google的玉米, 配置meek伺服器的地址為一個appspot的地址。
front便是寫在HTTPS請求外層的所謂「合法」地址, 如果Google沒有被幹掉的話。 url為meek伺服器的地址, 也就是請求數據包最終發送到的地址。
最後一行配置了meek本地客戶端的信息, 執行檔的地址, 以及log日誌的列印地址。
如此配置之後得到的效果是, 所有本地的Tor數據包首先發送到Meek-client, 由Meek-client封裝成為HTTPS包發送到Google, Google解析HTTPS包的內容, 拿到包頭的HOST數據, 發現是給appspot的, 再由Google負責轉發到對應的appspot地址。
在appspot上等著的是Meek伺服器端, 由該伺服器解析並將數據傳入Tor電路。
神坑
使用apt一類的包管理器安裝Tor有一個坑, 由於Tor安裝到系統里, 可以使用Service一類的命令啟動Tor。
但是配置了Meek外掛程式之後調用
service tor restart
啟動Tor會一直報許可權不足, 即使用Root也是。
最後在stackoverflow上找到答案, 原來是Tor的Service有bug, 搞定了Meek外掛程式的安裝之後, 可以直接通過命令啟動:
tor
本文鏈接:[轉]Linux下Tor的安裝和Meek的配置(非Browser Bundle模式)
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
網 友 留 言
1條評論 in “[轉]Linux下Tor的安裝和Meek的配置(非Browser Bundle模式)”這裡是你留言評論的地方
我想請教一個問題,如果自己要搭建一個利用Meek網橋通信的模型,是否只需搭建一個伺服器,一個客戶端以及一個WEB就可以了?