就不讲那些没用的了,在网上各种平台的科技分区经常有一类起号小作文,给你讲各种关于怎么给 qBittorrent 添加 Tracker 列表,然后下载速度就飞起来了。
一般情况下,你照做之后速度并不会飞起来,这就是今天这贴要讲的一些小知识了。
但是和这些起号小作文一样,本篇的第一段同样是:
先 GTMD 迅雷
虽然,我也不反对任何人迅雷,至少有一些死种和冷门资源至今只能在迅雷的 CDN 里才能获得一点点下载速度了。
但是反过来说,这些种子之所以变成了死种迅雷也绝对出了力。
简单讲,迅雷的本质是一个类似于如今网盘业务的远程存储服务商,它通过自己庞大的私有 CDN 服务器缓存了这些 BT 网络中的数据,然后把这些数据变成了超级会员“特权”。
但这也不是迅雷最大的一宗罪,BT 下载的本质是最“人人为我,我为人人”的互联网精神,而迅雷的客户端在很多年以来都从 BT 网络中的其他客户端下载,但是迅雷客户端却只上传给其他的迅雷客户端,这种行为也就是我们常说的吸血,极大的摧毁了这个本身公平的 P2P 网络的信任基础。
选择你的 BT 客户端
要说介绍的其实主要还是是 qBittorrent ,但是 BT 客户端并不只有 qB ,例如 Aria2 也是支持 BT 下载的,不过 Aria2 前面的帖子已经讲过了,这里就不再复述,以下再介绍一些其他的。
这也是当年和 迅雷5 正面对决过的老牌软件了,对于普遍的无公网带宽支持不比迅雷差,对于国内的网络环境,无需任何配置你还可以用的就是比特彗星,老是老了点,但这也是最接近迅雷的平替,也支持电驴(ed2k://)链接,也支持边下边播。
这两个是一个作者所出,主要特点是提供详尽的带宽和网络图表显示,以及聊天室,你可以和同时也在下载这个种子的人聊天。
不过 Fopnu 不是传统的 BT 客户端,而是类似于 Resilio Sync (rsync)的同步客户端,如果你感兴趣的话可以去玩一下,Fopnu 里有很多分享书籍和电视剧之类大型资源合集的用户,不过这也取决于你能不能连接到这些用户,与一般的 BT 软件不同,这个客户端使用的是纯 UDP 协议,部分地区可能会封 UDP 。
老牌客户端 Vuze 的原班人马重新打造的的客户端,Vuze 的主要特点是支持 Tor (洋葱路由),BiglyBT 更进一步支持了 I2P (大蒜路由、隐形互联网)。
至于 I2P ,新版本的 qB 也是支持的,至于这玩意是什么,总之就是传说中的暗网,一般人也用不上,而且暗网这东西既没有营销号说的那么神秘,也没有你想的那么法外之地,本身只是一种匿名上网的方法,或者说是偷偷干坏事的方法,这东西本身就是西方“言论自由”压迫下诞生的产物,里面除了人类文明的糟粕就是不太像人类能有的 XP ,以及各种针对想要干坏事的人的诈骗。说到底人类历史草台班子了600万年,太阳底下没有新鲜事,实在你真想知道点猎奇的,你去批站关注一下牢A得了。
最主流的选择 ,社区内还有一个增强版 qBittorrent Enhanced Edition (QBEE) ,一般情况下你用不上,QBEE和原版的主要功能区别是增加了自动更新 Tracker 和屏蔽迅雷等吸血客户端的功能,这两个功能对于 PT 用户比较有用,毕竟反吸血更能保障上传权益,你要是不玩 PT 那么对你来说意义不大,你要是玩 PT 那你应该也不需要本贴科普。
考虑到 qBittorrent 的官网也已经被砌在墙里了,你可以试试:
其他的一些客户端,例如 μTorrent 、 Deluge 、 Transmission ,本身用的人就更少了。 Transmission 性能开销最低也最老所以是一些路由器固件里自带的工具,Deluge 有很多插件可以实现RSS订阅、自动分类之类的玩法但是毕竟用的人比 qB 少的多所以有些时候还需要你自己动手搞定一些问题,至于 μTorrent 也是很老牌的不过被收购以及商业化之后软件里贴了好几个广告。
添加 Tracker 列表( BT 服务器地址)
因为 BT 里你下载文件全都是别人上传给你的,所以你的下载速度就等于其他所有人给你上传的速度加起来,于是为了下载的更快,你得连接到更多下载相同文件的人。
在 BT 协议里的 Tracker 是指运行于服务器上的一个服务程序,简单来说就是一项中介服务,这个程序能够追踪到底有多少人同时在下载或上传同一个文件。客户端连上 Tracker 服务器,就会获得一个正在下载和上传的用户的信息列表(通常包括IP地址、端口、客户端ID等信息),根据这些信息,BT客户端会自动连上别的用户进行下载和上传。
Tracker 存在目的是解决两个互相不知道 IP 地址的客户端完成联系,你将你需要的文件请求到 Tracker ,然后 Tracker 将自己记录中持有这个文件的其他人发回来给你,同时你持有的文件也会被 Tracker 记录然后发给别人,就这么简单。
添加 Tracker 服务器列表对你的下载速度没有坏处,只是不一定有效,或者说, Tracker 列表其实没那么重要。
这里我列举几个 Tracker 服务器汇总列表项目,你可以选一个你能打开的,然后添加到你的下载客户端里:
至于为什么你添加了一大堆 Tracker 链接但是下载速度没有起色,一部分原因是大部分 Tracker 其实是由种子发布服务提供的,这个服务器只会登记自己发布种子的下载用户,譬如 Nyaa 、动漫花园、RARBG 、KAT、Zooqle、海盗湾、恶魔岛 之类的,当然光看我列举的这些你大概就能理解了,因为连年的版权出击,很多资源的原始 Tracker 已经与世长辞了,或者还能用的有些也被砌在墙里了。
所以客户端请求 Tracker 只能是碰运气,所以需要一个几百条的列表让客户端挨个试试看。
加入 DHT 与 PEX
因为 Tracker 是中心化的,所以现代的 BT 协议发展出了 DHT(分布式哈希表) 和 PEX(用户信息交换)。
DHT 网络算法的原理简单来说就是每个客户端都把自己当作了 Tracker ,每个客户端负责一个小范围的路由,客户端与客户端之间互相询问,以这样递归式滚雪球的方法挖出正在下载该资源的用户。PEX(Peer)则更简单点,一旦你连接到了某个能够提供上传的客户端,这个客户端会直接把自己记录的其他上传客户端的 IP 一起发给你。
所以呢,这三者的优缺点是互补的,在 BT 下载时这三者任意一个能工作就能下载,但是为了下载速度,你应该让这三者都工作。
一般来说,你打开 BT 客户端,等待一会儿就可以连上 DHT 节点,通常的客户端在窗口最下方也会显示你连接到的节点数,那么接下来应该设法让 DHT 节点数量变多,或者你没有连接到任何 DHT 节点,这时通常打开一个热门种子,进行上传或下载,基本上能很快连入 DHT 网络。
那么什么算是热门种子呢,当前热门的电影音乐书籍哪怕是小黄片其实都可以,或者你直接去 Ubuntu 等主流 Linux 系统发行版的官网下载页,这些系统镜像一般在官网都提供有 torrent 分发。
对于 qBittorrent ,在高级设置中你可以修改 DHT 引导节点(DHT Bootstrap Nodes),所以你可以把其他几个 BT 客户端的节点也添加进去:
dht.libtorrent.org:25401, dht.transmissionbt.com:6881, router.bittorrent.com:6881, router.utorrent.com:6881, dht.aelitis.com:6881
对于 DHT 网络工作效率有影响的设置主要是高级设置里的节点缓存最大值,qB 的默认为500,如果你的 qB 安装在 nas 或者路由器上之类不会经常关机的地方,可以调大这个限制缓存更多节点记录。
不过如果你的电脑每天关机的话这么改没什么用,增加引导节点通常也意义不大,不过每个人的网络环境都不一样,这种事情反正吧万一呢。
搞到 IPv6
好了,今天特意 BB 了这么一大篇就是为了说这个事情,为这盘醋专门包的这顿饺子。
上面说的这一大堆,,总之都不重要,现代的 BT 下载器中 Tracker 的存在并不重要,DHT 与 PEX 一般也默认开启。
真正决定你的下载速度能不能飞起来的,是你网络的连通性。
因为国内的互联网起步时间较晚,所以 IPv4 资源紧张,于是我们大部分人的宽带都属于 NAT 大内网,为了提高连通性,这就需要用上 IPv6 ,IPv6 通常是公网直连。
那么丑话放在前面,你路由器背面标签上写着的你设备的默认密码之类的基础知识这里就不讲了,具体型号的具体教程网上多的是,如果真需要从这种步骤开始讲那我需要给你补的课可能就有点多了,我的建议是放弃治疗。
如果你的宽带是光纤宽带,并且不是什么集团网校园网之类特殊套餐,另外,一些例如公寓之类的住所,当地物业可能也是不让你直接叫运营商进行宽带安装施工的,或者只能通过已经入户的网线用网之类的,这都属于没招的情况,所以这里说的情况只针对普通家庭宽带。
一般运营商给你的光猫都能拿到一个 IPv6 ,部分运营商的光猫里有IP模式设置,需要手动开启 IPv6 ,确保IP模式为“IPv4 & IPv6”即可。
测试你的公网 IPv6 能不能用,只要访问一下:
IPv6 的资源是不缺的,一般都有,没有的要也会给。
没有 IPv6 或者你也没在运营商的光猫里找到设置,可以直接给运营商打电话,100XX,一般都是会给的,运营商后台可以远程操作到你的光猫,能帮你直接做一些设置。
考虑到客服这个行业的存在本身就是为了给你添堵的,实在不行呢,可以上一点社交手腕了,就说你要报修,理由例如需要挪一下路由器位置改线或者你B站之类的网站打不开之类的。这时候运营商一般会把工单转发到你本地的网络管理员,管理员会打电话联系你,具体你什么需求可以和网管说。
总之不要和100XX的客服提 BT 下载或者 DDNS 之类的事情以及需求,因为这东西涉及到 PCDN 等上传行为限制了,这东西是有政策在,给你否了很正常。至于 PCDN 这个事情,上面政策本来是好的,就是下面执行歪了,具体就不细说了,能直接和客服要到本地网管的电话也行,反正你什么需求直接和网管说。
考虑到网管也是牛牛马马,如果是比较好说话的管理员,可能你能要到你光猫的超级密码,有超级密码后面的事情会方便一些,不过没有也没事,取决于你接下来要使用的连接模式。
那么接下来,
如果你直接用运营商光猫作为你的主路由器,那么直接把你运行 BT 软件的设备插到光猫上。
如果你用自己的路由器,那么首先得改一下桥接,为了方便描述,你的一级路由就是你的光猫,二级路由就是你的主路由器。
我简单说明两种连接模式需要的设置。
改桥接的话一般电信和联通都可以,但是移动和广电够呛,因为电信和联通一般都是会给你宽带账号密码的,就是默认你有这个需求。
光猫改桥接:能要到超级密码或者网管能帮你操作的话,最好就是直接把光猫改到桥接模式,光猫只负责光转电,具体路由和拨号用你自己的主路由器,这样性能最好。需要注意的地方如下:
- 在路由器设置 PPPoE 拨号,不然你整个网络是上不了网的。
- 开启路由器的 IPv6 ,一般你能买到的各种牌子的路由器 IPv6 获取是默认关闭的,上网方式设置里一般是“SLAAC”或“DHCP”,不懂的建议设置为自动。
- 改防火墙设置,可以直接关闭 IPv6 防火墙,但是不建议,毕竟这样不安全,建议只放行 BT 软件监听的端口。
二级路由中继:改不了桥接的话,还有 Plan B ,把你自己的路由器工作模式改成中继模式,或者一些路由器里这个设置是在LAN口设置里改成混合模式,光猫负责光转电、路由和拨号这些全部工作,这会导致你主路由器失去一些功能,不过影响不大,毕竟二级路由的主要作用是提供 WiFi 。
改中继模式的话,需要注意的地方如下:
- 改成中继模式后你网络中的所有设备将会由上级光猫进行路由通告服务(DHCP),这会导致你在网络中的所有设备重新分配到光猫的内网网段和网关,切换模式的时候记一下,防止你接下来找不到你的主路由了。
- 在一些 OpenWrt 、 iStoreOS 等比较高级的路由系统里,可能还需要关闭一些 DNS 的高级设置,例如关闭“过滤IPv6 AAAA记录”,这样 IP 解析域名做 DDNS 之类的操作时才能用。
- 在一些 OpenWrt 、 iStoreOS 等比较高级的路由系统里,需要关闭独立防火墙,尤其取消“ IP 动态伪装”这样的WAN口设置。
- 因为没有桥接,所以需要改光猫的防火墙设置,因为运营商光猫的固件没有那么细节,但是直接关闭 IPv6 防火墙一般是可以的,不同牌子的路由器对这个选项叫法不同,有些直接叫防火墙,还有些牌子的路由器叫 IPv6 SPI ,具体的可能需要自己查查这个设置藏在哪儿了。
然后对于防火墙设置补充一些说明:
一般的路由器 IPv6 防火墙和 IPv4 防火墙是分开设置的,就算是关闭也建议只关闭 IPv6 防火墙,很多攻击脚本和端口扫描脚本都是针对 v4 的。
具体的防火墙策略选择“允许合法的 WAN 侧访问”即可,不需要允许全部广域网访问。
开启 uPnP 端口映射
传统用于 IPv4 NAT 网络穿透的 UPnP ,在 IPv6 是非必要的。
只要能够让主路由的 IPv6 防火墙只要允许入站连接,就可以通过 IPv6 前缀委托(DHCP-PD)无状态自动地址(SLAAC)给你网络中的所有设备分配出来直接访问的地址。
但是没有 IPv6 的情况下,或者你的光猫能获取到 IPv6 ,但是你不想要改中继模式失去路由器的功能,就得从 uPnP 想想办法了。
不管改不改桥接,如果仍然能给光猫改成桥接是最好的,因为这样网络拓扑能少一层。
同时,为了优化性能,可以改一下路由器的 NAT 类型,将NAT类型设为 NAT1 (完全锥形NAT)性能会好些,具体设置位置自己查吧。
在你的主路由上设置 uPnP 自动映射端口,这个功能一般在路由器的高级设置里。
这个 uPnP 功能,简单来说就是一次转发,把一个设备的指定端口数据转发到路由器自己的端口上,相当于跳过主路由自己的这一层拓扑。
在设置中的“目标端口”栏留空,就可以允许所有端口,或者也可以设置成自动映射。
一些路由器不允许你使用自动 uPnP ,所以可能需要手动设置端口映射表,设置一个端口或者端口段,然后再到BT软件中进行一些设置。
在 qBittorrent 中,设置在“选项 -> 连接”,勾选“使用UPnP/NAT-PMP端口转发”,然后把连接的端口的填写为你映射的端口。
在 比特彗星 中,选项 -> 网络连接”里,勾选“添加UPnP端口映射”。
番外1:神秘代码
对于磁力头,也就是 magnet:?xt=urn:btih: ,这是一种和 HTTP 类似的链接格式,和 HTTP 链接一样,磁力链接本身也是通过冒号、路径、问号格式的协议名称和参数列表,至于格式具体的定义这里就不详细讲了,因为除了这一种都在用的磁力头,其他的格式实际上也根本没人用。
总之,在磁力头的后面填上一段哈希值,再把完整的链接交给 BT 客户端,你就能下载到文件了。
至于这个哈希值,简单来说就是一个torrent文件的哈希值。那么,如果你暂时不准备下载这个资源,那我不建议你把磁力链接保存起来作为找到这个资源的“凭据”,因为磁力链接本质仍是链接,你仍然需要获取元数据,最好的情况下你应该保存文件的元数据,也就是种子(.torrent文件)。
磁力链接需要花一点时间在 P2P 网络中是动态获取对应的元数据,但只有在你有了元数据的情况下你才算是开始了下载,在过了一段时间后,你卡在“获取元数据”是很常见的情况,毕竟你不能确保你当下能连接到的其他人也正好有这份元数据。
而种子文件里至少有完整的文件标题、文件大小、目录树等记录,通过种子你可以直接开始下载,或者必要的时候你可以直接阅读这个种子查看里面是否有你需要的文件。
不过作为会看到本贴的人的一点奖励,所以我额外讲讲冷知识:
磁力链接的“xt=urn:btih:”的两个参数,其中 urn 的全写为 Uniform Resource Name ,所以这个参数也可以是 url (Uniform Resource Locator),这个参数用于区别链接标识的是一个文件的位置或是名称。至于 btih 支持的参数其实还有 ed2k 和一些其他的下载协议。
磁力链接其实还支持很多别的参数,如 xl 是 eXact Length (字节大小)这个这个参数用于提供给客户端验证是否下载到了损坏或虚假的文件,dn 是文件名(Display Name),tr 是这个种子需要连接到的Tracker地址, so 是选择器(Select Only)你不想下载全部文件的时候这个参数用于控制指定下载哪几个文件。
磁力链接的哈希值有两种写法,一种是全小写字母和数字,需要40个字符,这是标准的16进制格式,叫做 Hex 格式。还有另一种全大写字母和数字的“压缩格式”,是32个字符,叫做 Base32 格式。这两种哈希值是可以互相转换的,并且本质也没有区别。
当然了,上面说的这些知识高考不考,而且你也不需要亲手去添加这些参数,因为客户端通过 GUI 的方式帮你处理了。
番外2:BT中常见术语及解释
在一些社区、发布页之类地方浏览或者发表评论的时候,以及 BT 软件中,可能会涉及到一些术语,这里顺带提供一点集中解释。
client:字面意思的客户端,相关讨论中里一般泛指所有 BitTorrent 协议的程序。
torrent/completedir:Completedir 是官方版的制作 .torrent 文件的软件,不过所有的客户端都支持制作种子文件,制作过程中,需要为种子添加 Tracker 服务器地址。
seed:做种,在制作完 .torrent 文件后,就是将这个种子文件发布在例如 Nyaa 之类的发布站,用 BT 客户端进行上传,这个过程就是做种。上传的客户端会被加进 Tracker 服务器的列表,其他人从发布站获取到了种子就能开始下载文件了,新种做种阶段 Tracker 和发布站还是非常重要的,毕竟这时候你的种子还没有人知道。
announce:发布,让全世界知道你已经发布文件了,别人可以来下载了。
peers/leechers:正在下载但未完成的用户总称。
re-seed:补种,下载并下完的人没有从客户端中删除这个种子,客户端就会自动进入补种,帮助其他没有下完的人。
hash:哈希,在 BT 的下载中,hash这个词主要指的是验证文件的完整性,或者作为判断不同文件的标志。hash 本身是一类算法,用途是用一小段数据来标识容量一个很大的文件数据,用以验证文件的完整性。
SHA1 hashing:SHA1 指的是 BT 使用的 hash 算法名称。
health/availability:健康度,BT 里的健康度用来描述文件内容的分布情况,涵盖了种子、分享者、下载者及其比例等所有因素的综合状况。健康度会根据你能连接到的其他下载用户的数量而变化,在比较古老的 BT 软件,这个功能被叫做“等效种子数”,不过不重要,总之数字越大越好。
健康度这个指标,会根据你能连接到的其他下载用户的数量而变化。简单来说,假设一个种子的健康度只有89%,那就意味着你只能下载到所有文件的89%,所以健康度至少超过100%你才能下载完整的文件。或者说健康度就是网上存在的占你尚需要的部分的百分比,如果你正在做种,还没出种的时候(网上的文件不全),健康度就是网上存在的部分能拼凑出来的占总的大小的百分比,如果到健康度100%了,也就是出种了。
Peer列表的IC标志:在 BT 软件上传下载的时候,你可以查看当前连接到你的用户列表,列表中有一列标识栏,或者一些客户端后面会有 [] 的标签,这东西的意思很简单,分别表示如下:I -- 需要下载; C -- 不给上传; i -- 需要上传; c -- 不给下载。