这件事还要从上周的那个暴风雨的夜晚说起。当时,我正用奇怪的姿势躺在椅子上看《天魔大国境》,外面唰唰地下着雷雨。突然,显示器就灭了,边上的风扇也停了。原来,是暴雨太大损坏了线路,镇上大部分村都停了电。山区里发生这种情况司空见惯,我也就没当回事,所以直到第二天我才发现了不对劲的地方:网络 broken 了。

具体的状况是:路由器系统灯正常、网络灯异常;WiFi 异常;有线设备网络时有时无;通过中枢网关连接的智能家居设备无法正常使用。

有网、路由器却不能用。所以我初步判断,可能是路由器坏了。我使用的路由器是 WR30U,这是联通基于小米 AX3000 的运营商定制版,我的宽带却是移动的,据说使用非联通宽带会有被锁机的可能。而正巧最近 WR30U 的免拆机刷机方案出来了,锁机不可能把硬件层锁住吧?换个软件应该是可以破除锁机的,我也想试试看到底这 OpenWRT 使用效果如何,所以就决定先刷机

给 WR30U 刷机

刷机方面,我参考的是酱紫表的《小米 WR30U 解锁 SSH 刷 openwrt,最有性价比的百元路由器》。教程事无巨细,工具也提供得十分齐全。但是仍有两点需要注意到的地方,教程中没有提及。

  • 网络属性需要设置为专用网络1

    如果不将网络设置为专用网络,就会在执行 python server_emulator.py 后一直卡在 Waiting for device 动弹不得。

    具体解决办法就是在 网络和 Internet 里将这个网络设置为专用网络

    如果这里没有设置选项,可以使用快捷键 WIN+R 打开运行,键入 secpol.msc 打开 本地安全策略,在 网络列表管理器策略 里将这个网络修改为专用。

  • 执行 SSH 连接命令时,可能需要将命令改成这样2

    ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa root@192.168.31.1

    按原命令直接操作,可能会出现如下报错:

    Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa

    这是 PC 系统中的 OpenSSH 版本太高的缘故。

    另外,如果你有使用 Host 的方式连接,也可以写成这样:

    Host WR30U
      HostName 192.168.28.1
      User root
      Port 22
      HostKeyAlgorithms +ssh-rsa
      PubkeyAcceptedKeyTypes +ssh-rsa

    再执行 ssh WR30U 就可以连接上路由器的 ssh 了。

之后,按照教程中的说明在 UBoot 中上传 QWRT 的固件,等待重启,就可以进入 QWRT 的后台了。

QWRT 的 UI 还是挺好看的。

但是!OpenWRT 我不会用啊……折腾了一整个晚上,都没能搞定在这上面使用 AdguardHome 和 OpenClash。更重要的是,网络还是不能用……

这下没辙了。OpenWRT 又不会用,网也没好,我就只能再刷回原厂系统去,然后思考下一步的对策。

于是,我把目光转向了我 PC 的网络环境上。

重置 WIN11 网络

想对电脑的网络动刀子由来已久。很早之前就不知道什么奇奇怪怪的原因,不开启 TUN 模式的话,Clash 就没网。却又会因为 Clash 自身的虫子,开启 TUN 模式时,电脑休眠重新唤醒之后,Clash 会制造大量的网络连接,占用 CPU 进程,导致电脑卡顿。

所以,在 WIN11 中找到 网络重置 后,我就把网络给格式化了。重置后需要重启系统。

顺带重置了下 Clash for Windows。

可是!网络还是不行……

这下丈二和尚——摸不着头脑了,既跟路由器无关,也和电脑自身没有关系,难道是雷把光猫劈坏了?确实有这个可能吧?于是我打通了 10086 宽带报障,等工作人员上门排查。

场外求救:宽带报障

负责我们这座山的工作人员冒着雨来到了我家,我向他阐述了最新发现的故障的大概情况:「连接电脑没问题,可是再连上一台 NAS,网就不行了」。他查看了宽带后台系统,我这宽带的光猫连接一切正常。而且,他对我的说明十分不解,表示并不清楚系统层的东西,为此还咨询了资历深的同事,俩人都表示对我的网络无能为力。

没办法,深山里叫人办事并不是一件容易的事,期间我一直想问他光猫后台的登录 IP,因为默认的 192.168.1.1 我已经连不上去了。但他一直装没听见……所以只能请走了他。尽管这些工作人员的专业水平参差不齐,不一定知晓所有网络故障的原因,但我却在沟通中猛然发现了问题的盲点:会是因为 NAS 吗?

排查 NAS 程序

我早就该想到这个了!只是一直觉得是网络层上的故障。经过我多次插拔 NAS 的网线,确定了「只要 NAS 一入网,网络就会掉线」的事实。

罪魁祸首就是你, NAS!!!

