为什么DHT在使用trackerless torrent下载时找不到资源?

Why DHT can't find resource when to download with a trackerless torrent?

请按照我在您的 vps 中所做的操作,然后可能会重现问题,在以下步骤中将变量 $vps_ip 替换为您的真实 vps ip。

wget  https://saimei.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-10.4.0-amd64-netinst.iso
transmission-create -o  debian.torrent   debian-10.4.0-amd64-netinst.iso

创建无跟踪器的 torrent,显示其信息:

transmission-show  debian.torrent
Name: debian-10.4.0-amd64-netinst.iso
File: debian.torrent

GENERAL

  Name: debian-10.4.0-amd64-netinst.iso
  Hash: a7fbe3ac2451fc6f29562ff034fe099c998d945e
  Created by: Transmission/2.92 (14714)
  Created on: Mon Jun  8 00:04:33 2020
  Piece Count: 2688
  Piece Size: 128.0 KiB
  Total Size: 352.3 MB
  Privacy: Public torrent

TRACKERS

FILES

  debian-10.4.0-amd64-netinst.iso (352.3 MB)

在你的vps上打开传输运行的端口。

firewall-cmd --zone=public --add-port=51413/tcp --permanent
firewall-cmd --reload

从您的本地电脑上查看。

sudo nmap $vps_ip -p51413
Host is up (0.24s latency).
PORT      STATE SERVICE
51413/tcp open  unknown
Nmap done: 1 IP address (1 host up) scanned in 1.74 seconds

添加 torrent 并在您的 vps 上使用传输的默认用户名和密码为它播种(如果您已经更改它,请使用您自己的用户名和密码):

transmission-remote  -n  "transmission:transmission"  --add  debian.torrent
localhost:9091/transmission/rpc/ responded: "success"
transmission-remote  -n  "transmission:transmission"  --list
ID     Done       Have  ETA           Up    Down  Ratio  Status       Name
   1     0%       None  Unknown      0.0     0.0   None  Idle         debian-10.4.0-amd64-netinst.iso
Sum:              None               0.0     0.0
transmission-remote  -n  "transmission:transmission"  -t 1 --start
localhost:9091/transmission/rpc/ responded: "success"

从您的 vps 中获取 debian.torrent 到本地电脑。

scp root@$vps_ip:/root/debian.torrent   /tmp  

现在尝试在您的本地电脑上下载它。

aria2c --enable-dht=true  /tmp/debian.torrent

06/08 09:28:04 [NOTICE] Downloading 1 item(s)

06/08 09:28:04 [NOTICE] IPv4 DHT: listening on UDP port 6921

06/08 09:28:04 [NOTICE] IPv4 BitTorrent: listening on TCP port 6956

06/08 09:28:04 [NOTICE] IPv6 BitTorrent: listening on TCP port 6956
 *** Download Progress Summary as of Mon Jun  8 09:29:04 2020 ***              
===============================================================================
[#a34431 0B/336MiB(0%) CN:0 SD:0 DL:0B]
FILE: /tmp/debian-10.4.0-amd64-netinst.iso
-------------------------------------------------------------------------------

我等了大概一个小时,下载进度一直是0%。

如果您使用的是 DHT,则必须在防火墙中打开一个 UDP 端口,然后,根据您的操作,您可以将该端口指定给 aria2c。来自文档:

DHT uses UDP. Since aria2 doesn't configure firewalls or routers for port forwarding, it's up to you to do it manually.

$ aria2c --enable-dht --dht-listen-port=6881 file.torrent

有关将 DHT 与 aria2c 结合使用的更多示例,请参阅 this page