前言

对于 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 频道,欢迎小伙伴们订阅关注。