既然知道一切的源头是 NAS ,那排查起来就简单多了。首先我想到的是旁路由的事。之前想尝试用虚拟机安装 OpenWRT 当旁路由,但因为不会用 OpenWRT 这玩意所以很早就放弃了,不过虚拟机我没有删除。难道会是因为这个?所以我删除了虚拟机。只是,网络还是没有发生好转。

期间我又询问了从事网络相关工作的朋友,尝试了追踪路由、wireshark 抓包。但是我在这方面动手能力实在是差,也没能得出个什么结果来……

那就只剩下排查 NAS 上安装的一堆 Docker 容器了。我自己是觉得没有安装什么会影响网络的东西,有也就只能是 Clash。但单独停止 Clash 并没起到什么作用。于是决定把容器全部停掉,再一个个重启筛查。在逐一排查具体容器的时候,顺便整理了下我混乱的 docker 环境。最后,我发现,只要一启动两个 qBittorrent 容器,网络就会立马爆炸。

问题是 qBittorrent ?

所以是因为 qBittorrent ?我首先想到的是 qBittorrent 随机的端口是不是和内网里的什么服务冲突了,但修改了数次没有什么实际作用。

我又想到了 macvlan 网络的问题。为了能在群晖的 Docker 环境中用上 IPv6,我参考大佬的《使用 macvlan 为 Docker 配置 IPv6》教程配置了 macvlan 网络。有 IPv6 的 qBittorrent 下载速度超快!但一直用得好好的,雷雨之后才出现了故障。总不能是我创建 macvlan 网络的过程中出了问题吧?也不是没有这个可能性,我是个很马虎的人。但无论是重新 docker network create 创建网络,还是后来查到可能是容器的 mtu 值与路由器不一致,在创建网络的时候指定了 mtu 值,都不能让网络好转……所以问题不是出在 macvlan 上。

场外求救:万能的群友

万念俱灰。虽然我有向群友求救,但我描述的这点信息实在不足以用来定位故障产生的原因。不过,有位群友提到了可能会是 qBittorrent 连接数过高路由器性能不足 的问题,他的 qb 开起来内存就爆了,而我的也差不多是他所说的状况。

更换路由器和修改 qBittorrent 连接数是同步进行的。

更换路由器

当晚下单的 Redmi AX6000 第二天就到了,但换上之后,NAS 一接入,网照样炸……

所以不是路由器的性能问题。

修改 qBittorrent 连接数

在 qBittorrent 的连接限制中,默认的配置是「全局最大连接数:500」和「每 torrent 最大连接数:100」。

一个容器跑满是 500,两个跑满那就是 1000 个连接了,我不觉得我的路由器有羸弱到连 1000 个连接都顶不住。算上跑 PT 的 Transmission 那 200 的连接数,总共也就 1200。我也就在保持新番三四百个种子、VCB 的 BDrip 两百多种的上传而已,不至于吧……

但既然觉得是连接数的问题,网上用「qBittorrent 连接数 网络中断」搜索也确实有相似的案例。所以我把连接数改成了 200 和 80。

网还是炸……

特喵的!一气之下,重新创建了两个 qBittorrent 容器,什么种子都没有。

网好了……

好了……

了……

解决了?

所以解决了吗?并没有。就算是写着水文的现在,网络也还是会时不时地中断一下。虽然能确定是 qBittorrent 连接数过高导致的问题,但是叫我不做种那是万万不可能的。雷雨之前一切都是好好的啊!我还是觉得光猫被雷劈坏的可能性高一些,又或者被移动限制了连接也说不定,现阶段只能把分享率调低一点了……

再后来

又过了一周,有看到这篇文章的群友说「可能是光纤的光衰有了问题」。虽然我就不懂什么叫光衰,但查看光衰除了用仪器检测,另一个办法就是进光猫直接查看,光猫的管理后台是有数值的。

可是先前就提到过,我在把光猫改成桥接模式由路由器拨号后,就进不去光猫后台了。所以一通电话投诉到移动去,最后还是让小哥上了门。

山里的装维小哥是真的菜,折腾了半天都没搞明白我这网是咋回事。最后一顿操作下连原先的猫也上不了网了,因为他不会进入超级管理员的后台更换密码拨号上网,甚至不懂啥叫路由器拨号……所以他直接给我换了个新猫……

新猫是移动回收回来翻新的,出厂是2016年;而我的旧猫反倒是2019年生产的,小哥收走了我的旧猫就跑了……

后来,叫他问上头要超级密码,结果他给我发的截图……五个数字由英文数字组合,结果里面有两根竖线你根本分不清是大写的「i」还是小写的「L」……最后还是试出来了,改回了路由器拨号。

第一天 qb 下载网中断的特别厉害,可是后面网就好了很多,也是很神奇……