Tor环境搭建tor链路IP限定配置
Tor隱匿環(huán)境搭建
Author:HJY
[參考鏈接]
- 官方安裝tor步驟說(shuō)明
 - 官方配置說(shuō)明
 
背景信息
環(huán)境描述
注:在中國(guó)使用Tor服務(wù),疊加一層前置代理會(huì)比較好。而Tor瀏覽器則是選擇獲取官方提供的網(wǎng)橋的方式。因此本教程是基于鏈路2的網(wǎng)絡(luò)拓?fù)溥M(jìn)行搭建。
安裝Tor
- note: 需在超級(jí)權(quán)限下進(jìn)行安裝
 - note: 建議使用代理網(wǎng)絡(luò)進(jìn)行安裝操作,否則訪問(wèn)源失敗
 
對(duì)于Debian系統(tǒng),安裝只需apt install tor即可,Ubuntu本身的默認(rèn)源里也存在tor,但比較過(guò)時(shí),如果你不在意,那你只需apt-get install tor即可跳過(guò)下面的安裝步驟.
Do not use the packages in Ubuntu’s universe. In the past they have not reliably been update.That means you could be missing stability and security fixes
># apt install apt-transport-https根據(jù)當(dāng)前系統(tǒng)版本添加tor包源,參照官網(wǎng)安裝指引,以u(píng)buntu16為例
 查看系統(tǒng)版本的命令
添加gpg key(add the gpg key used to sign the packages)
># curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import ># gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -若報(bào)錯(cuò),采用下面的方案進(jìn)行 1. 下載該文件`A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc` 2. apt-key add A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc進(jìn)行安裝
># apt update ># apt install tor deb.torproject.org-keyring=----------------------------------------------------------------------------------------------
基本命令
啟動(dòng)服務(wù)
> service tor start檢查服務(wù)狀態(tài)
> service tor status基本配置
vim /etc/tor/torrc
SocksPort 9050 #本機(jī)連接 SocksPort 192.168.1.223:9100 #暴露給局域網(wǎng)其他機(jī)器連接 Socks5Proxy 127.0.0.1:10809 #配置前置socks5代理 OutboundBindAddress 192.168.1.223 #對(duì)于多網(wǎng)卡設(shè)備,指定接口IP給其所在的局域網(wǎng)使用(未驗(yàn)證,可以不添加) # NewCircuitPeriod 3600 #Tor每隔NUM秒嘗試新建鏈路,默認(rèn)30秒,為避免IP變換頻繁導(dǎo)致賬號(hào)被封,這里設(shè)為1小時(shí),但這種策略對(duì)于tor是建議的--無(wú)效 ExitNodes {us} #未添加strict模式,盡可能以美國(guó)作為出口節(jié)點(diǎn) ExcludeExitNodes {cn} #未添加strict模式,盡可能排除中國(guó)作為出口節(jié)點(diǎn)| Socks5Proxy host[:port] | 配置前置代理 | 
| SocksPort | 配置監(jiān)聽(tīng)端口 | 
| NewCircuitPeriod | 配置線路變更時(shí)間 | 
| ExcludeExitNodes | 出口節(jié)點(diǎn)排除 | 
| ExitNodes | 出口節(jié)點(diǎn)范圍選擇 | 
| StrictNodes | 強(qiáng)制執(zhí)行節(jié)點(diǎn)設(shè)置,不管是否能連成功 | 
=----------------------------------------------------------------------------------------------
測(cè)試方式
查看本機(jī)的網(wǎng)絡(luò)服務(wù)狀態(tài),9050為tor監(jiān)聽(tīng)端口
> netstat -lnt驗(yàn)證ip,原本上網(wǎng)ip
> curl ipinfo.io #不使用tor > torsocks curl ipinfo.io #使用torpython腳本測(cè)試
import requestsproxies = {'http':"socks5//127.0.0.1:9050",'https':'socks5://127.0.0.1:9050' } url = 'http://httpbin.org/get' res = requests.get(url,proxies=proxies) if res.status_code == 200:print(res.text) else:print('failed')局域網(wǎng)內(nèi)其它PC_瀏覽器測(cè)試
關(guān)于Tor
如何維持一個(gè)固定的出口IP?
理論上,使用Tor訪問(wèn)每個(gè)域名,獲得該域名獨(dú)屬的線路,一個(gè)線路默認(rèn)維持10分鐘
思路一:基于tor ExitNodes參數(shù)
- 思路啟發(fā)
 - tor中繼節(jié)點(diǎn)
 
