前言
对于 BT 下载,你必须要知道的事情是别人的上传速度等于你的下载速度。因为 BT 下载并不是一个人的事,比如你在下载一部生理卫生知识教学影片时,背后其实是有一群和你下载同样影片的人在为你上传,同时你也在为他人上传,这个影片下载的人越多,上传的人就会越多,速度就会越快。但如果找不到这些人,你就可能无法下载。那么如何才能找到和你下载同样影片的人呢?
开放监听端口
在未开放监听端口的情况下,Aria2 无法与外界进行数据交换。所以开放端口是进行 BT 下载的首要条件。
如果是在 VPS 上使用 Aria2 下载,最简单粗暴的办法是关闭防火墙,当然为了安全我想你应该不会这么做。那么首先要知道端口号,这也许是你自己设置的,也许是默认的,总之打开 Aria2 配置文件就知道了。以下是 Aria2 完美配置中的端口信息:
# BT监听端口(TCP)
listen-port=51413
# DHT网络监听端口(UDP)
dht-listen-port=51413
知道端口号后让防火墙放行这些端口即可,每个系统的操作都略有不同,随便咕鸽搜索都能搜到,所以这里就不展开讲了。
如果是在本地内网的电脑或者 NAS 上使用 Aria2 下载,需要在路由器上设置端口转发,或者开启 UPnP 功能,它会自动进行端口转发。(Aria2 暂不支持 UPnP 功能)
添加 BitTorrent tracker
BitTorrent tracker 是帮助 BT 协议在节点与节点之间做连接的服务器,俗称 BT 服务器、tracker 服务器(以下简称为 tracker )。BT 下载一开始就要连接到 tracker ,从 tracker 获得其他客户端 IP 地址后,才能连接到其他客户端下载。在传输过程中,也会一直与 tracker 通信,上传自己的信息,获取其它客户端的信息。所以 tracker 在 BT 下载中起到了至关重要的作用。
每个 BT 种子都会内置 tracker ,但可能因为不可抗力而导致连接困难或者速度不理想,这就意味着很难找到下载相同资源的人。好在这个问题可以通过添加额外 tracker 来解决,这样你遇到和你下载同样资源的人的机会就更多,就更容易找到给你上传的人,速度自然就会快了。
ngosang/trackerslist 是一个提供 tracker 列表的项目,几乎每天都会更新。列表还分为udp、http、ws……小孩子才做选择,所以直接选择 trackers_all 这个包含所有服务器的列表。但是它的格式 Aria2 是不能直接使用的,需要更改格式。tracker 之间用,
隔开,再添加到 Aria2 配置文件中,就像下面这样:
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp
://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.openbittorrent.com:80/announc
e,udp://exodus.desync.com:6969/announce,udp://open.demonii.si:1337/announce,udp://tracker.tiny-vps.com:6969/announce
当然这种重复的事情,用脚本来做才是正确的方式。在 Aria2 配置文件(aria2.conf
)所在目录执行以下命令即可获取最新 tracker 列表并自动添加到配置文件中。
bash <(curl -fsSL git.io/tracker.sh)
对于使用 Aria2 一键安装脚本 增强版和的小伙伴,直接打开自动更新 BT-Tracker 功能即可,Aria2 Pro 则是默认开启的。
获取 DHT 网络节点数据
由于 tracker 对 BT 下载起到客户端协调和调控的重要作用,所以一旦被封锁会严重影响 BT 下载。早年中国大陆对 tracker 的封锁曾一度导致 BT 下载销声匿迹,这也促使了 DHT 网络的诞生。
DHT 网络由无数节点组成,只要是开启 DHT 功能的 BT 客户端都是一个节点,所以你也可以是其中的一份子。当接触到一个节点,通过这个节点又能接触到更多的节点,接触的节点越多,你获取资源的能力就越强,下载的速度间接也就会有提升。即使在完全不连上 Tracker 服务器的情况下,也可以很好的下载。
此外磁力链接是完全依赖于 DHT 网络的,所以如果你没办法成功连接到 DHT 节点,那么是完全无法进行下载的。所以这也是为什么有些小伙伴使用种子能下载,而磁力链接完全无法下载的原因之一。
以下是 Aria2 配置文件中一些与 DHT 相关的主要功能选项:
# DHT 网络监听端口(UDP), 默认:6881-6999
dht-listen-port=51413
# 启用 IPv4 DHT 功能, PT 下载(私有种子)会自动禁用, 默认:true
enable-dht=true
# 启用 IPv6 DHT 功能, PT 下载(私有种子)会自动禁用,默认:false
# 在没有 IPv6 支持的环境开启可能会导致 DHT 功能异常
enable-dht6=false
# IPv4 DHT 文件路径,默认:$HOME/.aria2/dht.dat
dht-file-path=/root/.aria2/dht.dat
# IPv6 DHT 文件路径,默认:$HOME/.aria2/dht6.dat
dht-file-path6=/root/.aria2/dht6.dat
Aria2 有个dht.dat
文件(开启 IPv6 还有个dht6.dat
),里面记录了 DHT 网络节点信息。但是!文件本身是不存在的,需要手动创建。如果你在没有对 Aria2 进行任何配置的情况下第一次运行时直接下载磁力链接或者冷门种子,会因为文件内没有任何数据,就无法获取到 DHT 网络中的节点,所以就会遇到无法下载的情况。
第一个解决方案是找有数据 DHT 文件。比如 Aria2 完美配置中就有。使用Aria2 一键安装脚本 增强版和 Aria2 Pro 的小伙伴就无需折腾了,因为博主已经贴心的帮你们整合好了。
第二个解决方案是生成 DHT 数据。找几个热门种子下载,比如 Ubuntu 镜像的种子,全球每天有成千上万的人在同时下载。下载并做种几个小时,你会发现dht.dat
从空文件变成有数据了。
TIPS: 一定是要以种子文件的形式添加任务,如果连 Ubuntu 镜像都没办法下载,那么说明设置和网络就有问题了。
解决外部因素
以上所涉及的都是软件设置层面的,属于内部因素。接下来谈谈对于中国大陆地区家庭宽带所要面临的外部因素。
公网 IP
在没有公网 IP 的情况下其它的 BT 客户端很难发现你的存在,只有你去发现别人,所以这大大削弱了你的 BT 客户端的资源搜寻能力。
中国由于发展互联网的时间比较晚,所持有的公网 IPv4 地址并不是很多。早期因为接入互联网的家庭并不多,所以基本都会分配公网 IP 。然而随着互联网的快速发展,这些地址很快就不够用了,所以现在基本上运营都不会主动给家庭宽带分配公网 IP 。但这并不代表你不能获得公网 IP ,你所要做的是向运营商提出要求,若不满足可以尝试投诉。
另外目前 IPv6 网络已经建设得很好了,很多运营商虽然不提供 IPv4 公网,但 IPv6 都会是公网 IP ,所以如果你懂得如何去设置路由器,获取到 IPv6 公网地址,也算是一个曲线救国的方式。当然如果你能 IPv4 和 IPv6 公网双持,那么对于 BT 下载速度会有很大加成。
UDP 受限
BT 下载部分通讯使用的是 UDP 协议。由于 BT 下载占用了很大的带宽,所以运营商会干扰 UDP 协议,从而导致 BT 下载出现问题。这在早期 BT 下载还未使用加密通讯时尤其严重。目前来说只要你开启加密选项,那么就可以在一定程度上避免这个情况。
尾巴
经过以上的一波操作,也许下载并没有多么的快,但至少正常了。可能有些非常老而且冷门的资源不会一直有人在做种,这种情况要么是一直挂着等待有缘人突然做种,BT 就是这样,能下载都是缘分。要么把种子放到百度或者115进行离线下载,你会看到那虚假的进度条比你正常用 BT 下热门资源还要快(毕竟资源已经在服务器上存在了,进度条只是给你一种下载速度快的幻觉)。最后网盘下载的速度可能也并不理想,但总比不能下载要好吧。
相关文章推荐:
《 Aria2 新手入门教程》
了解更多 Aria2 玩法技巧点这里
相关 TG 群组:Aria2 Group
相关 TG 频道:Aria2 Channel
本博客已开设 Telegram 频道,欢迎小伙伴们订阅关注。
本文作者:P3TERX
本文链接:https://p3terx.com/archives/solved-aria2-cant-download-magnetic-link-bt-seed-and-slow-speed.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
大佬您好,读完文章我还是有个疑问,1.listen-port在路由器上端口转发到外网是否需要相同端口,如果外网端口和内网不一样应该不会影响下载速度吧;2.listen-port对外网开放是否有安全隐患?我是家庭公网
还有一点,如果家庭不是公网,应该就没必要设置对外端口转发了是吗
大佬你好,我的aria2服务是在本地树莓派上用docker启的,并且把listen-port的6888映射到我自己的阿里云服务器上6001(tcp)和6002(udp)了,但是下载速度还是很慢,基本都是个位数,甚至是0,这种情况我应该如何弄?
阿里云服务器这两个端口的安全规则我都已经设置了开放
已解决,希望对其他人有帮助,如果需要在本地搭建aria2服务,需要将对应的端口映射到公网服务器上,同时在服务器上安全组打开对应port,还需要配置本地aria2.conf文件,增加公网的ip地址配置
这真是个骚操作。感谢分享!
你好,我想请问一下这种情况阿里云的服务器带宽会有影响吗?谢谢
bt监听端口和dht监听端口可以不同吗
可以
链接后面的端口是不是需要和dht监听端口相同才能得到最佳效果
不是,不要改
博主你好~~~我的是群晖
1、群晖需要装dht.dat嘛?我是先上传完美配置里的dht.dat到群晖里,然后配置修改,重启,dht.dat就变成56B了
2、群晖可以用完美配置嘛?
下载Ubuntu 镜像的种子还是满速的。
Docker,替换不了dht.dat,不过下久自己会上来了。谢谢博主的回答
之前的aria也是看了你的教程,最近我在用cloud-torrent,站长有用过吗,不用在aria2web和filemanager跳转了
以前用过,简单易用。不过功能上不能满足我的需求,后来也就没用了。
xftp传回来的速度太慢怎么办啊。。。。。
VPS上搭网盘服务、宝塔面板,用多线程下载工具去下载。或者配合 Rclone 离线下载到国际网盘,再从网盘下载。
dalao arai2更新到1.35.0了。
另外我查看了aria2.conf配置文件中:
是不是可以取消掉,取消掉后才能使用DHT功能吧?
学习了 很多基础常识