如何搭建洋蔥網路的中繼 Tor Relay (1)

TOR算是網路自由工具中的旗艦明星級軟體,一方面它問世早(一開始還是由美國海軍投入開發,就如網際網路的催生也脫不了60年代冷戰對峙,美國軍方擔心第三世戰發生所作的風險分散因應),二來它在脫離美國軍方後吸引了許多長期在開源社群與重視匿名隱私的密碼學叛客投入貢獻,累積下不少有形無形的資源。現在基本的互聯網隱私入門ABC都會提到利用TOR瀏覽器來作匿名訪問的保護建議。

華文世界中雖然這類介紹TOR的資訊抄來抄去不算少,但我似乎找不到一篇關於搭建洋蔥網路中繼的中文資料(goole 只願告訴我這篇「关于搭建 Tor Relay 的一点胡扯——以及为什么现在 Tor Bridges 更好」)。故野人現曝地來分享一下最近操作的過程記錄。我的動機是因為作為一名無技術背景的關心者,想再進一步了解TOR洋蔥網路的原理與運用,所以透過模索TOR官網文件一點一滴地拼湊出部份自己能講得出個所以然來答案的基本常識。 

從TOR的原理說明來看,它是透過多重中繼跳接的封包傳輸設計,來躲避公開網路中對互聯網的流量封包的標頭 header 分析(這也是所謂的互聯網監控),尤其因為監測者能透過封包 header上的訊息掌握了你的來自的位置與所欲訪問的目的,故容易來推斷使用者的興趣與行為。(就目前讀過的資料,我的認知是,雖然封包的內容可以做到加密,但對header似乎還沒辦法?)

為了干擾這樣的網路監測追踪,TOR提出的方法是將用戶的流量分散牽引到不同的地方,取代直接路徑交換,TOR的設計則是讓封包隨機挑跳不同的中繼器,而這些連結的點之間並不會知道用戶原始的來源和要去的終點。為此TOR透過中其網路內的中繼器,讓用戶所使用的軟體可建立一個加密的迴路連結,這個所謂的「迴路 circuit」一次能延伸一個跳點,換言之在迴路上的每一段中繼器只知道前一個傳送封包資料的中繼,以及往下傳給哪一個中繼器,但其它以外的路徑資訊就無法得知。而TOR客戶端在經過每一個中繼器時,也要透過不同的加密金鑰來與其取得可通過的許可,這樣避免迴路中的不同節點會對通過的封包資訊進行上下追踪。因為迴路中任何中繼只會是其中的一個節點,所以如果某個中繼發生了被竊聽或是遭破壞的情況,不會影響到整個網路之間的匿名連結。

搭建 TOR Relay 的軟硬體環境

作業系統:ubuntu 14.04

硬體環境:桌機主機版Gigabyte GA-H61M-DS2 (Gen. 3.0)、處理器 Intel Core i 3-2100 3.10 GHZ、中華電信Wifi AP P874 Zyxel P874,

網路環境:中華電信光世代100M,無線只有設WPA2的密碼(很容易被攻駭,哭哭),沒VPN無防火牆

搭建 TOR Relay 過程
  1. 下載安裝TOR 因為是debian 發展出來的分支之一,只要依照官網指示:Configuring a Tor relay on Debian/Ubuntu

1.1 編輯更新 /etc/apt/sources.list 這個檔案,新加入這兩行,讓 torproject.org 軟體源成為系統軟體更新時也要檢查的對象之一

deb http://deb.torproject.org/torproject.org trusty main
 deb-src http://deb.torproject.org/torproject.org trusty main

1.2 在命令行輸入以下二行,以將torproject.org 的金鑰滙入到本地電腦,這樣更新軟體源時請求才會被接受

gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
 gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

1.3 更新安裝

$ sudo apt-get update
 $ sudo apt-get install tor deb.torproject.org-keyring

\2. 開始設定中繼器

2.1 Edit the bottom part of /etc/tor/torrc

我還不完全了解 torrc 這個檔案設定值,所以就照抄地複制官網上的指令,把以下四行加入到 torrc 檔案最後

ORPort 443
Exitpolicy reject *:*
Nickname ididntedittheconfig  // 似乎是自己這個中繼的膩稱,後來我另取了一個讓自己可識的代名
ContactInfo human@...

2.2 若網路環境有防火牆設定,請作相應的調整(沒有)

2.3 重新啟動電腦,讓中繼器功能開始運作

\3. 確認它能正常運作 打開記錄檔,其位置在: /var/log/tor/log 內容顯示如下圖,看起來應該是能正常運作。 tor relay log

另外透過linux iftop 工具,稍微監測一下這個網路的流量狀況 iftop

\4. 其它提醒注意事項

  • 安全操作
  • 上傳下載的流量限制
  • 建議的端口設定
  • 中繼器的私鑰備分妥善保管
  • 出口中繼器指南
  • 其它資源與訊息訂閱

其實我自己也不知道這樣作會不會給其它依賴TOR的使用者帶來風險,先以實驗性質來操作。如果有哪位網民意外地看到這篇文章,發珼有任何問題,請來信指教或批評,畢竟 許多TOR使用者為從事危險工作(不是指暗網的交易啦)的社運人士、記者等等。哦對了,一兩個月前,看到這個聲明稿,大概也是讓我想試試 TOR Relay 的潛在動機之一 Access Now and EFF Condemn the Arrest of Tor Node Operator Dmitry Bogatov in Russia

TOR 其它專案

TOR Atlas

仔細地查看TOR上頭的資料,果然藏著許多之前未注意到的東西,例如這個 Atlas 呈現TOR網路當中全球各地中繼運行的狀況。不過目前受限於程式本身設計,如果查詢結果超過50筆資料,它會反應說資料過太無法在網頁上顯示。試著輸入140 這個容易篩出可能是台灣學術網路IP上的機器,找到了幾台TAN底下的洋蔥網路中繼。

Open Observatory of Network Interference

OONI 這個之前有幫忙作了它的中文化翻譯,簡單地寫過一篇介紹OONIprobe/ M-lab 在地中文化翻釋 。陌名地感到親切不少(裝什麼熟啊)

TAILS

據稱是TOR的親兒子(?),曾動念想要作它的中文化,只做了一點點起頭工作,目前中文團隊正在慢慢醞釀,有興趣加入的朋友歡迎來訊me(at)jxtsai.info (pgp key if you need)

ARM (anonymizing relay monitor)

目前仍在看這篇The lifecycle of a new relay,給新入手的中繼服務志願者的更詳細的說明文件。等我慢慢消化完,具體找出此新建中繼表現數值後,再來研究如何透過arm 來監測它的表現,這又可以生另一篇文章出來吧。

p.s. 據說TOR有提供T-Shirt 給志願者,不知道還有沒有存貨可以索取 ;p

comments powered by Disqus