Как сайты индексации торрентов DHT эффективно очищают информационные хэши?

Мне интересно, как работает сайт индексации торрентов DHT. У меня есть работающий парсер inhoHashes, написанный с использованием nodejs lib. Сначала я пытался запускать за NAT, но это было неэффективно, затем я перешел на BSD-сервер с публичным IP-адресом, и все стало намного лучше. Из многих публикаций на эту тему я узнал, что лучшим решением является запуск нескольких виртуальных узлов DHT для более быстрого парсинга информационных хэшей. У меня есть код, который инициирует несколько экземпляров узлов 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.

Аарон Грюнталь, Университет прикладных наук Эсслингена

Если приведенное выше утверждение верно, значит ли это, что мои экземпляры DHT с 10 узлами будут рассматриваться как DoS-атака, и можно ли как-то оштрафовать меня? Если это правда, то как эти веб-сайты (сайт индексации торрентов DHT) решают эту проблему? Есть ли возможность запустить эффективный парсер infoHash с одним публичным IP на одном сервере? Очевидно, что чем больше экземпляров я выполняю, тем больше хэшей я получаю, но приведенное выше утверждение заставляет меня беспокоиться. Заранее большое спасибо.


person TomRavn    schedule 01.10.2020    source источник


Ответы (1)


Если приведенное выше утверждение верно, значит ли это, что мои экземпляры DHT с 10 узлами будут рассматриваться как DoS-атака, и можно ли как-то оштрафовать меня?

Это зависит от качества реализации других узлов в сети. Расширенные реализации будут реализовывать различные стратегии очистки, чтобы сохранить их таблицы маршрутизации, свободные от вредоносных пиров. Одна из этих стратегий — разрешать только одну запись в таблице маршрутизации для каждого IP-адреса.

Если это правда, то как эти веб-сайты (сайт индексации торрентов DHT) решают эту проблему?

Они могут управлять вредоносными узлами, которые пытаются попасть в большее количество таблиц маршрутизации, чем обычный узел, но этому противостоят вышеупомянутые стратегии очистки, что является ненадежной (и вредной для экосистемы) стратегией. Они также могут работать с нескольких IP-адресов, как указано в вашей цитате.

Есть ли возможность запустить эффективный парсер infoHash с одним публичным IP на одном сервере?

BEP 51 обеспечивает эффективное индексирование с одного хоста.

person the8472    schedule 04.10.2020