是否可以將 http torrent 跟踪器放在 CDN 下以防止 DDOS?
我正在考慮在 torrent 相關網站所在的同一台專用伺服器上設置 torrent 跟踪器。我想這樣做是因為我的網站和跟踪器將相互互動,並且我希望這些互動能夠順利進行,並且不想弄亂複製。
我將使用 cloudflare 或其他 CDN 來防止對我的網站進行 DDOS 攻擊。但我也想保護在不同埠上執行的 http 種子跟踪器(XBT 跟踪器)。所以我也希望種子像通過代理一樣通過CDN,但沒有記憶體和驗證碼,因為種子軟體無法解決驗證碼。是否可以通過像 cloudflare 這樣的 CDN 代理 http torrent-tracker,或者我必須為 torrent-tracker 訂購額外的 DDOSable 伺服器?
我認為使用 CloudFlare 或任何其他用於 Torrent Tracker 的 CDN不會有任何收穫。
CDN 的全部意義在於通過記憶體對請求的回復來解除安裝工作。
使用洪流跟踪器,每個請求對於每個客戶端來說都是獨一無二的。
所以它們不能被記憶體(或者如果它們在哪裡也不會有任何區別),使得 CDN 對於那種特定類型的工作負載基本上沒有用處。
以 TL 為例。這是一個巨大的私人洪流跟踪器。它的網站在 CloudFlare 上,但它的跟踪器在盧森堡的伺服器上。似乎沒有涉及 CDN。該 IP 後面可能有一個集群能夠處理所有請求,但我的猜測是,不是 CDN。
客戶每次提出的每個請求都是唯一的。
此 GET 消息的範例可能是:
http://some.tracker.com:999/announce ?info_hash=12345678901234567890 &peer_id=ABCDEFGHIJKLMNOPQRST &ip=255.255.255.255 &port=6881 &downloaded=1234 &left=98765 &event=stopped
https://wiki.theory.org/BitTorrent_Tracker_Protocol
更多詳情: http: //www.bittorrent.org/beps/bep_0003.html
即使所有客戶端的每個參數都是相同的(根據 BEP0003,每個客戶端的每個 torrent 的 peerid 不是唯一的)你仍然會在每個客戶端的每個請求中擁有唯一的東西。例如:
&downloaded=1234 &left=98765
上述參數會隨著 torrent 客戶端的每個後續請求而變化,具體取決於自上次請求以來它完成了多少流量。
CDN 通常會根據請求 URI 記憶體內容。因此,如果請求每次都是唯一的,它將無法提供任何記憶體的內容,從而違背了它們的目的。
現在我想到了,如果您的跟踪器是匿名的,您也許可以在 Varnish 上使用非常自定義的配置,以便能夠記憶體每個 info_hash 的回复,而忽略請求的唯一性。但是這樣一來,您的跟踪器將無法測量任何真實的統計數據(總向上/向下/同行/其他),因為只有一小部分請求會到達跟踪器。
這樣一來,您就不會受到任何 DDoS 的真正保護(儘管 Varnish 是一款很棒的軟體,可以處理大量請求!)
更新:
有一些供應商擁有 DDoS 保護硬體(例如:Arbor Peakflow)。這些可以讓您在沒有任何 CDN 或記憶體的情況下執行您的跟踪器,並能夠阻止 DDoS 攻擊到達您的伺服器。但當然,像這樣的解決方案有其自身的成本:)