概述#
private tracker 是一種限制對其所追蹤的種子訪問權限的機制。其作用是促進資源共享,並且常常會記錄註冊用戶的統計信息,並對未能充分上傳的用戶限制對某些或全部種子的訪問權限。
在生成元信息文件時,用戶可以通過在種子的元信息文件(metainfo file,參加 BitTorrent 協議規範)的”info” 字典中包含鍵值對”private=1″ 來表示該種子為 PT 種子。
當一個 BitTorrent 客戶端獲取到包含”private=1″ 鍵值對的元信息文件時,它必須只向 private tracker 進行報告,並且必須只與 private tracker 返回的節點建立連接。
當一個 PT 種子的元信息文件中的”announce-list” 中出現多個 Trackers(參見多 Tracker 元數據擴展),每個節點在同一時間內只能使用一個 tracker,並且只在當前 tracker 失敗時切換到其他 tracker 。在切換 tracker 時,節點必須斷開與當前所有節點的連接,並僅與新 tracker 提供的節點建立連接。
原理#
Private Tracker 不會公開節點的信息,這樣入侵者就無法直接聯繫其他節點。但是,一旦入侵者獲取了某個節點的 IP 地址和端口,他們可以通過直接連接節點進行文件共享。在種子群中,入侵者將被視為正常的節點,並具有與其他節點相同的權利和待遇。
目前,BitTorrent 有四種方式可以讓一個節點了解種子群中的其他節點:
- Trackers [1],
- Distribute Hash Table (DHT) [2],
- Peer EXchange (PEX) [3],
- Local Service Discovery (LSD) [5].
除了 Private Tracker 之外,通過任何其他機制公佈或交換節點信息都會破壞 tracker 的訪問控制。這意味著如果在 PT 種子中,某個入侵者獲得或猜測了已經在 PT 種子中的某個節點的 IP 和端口,那麼與入侵者交換節點信息將為入侵者提供完整的節點列表。
當節點在不同的 tracker 之間切換時,該節點會斷開與舊 tracker 的連接,以防止成為一個連接 private tracker 和連接 public tracker 的節點之間的橋梁。這在一定程度上減輕了攻擊者修改元信息文件的 announce-list 並通過 public tracker 網站重新分發元信息文件的影響。