樹莓派 Raspberry Pi 架設 Tor 匿名洋蔥網路代理伺服器

這裡介紹如何使用樹莓派架設 Tor 匿名洋蔥網路代理伺服器(Onion Pi Tor Proxy),增強自己電腦的上網安全性。

Tor(The Onion Router,洋蔥路由器)是一個可以讓使用者匿名上網的洋蔥路由實作專案,透過洋蔥網路的匿名主機來上網,可以讓所有的連線與使用者資訊完全隱蔽在這些匿名主機後方,被瀏覽的網站無從得知使用者的來源 IP 或是任何相關的地理資訊,達到匿名上網的效果。


how-tor-works-1

Tor 匿名洋蔥網路

以下我們介紹如何使用樹莓派架設 Tor 匿名洋蔥網路代理伺服器,讓自己家中的電腦可以透過這個洋蔥網路代理伺服器上網。

無線網路 WiFi AP

要用樹莓派架設 Tor 匿名洋蔥網路代理伺服器之前,我們要先架設基本的 WiFi AP,架設的步驟請參考樹莓派 Raspberry Pi 設定無線網路 WiFi AP 這篇教學。

在架設好 WiFi AP 之後,只要再安裝與設定 Tor,並且修改一下 packet forwarding 的設定,就變成一台匿名洋蔥網路代理伺服器了,如果您是有經驗的老手,在安裝與設定 WiFi AP 的時候,可以先跳過 packet forwarding 的設定,直接使用這裡新的 packet forwarding 設定取代,若是不熟悉 Linux 與網路的新手,建議可以分兩階段架設,先成功架設好 WiFi AP 之後,再改成 Tor 匿名洋蔥網路代理伺服器,這樣會比較好除錯。

Tor 安裝與設定

在架設好 WiFi AP 之後,接著安裝 tor 套件:

sudo apt-get install tor

然後修改 /etc/tor/torrc 設定檔,加入以下設定:

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 53
DNSListenAddress 192.168.2.1

這裡的 TransListenAddressDNSListenAddress 要指定為樹莓派所使用的 IP 位址,如果您所使用的 IP 位址跟這裡的不同,請自行更改,其餘的設定通常是不需要更動。

設定好之後,就可以重新啟動 tor 服務:

sudo service tor restart

記得注意一下有沒有錯誤訊息。

Packet Forwarding

Tor 所使用的 packet forwarding 設定與 WiFi AP 不同,這部份是比較關鍵的部份。首先我們先清除所有舊的設定:

sudo iptables -F
sudo iptables -t nat -F

如果您需要透過 SSH 連線到這台樹莓派,可以先執行這一行設定,確保之後可以正常連線:

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22

設定所有來自於 wlan0 的 DNS 連線(UDP port 53)都導向自己的 53 埠(跟 /etc/tor/torrcDNSListenAddress 設定一致):

sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53

設定所有來自於 wlan0 的 TCP 連線都導向至自己的 9040 埠(跟 /etc/tor/torrcTransListenAddress 設定一致):

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040

這樣就完成設定了,我們可以檢查一下 iptables 的設定:

sudo iptables -t nat -L

若沒有問題,可以將 iptables 的設定儲存下來:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

這個儲存下來的 /etc/iptables.ipv4.nat 可透過 /etc/network/interfaces 的設定,在開機時自動載入,設定方式請參考 樹莓派 Raspberry Pi 設定無線網路 WiFi AP 這篇教學文章。

使用 Tor 匿名洋蔥網路代理伺服器

架設好 Tor 匿名洋蔥網路代理伺服器之後,使用方式很簡單,只要使用樹莓派的 WiFi AP 的無線網路上網,所有的連線就會自動導向 Tor 洋蔥網路,受到匿名伺服器的保護,以下是測試的結果。

首先我用一般的 IP 分享器上網,使用 IP Chicken 這個網站來查詢自己的公開 IP 位址:

raspberry-pi-tor-router-onion-pi-proxy-1

使用一般網路設定

若以一般的 IP 分享器上網,對方的網頁伺服器可以直接獲取使用者的來源 IP 位址。

接下來我改用自己架設的 Tor 匿名洋蔥網路代理伺服器上網,結果就不一樣了:

raspberry-pi-tor-router-onion-pi-proxy-2

使用 Tor 匿名洋蔥網路設定

使用 Tor 匿名洋蔥網路之後,對方伺服器所獲取的 IP 位址改變了,這樣自己的來源 IP 位址與地理位置就不會輕易被對方得知,有一層基本的防護。

使用 Tor 匿名網路雖然比較安全,不過也有一些缺點,最明顯的就是由於路由節點變多,上網速度會比較慢一些,另外有些網站為了防堵惡意程式的攻擊,對於使用匿名網路的連線,需要通過類似這樣的驗證才能瀏覽網頁:

raspberry-pi-tor-router-onion-pi-proxy-3

參考資料:MakeMakeRaspberry Pi GeekadafruitArchWikinixCraftUbuntu Help

樹莓派, 物聯網

3 Comments

  1. Jason

    請問若我的tor proxy需透過FireWall才能上Internet
    而FW又只允許80 port的對外流量可上Internet
    這樣tor proxy是否能正常運作呢? tor 9040 port 是否會被FW阻擋呢? thanks

  2. Jason

    發現好像TransListenAddress 有設錯..

Leave a Reply