可以發(fā)現(xiàn)我們出口IP可以在上面的網(wǎng)站中提供的IP找到,那么如果強(qiáng)制指派該節(jié)點(diǎn),是否就固定了IP.
 國(guó)內(nèi)博文或者是大多數(shù)國(guó)外的論壇幾乎不提及ExitNodes的這個(gè)用法,大多以限定出口節(jié)點(diǎn)的區(qū)域的形式,即
但我注意到關(guān)于文檔的說(shuō)明提到:
A list of identify fingerprints,country codes,and address patterns of nodes to use as exit node–that is,
 a node that delivers traffic for you outside the Tor network.
我們忽略了IP address這種使用模式!
評(píng)注:這方面的資料基本沒(méi)有,畢竟這種實(shí)現(xiàn)本身已經(jīng)違背了Tor的設(shè)計(jì)初衷。那么Tor瀏覽器登錄檢測(cè)IP變化的這一類(lèi)網(wǎng)站是怎么避免不被強(qiáng)制logout甚至封號(hào)的呢?關(guān)于這一點(diǎn),reddit上有這樣一則信息configure_tor_to_change_ip_every_minute,其原文如下:
Originally Tor would rotate circuits every ten minutes. The Tor Browser now operates differently and changes circuits every two hours, but also uses a unique circuit for every site. One reason for this is because some sites don’t respond well to a user’s IP changing in the middle of a single session. With circuit isolation, there’s not much security benefit to rotating more quickly. In fact it can introduce additional risks, since by rotating quickly you’re more likely to land on a malicious relay. Plus if your short-lived circuit behavior is detected, that might in itself be identifying (not deanonymizing, but still a risk).
其提到最初Tor是每十分鐘改變一次鏈路,而Tor瀏覽器如今雖然仍對(duì)每一個(gè)網(wǎng)站使用不同的鏈路,但是每一個(gè)網(wǎng)站本身則每?jī)蓚€(gè)小時(shí)更換一次鏈路。做出這樣的改變的原因之一是出于考慮到某些站點(diǎn)對(duì)于用戶客戶端與站點(diǎn)的單一會(huì)話過(guò)程中更換IP這一情況不能正常響應(yīng),正常比如強(qiáng)制登出。
強(qiáng)制指派并使用單一出口節(jié)點(diǎn),以IP的方式
ExitNodes 199.249.230.78當(dāng)然,這種方法也有不妥的時(shí)候:
并不是每一個(gè)circuit(理解為中繼節(jié)點(diǎn)服務(wù)器)都用于向Tor網(wǎng)絡(luò)之外傳送網(wǎng)絡(luò)流量。如果你強(qiáng)制指定的這個(gè)出口節(jié)點(diǎn)不支持訪問(wèn)80端口或443端口, 那你便不能訪問(wèn)網(wǎng)頁(yè)。規(guī)避這個(gè)問(wèn)題的策略也很簡(jiǎn)單,一個(gè)是你預(yù)先采用不強(qiáng)制情況下訪問(wèn)網(wǎng)頁(yè)得到的IP作為出口節(jié)點(diǎn),另外一種則是使用下面提供的網(wǎng)址進(jìn)行查詢?cè)摴?jié)點(diǎn)服務(wù)器是否支持訪問(wèn)目標(biāo)網(wǎng)站的目標(biāo)端口。
- 節(jié)點(diǎn)信息查詢
 
如果這個(gè)節(jié)點(diǎn)服務(wù)器不能使用時(shí),需要我們變更IP,這一點(diǎn)如果有必要,我們可以用腳本進(jìn)行實(shí)現(xiàn),大致的思路是以即時(shí)或預(yù)先的方式獲取備用的IP,檢測(cè)到服務(wù)不能正常訪問(wèn)時(shí),終止tor服務(wù),并修改配置文件,再重啟服務(wù)。
如果這個(gè)出口節(jié)點(diǎn)被監(jiān)聽(tīng),那么我們的做法就相當(dāng)于把所有的雞蛋都放在同一籃子里。
思路二:基于tor的鏈路更新參數(shù)
這種方案,說(shuō)實(shí)話收效甚微。
總結(jié)
以上是生活随笔為你收集整理的Tor环境搭建tor链路IP限定配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: Simple Operations on
 - 下一篇: poe工业以太网交换机可以当普通交换机用