我对DHT torrent索引网站的工作原理很感兴趣。我有使用nodejs-lib编写的inhoHashes的工作scraper。第一次我尝试在NAT后面执行,但效率不高,然后我使用了带有公共IP的BSD服务器,情况确实更好了。在许多关于这个主题的出版物中,我了解到最好的解决方案是运行几个虚拟DHT节点,以更快地收集infoHashes。我有一些代码可以启动几个DHT节点实例,这些实例使用唯一的NODEID和自己的端口运行
我的nodejs代码:
"use strict"
const DHT = require('bittorrent-dht')
const crypto = require('crypto');
let DHTnodeID = []
for(let i = 1; i<=10; i++){
DHTnodeID.push({[i]:crypto.createHash('sha1').update(`myDHTnodeLocal${i}`).digest('hex')}) //Give each node unique hash ID
}
let dhtOpt = {
nodeId: '', // 160-bit DHT node ID (Buffer or hex string, default: randomly generated)
//bootstrap: [], // bootstrap servers (default: router.bittorrent.com:6881, router.utorrent.com:6881, dht.transmissionbt.com:6881)
host: false, // host of local peer, if specified then announces get added to local table (String, disabled by default)
concurrency: 16, // k-rpc option to specify maximum concurrent UDP requests allowed (Number, 16 by default)
//hash: Function, // custom hash function to use (Function, SHA1 by default),
//krpc: krpc(), // optional k-rpc instance
//timeBucketOutdated: 900000, // check buckets every 15min
//maxAge: Infinity // optional setting for announced peers to time out
}
var dhtNodes = []
for(let i = 1; i<=DHTnodeID.length; i++){
dhtOpt.nodeId = DHTnodeID[i-1][String(i)]
dhtNodes.push(new DHT(dhtOpt))
}
let port = 6881 //run 10 DHT nodes
for(let item of dhtNodes){
item.listen(port, listenFce)
item.on('ready', readyFce)
item.on('announce', announceFce)
port++
}
然后我找到了一个大学研究项目,其中有以下声明:
提高吞吐量最明显的方法是使用DHT节点而不是一个。在单个IP地址上使用多个端口由于基于IP地址的筛选,被认为不是一个可行的选项防止潜在的DoS攻击。相反,索引器被设计为运行在多个主机或多主机上。单个实例通过共享关系同步他们的索引活动存储发现的信息散列和当前处理的数据库每个.torrent文件的阶段。
Aaron Grunthal-Esslingen 应用科学大学
如果上面的说法是真的,这是否意味着我的10个节点DHT实例将被视为DoS攻击,我是否会受到惩罚?如果这是真的,那么这些网站(DHT torrent索引网站(如何处理这个问题?是否有可能在一台服务器上使用一个公共IP运行高效的infoHash scraper?显然,我执行的实例越多,得到的散列就越多,但上面的语句让我很担心。事先非常感谢。
如果上面的说法是真的,这是否意味着我的10个节点DHT实例将被视为DoS攻击,我是否会受到惩罚?
这取决于网络中其他节点的实现质量。高级实现将实现各种净化策略,以使其路由表免受恶意对等方的攻击。其中一种策略是每个IP地址只允许一个路由表条目。
如果这是真的,那么这些网站(DHT torrent索引网站(如何处理这个问题?
他们可能会操作恶意节点,这些节点试图进入比正常节点更多的路由表,但这会被上述净化策略所抵消,因此是一种不可靠的(对生态系统有害的(策略。他们也可以从多个IP地址操作,如您的报价中所述。
是否有可能在一台服务器上使用一个公共IP运行高效的infoHash scraper?
BEP51能够从单个主机进行高效索引。