本篇解决一个问题:使用qbittorrent做种时,所有tracker都显示“未联系”。

1. 问题介绍

某次重启电脑后,qbittorrent所有任务都显示tracker未联系。重启qbittorrent、删除qbittorrent配置文件,都无法解决问题。

环境:

  • 操作系统:Windows 10
  • qbittorrent版本:v5.1.4

2. 问题定位

找教程的过程中,看到reddit的一个帖子:qbittorrent tracker 未联系。帖子的评论区里,有人提到端口占用的问题,特别是hyper-v。

可能我这边也和端口冲突有关系?于是我往这个方向排查。

我查看了qbittorrent的日志文件。日志文件的保存路径可以在qbittorrent的设置里找到,在qbittorrent里打开设置——选择“行为”——往下找到“日志文件”相关栏目,可以看到日志保存的路径。

打开日志后,我找到大量相似的报错,报错信息如下。在监听很多IP时,使用端口“UDP/62698”会出现访问权限不允许的情况。

监听 IP 失败。IP:“XXX”。端口:“UDP/62698”。原因:“以一种访问权限不允许的方式做了一个访问套接字的尝试。”

接下来执行命令netsh interface ipv4 show excludedportrange protocol=udp,确定是不是端口占用。果然,端口“UDP/62698”包含在排除的范围里。因为端口被排除,所以当qbittorrent监听这个端口时,会出现权限不足的情况,无法和tracker联系。

3. 解决问题

我选择修改动态端口的范围。排除端口会从动态端口里选。所以只要让动态端口的范围不包含“UDP/62698”,qbittorrent就能正常工作,不会遇到联系不上tracker的情况。

以管理员权限打开“命令提示符”,分别运行下面的命令:

netsh int ipv4 set dynamicport tcp start=40000 num=10000
netsh int ipv4 set dynamicport udp start=40000 num=10000
netsh int ipv6 set dynamicport tcp start=40000 num=10000
netsh int ipv6 set dynamicport udp start=40000 num=10000

针对ipv4和ipv6,针对tcp和udp,把动态端口的范围调整到40000起步、大小10000的范围。也就是说,把动态端口的范围调整到40000-50000。排除端口会在这个范围里挑选,所以排除端口的范围也是在40000-50000。

起步是40000、大小是10000,这两个数值可以自行调整。如果已知有些软件会用到这些端口,就避开。端口数量也不要太小,避免系统资源不足。

4. 参考资料