Tor 是一個開源實現,第二代洋蔥路由匿名代理網絡,提供免費訪問。其首要目標是通過對流量分析攻擊保護,使網上的匿名性。
介紹
使用Tor網絡在他們的機器上運行洋蔥代理。這個軟體向外連接到Tor,定期的通過Tor網絡連接一個虛擬的電子迴路。Tor在一個分層方式採用加密(因此有了『洋蔥』的比喻),確保路由器之間的完全保密。 同時, 洋蔥代理伺服器軟體,向客戶端提出了SOCKS接口。SOCKS監聽程序是Tor的特點,通過Tor的虛擬電路的流量,然後復。
通過這個過程洋蔥代理將會管理終端用戶的匿名網絡流量。它通過加密流量來保持用戶的匿名, 通過Tor的其他節點來發送信息,在發送信息到你指定的伺服器之前解密。雖然Tor相對的來說比一般的使用DNS目錄連接安全(例如:沒有使用代理), 由於大量的數據加密所以它相對來說比較慢。 此外,盡Tor阻止了流量分析但是Tor不能阻Tor網絡邊界流量的確認。(例如:例如流量進入或者退出網絡)。
Wikipedia:Tor (anonymity network)
安裝
此外,還可以安裝 Qt 前端 vidaliaAUR。除了控制 Tor 進程外,Vidalia 可以查看 Tor 的配置和狀態、監控帶寬使用並查看、過濾和搜索日誌信息。如果喜歡使用命令行,並能獲得和 Vidalia 一樣的效果,可以使用 nyx包
配置
為了更好的理解Tor/etc/tor/torrc
配置文件. 配置選項在 man tortor(1)和Tor website有介紹.
默認配置應該能夠很好的為大多數Tor用戶服務除了哪些是用Vidalia的用戶, Vidalia是一Tor的圖形界面。 在AUR有可用包vidaliaAUR。除了控制過程中的Vidalia允許您查看Tor狀態監視帶寬使用情況,查看,過濾,搜索日誌消息;和配置Tor的某些方面。
使用TOR_MAX_FD
變量,您可以設置自定義文件為Tor的描述ulimits/etc/conf.d/tor
。
默認情況下的Tor記錄在日誌級別的通知「STDOUT」。如果你能夠記錄在自己的文件torrc
, 他們默認為 /usr/local/var/log/tor/
.
中繼配置
中繼 (relay) 是 Tor 網絡中重要一環,負責數據傳輸和隱藏真實 ip 地址。如果沒有配置 Tor 配置文件中的 AccountingMax
且沒有布置 Web 伺服器,應該考慮修改你的洋蔥路由埠 (ORPort) 為 443
,因為防火牆會阻止 tor
,只能用於訪問網頁。修改後可以繞過防火牆,也可以考慮 22
, 110
, 143
和 9001
埠。由於低於1024埠屬於特級埠,需要在 tor.service
中設置 User=root
和 /etc/tor/torrc
中設置 User tor
以 root 權限運行。realy setup
啟用 Tor ControlPort
大多數用戶是不需要這個功能的,但一些應用程式需要這個功能來實現對 Tor 節點的低級訪問。 通過 ControlPort ,其他應用程式可以更改和查看 Tor Node ,在 Tor 運行時修改配置文件和查看 Tor 網絡。
添加到文件
ControlPort 9051
即可啟用
cookie
文件或控制密鑰來使用,且只對受信任的程序或用戶提供!關於配置 Tor ControlPort ,請參考設置 cookie 文件
用法
可以通過命令行或 vidalia 等圖形程序啟動 Tor.
要永久連接,可以啟動 tor daemon 並將其加入 DAEMONS
數組。
程序配置成實驗 127.0.0.1 或 localhost 作為 SOCKS5 代理就可以使用 Tor,埠要設置成 9050 (Tor 標準設置) 或 9051 (用 vidalia標準配置).
訪問 Tor、Harvard[失效連結 2021-05-17 ⓘ] 或 Xenobite.eu 可以檢查 Tor 是否正確運行。
網頁瀏覽
Tor主要支持Firefox,但是也支持Chromium。
Firefox
如果你使用Firefox, 你可以安裝這個插件: TorButton。這將允許你很容易地在Tor的網絡和正常網絡切換。
如果你正在使用多代理(例如:如果你想使用 TOR 和 "ssh -D") 也有一個插件叫作 "FoxyProxy" 他允許你對於不同網址或者全部網址指定多個代理。只需將它指向localhost上的埠8118(polipo運行中)。
為了測試他, 在你的瀏覽器打開或者關閉Tor瀏覽這個網址Tor check。 更多信息請查看這個網址the official doc。
Chromium
當你使用Tor和Chromium時不需要polipo。只需要簡單的運行Tor daemon,
然後運行:
$ chromium --proxy-server="socks://localhost:9050"
即時通信
要讓即時通信程序使用 Tor,並不需要 polipo/privoxy 等 http 代理。直接使用 tor 守護進程監聽的埠 9050 即可。
Pidgin
通過 preferences -> proxy 進入編輯,設置為:
Proxy type SOCKS5 Host 127.0.0.1 Port 9150
之後 pidgin 會使用 Tor 進行通信。有時根據不同帳號的 IM 服務配置,需要修改代理設置。在 Accounts -> Manage Accounts 中選擇要修改的帳號,在 Proxy 標籤頁中選擇:
Proxy type Use Global Proxy Settings
Irssi
Freenode 不推薦使用 Irssi 和 Privoxy。他們推薦 mapaddress
方式,通過運行 torify irssi
啟動。將下行加入 /etc/tor/torrc
:
mapaddress 10.40.40.40 p4fsi4ockecnea7l.onion
Freenode 需要 charybdis 和 ircd-seven 的 SASL 機制在連接時進行 nickserv 確認。從 Freenode 網站(即 https://web.archive.org/web/20150423190608/http://www.freenode.net/sasl/cap_sasl.pl) 下載啟用 SASL 的 cap_sasl.pl
,保存到 ~/.irssi/scripts/cap_sasl.pl
用 pacman 安裝需要的 perl 模塊和 AUR 中的 perl-crypt-dhAUR[損壞的連結:package not found].
$ pacman -S perl-crypt-openssl-bignum perl-crypt-blowfish
也可以通過 perl 直接安裝:
$ perl -MCPAN -e 'install Crypt::OpenSSL::Bignum Crypt::DH Crypt::Blowfish'
啟動 irssi
$ torify irssi
加載使用 SASL 機制的腳本:
/script load cap_sasl.pl
將身份設置到 nickserv,連接時會讀取這個值,支持的機制是 PLAIN 和 DH-BLOWFISH。
/sasl set <network> <username> <password> <mechanism>
連接到 Freenode:
/connect -network <network> 10.40.40.40
如果遇到問題,請訪問 Arch 論壇上的 Cannot Connect to Freenode IRC using Irssi & Tor。
外部連結
使用 HTTP 代理
如果你需要一個 HTTP 代理。
Privoxy
Privoxy 是一個 HTTP 代理,它使用 SOCKS4a 代理進行 html/cookie 過濾。可以安裝 Privoxy 文章安裝。
在Firefox使用Tor 和 Privoxy
最簡單的方法就是使用Torbutton 擴展。
或者, 你可以使用Foxyproxy。然後重啟Firefox你就會發現一個新的工具條。 點Add, 選Standard proxy type. 選 你要的Proxy Label , 例如Tor。進入「HTTP Proxy」和「SSL Proxy」區域:
Hostname: 127.0.0.1 Port: 8118
然後Firefox將會用代理連接。你也可以在No Proxy for 添加例外。
現在,返回 https://whatsmyip.net/ 檢查你的ip地址是否和以前不同了。
在其他程序使用Tor 和Privoxy
你可以在像即時通信, Jabber, IRC,等軟體使用這個方法。
你可以指定代理(127.0.0.1 port 8118)在那些支持HTTP代理的軟體裡面。
如果使用SOCKS 代理,你可以指定你的程序到Tor (127.0.0.1 port 9050)。用這種方法的一個問題是,雖然自己做DNS解析的應用程式可能會洩漏信息。
你可以考慮使用Socks4A (e.g. via privoxy)來取代他。
運行Tor 服務
配置
你的帶寬必須至少20kb/s:
Nickname <tornickname> ORPort 9001 BandwidthRate 20 KB # Throttle traffic to 20KB/s BandwidthBurst 50 KB # But allow bursts up to 50KB/s ExitRelay 0 # Disallow exits from your relay
允許 Irc 在 6660-6667 埠輸出:
ExitPolicy accept *:6660-6667,reject *:* # Allow irc ports but no more
Tor 作為輸出節點:
ExitPolicy accept *:119 # Accept nntp as well as default exit policy
Tor 作為中間人:
ExitPolicy reject *:*
運行 Tor 網橋
Tor 網橋是旨在 ISP 運營商或政府阻止訪問中繼 (relay) 時提供的連接方案,通過訪問bridges來了解網橋的工作原理。
需要使用網橋時需在 /etc/tor/torrc
添加一下4行:
/etc/tor/torrc
SOCKSPort 0 ORPort 443 BridgeRelay 1 ExitRelay 0
TorDNS
Tor 0.2.x系列提供了一個內置的DNS轉發器。在Tor配置文件添加如下文件來啟動它。
/etc/tor/torrc
DNSPort 9053 AutomapHostsOnResolve 1 AutomapHostsSuffixes .exit,.onion
然後重新啟動 Tor 來加載更新過的配置文件:
/etc/rc.d/tor restart
這將讓Tor接受DNS請求(在這個例子裡面監聽著9053埠)。並通過Tor網絡域名。一個缺點是,它是僅能夠解決一個記錄的DNS查詢; MX 和NS 請求沒有回應。
更多信息請查看 Debian-based introduction。
DNS查詢,也可以通過命令行tor-resolve
來查詢。例如:
$ tor-resolve archlinux.org 66.211.214.131
Torsocks
torsocks包 will allow you use an application via the Tor network without the need to make configuration changes to the application involved. From the man page:
torsocks is a wrapper between the torsocks library and the application in order to make every Internet communication go through the Tor network.
Usage example:
$ torsocks elinks checkip.dyndns.org $ torsocks wget -qO- https://check.torproject.org/ | grep -i congratulations
Torify
torify
允許你的程序不需要更改配置來通過訪問Tor網絡。
man page:
torify is a simple wrapper that calls tsocks with a tor specific configuration file. tsocks itself is a wrapper between the tsocks library and the application that you would like to run socksified
使用例子:
$ torify elinks checkip.dyndns.org $ torify wget -qO- https://check.torproject.org/ | grep -i congratulations
Torify 不會通過Tor網絡來查詢DNS。其中一種解決方法就是和tor-resolve
來解決(前文所述)。在這種情況下, 上面的例子程序將像這樣
$ tor-resolve checkip.dyndns.org 208.78.69.70 $ torify elinks 208.78.69.70
問題解決
User value的問題
如果tor daemon啟動失敗,你可以在root環境下運行一下命令(或者使用sudo)
# tor
如果你收到以下 error
May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted". May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root. May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details. May 23 00:27:24.624 [err] Reading config failed--see warnings above.
它意味著你的User value有問題。通過以下的步驟解決:
運行以下命令檢查/var/lib/tor
目錄的權限
# ls -l /var/lib/
如果/var/lib/tor
權限顯示如下
drwx------ 2 tor tor 4096 May 12 21:03 tor
這意味著它被tor用戶和 tor組所擁有
通過以下命令把擁有者和組改為root, root
# chown -R root:root /var/lib/tor
如果你重新檢查權限,他現在應該顯示為
drwx------ 2 root root 4096 May 12 21:03 tor
現在打開 /etc/tor/torrc
找到以下文字
## Uncomment this to start the process in the background... or use ## --runasdaemon 1 on the command line. RunAsDaemon 1 User tor Group tor
注釋掉User tor 和Group tor, 所以他應該顯示為
## Uncomment this to start the process in the background... or use ## --runasdaemon 1 on the command line. RunAsDaemon 1 #User tor #Group tor
保存更改然後重啟tor daemon, 他應該能夠工作了
# /etc/rc.d/tor restart