[路由器] 路由器上遇到一个非常诡异的问题,走核心 Direct 限速 50Mbps

路由器是 AX5 CPU qualcommax/ipq60xx ARMv8 Processor rev 4 (v8l) x 4 (1512.0MHz) Openwrt 版本 ImmortalWRT SNAPSHOT r0-6c58033 / LuCI Master 26.114.29056~eafcf1c / DaeWRT-26.04.27-11.42.25 带硬件 NSS ,已开启 CPU 性能模式,底座带风扇

路由器是前段时间刚刷好的,里面没装任何其他乱七八糟的插件等,以及 QOS

以下所有下载/测速都指的是单线程下载/测速 且多次验证,非一次测试,而是每次都是这个速度,可复现的下载速度

背景

家里以前是直接用的硬路由拨号(传统的家用路由器,没有科学功能的那种),因为最近倒腾了一个 AX5 就准备换成 Openwrt 。但为了防止不稳定,我就只挂在上面的说的硬路由后面,当做一台独立的路由器供我自己使用(意思就是开了 DHCP ,单开了一个独立的网段)。我只有自己的主力电脑使用这台 AX5 上网,其他设备均直接使用的前面所说的硬路由器

问题初现

没用几天,我就发现,我自己经常使用的测速网站,速度只能跑到 50Mbps ,这个测速网站是我自己搭的,优化线路,单线程至少能跑到 250Mbps 以上。注:只有一个 IP 路由器的分流规则设置了该 IP 和域名都走直连出去

随后我使用,其他设备进行测速,发现只有我这台接在 AX5 的电脑速度上不去,其他直接接入拨号硬路由的都能跑上去

排查

AX5 上是开了 nikki 的,使用的 fakeip 模式,tproxy 劫持的 TCP/UDP ,电脑测试能跑单线程测速在 150-220Mbps 左右,协议是 vless hy2

1.排查是否走直连

我最开始也是怀疑的是不是配置的有问题。我打开 mihomo 内核 web 管理面板,测速的时候链接日志显示的确实是走的“Direct”直连出去的,代理节点也是没跑流量(我专门去节点的 VPS 上看了,测速的时候不是走的节点流量)

2.排查 nikki

确定是走了直连,而不是走代理后。我想着直接把 nikki 停了吧,看看不开插件直接跑,能跑多少 关闭 nikki 后我发现速度完全正常了。这下主要怀疑对象变成了 nikki

3.排查 mihomo

为了剥离 nikki(内核版本为 v1.19.24)的配置带来的问题。我直接去 mihomo github 上下载了mihomo-linux-arm64-v1.19.24.gz 并裸核运行,我的配置也很简单,我也不用什么 TUN/TProxy 了,我直接开一个入站的 socks5 代理,路由直接 match,direct ,即所有从这个 socks5 进入的流量,全部直接原样直连发出去,随后我在电脑上使用 curl 通过路由器上的这个 socks5 代理,直接单线程下载我服务器上的测速文件,还是死死的卡在 50Mbps ,使用 Firefox ( Firefox 可以指定 socks5 代理)去测速也是这个速度

现在的怀疑对象又变成了 mihomo ,我又去下载了 Xray-linux-arm64-v8a.zip 也是做了上述同样的配置进行测速,还是卡在了 50Mbps 。这两次测试的时候我去看了 Openwrt 的 CPU 占用,只有 5-10%

↑↑↑上述测试,每次测试前后,均会在另一台接在拨号路由下的电脑上做一次测速(均跑在 250Mbps 以上)↑↑↑

4.后续测试

这下给我整蒙了,一个原本直连能跑 250Mbps 的测速网站,走代理内核绕一圈 Direct 出来,就只有 50Mbps 了?关键代理节点的速度轻松跑到 100Mbps 以上

我又做了一些测试,关闭/开启 硬件流量卸载,关闭/开启 FullCone NAT ,均无任何效果

后面我做测试的时候,又还发现了一个奇怪的现象 路由器上关闭所有代理软件,电脑上使用 curl 直接下载我服务器上的测速文件,多次测试,每次均能跑到 250Mbps 以上

此时在路由器上同样使用 curl 直接下载我服务器上的测速文件,速度却也卡在 50Mbps 左右,此时 Openwrt 的 CPU 占用也非常的低 5-10%,多次测试也是这个速度,没有一次超过这个速度的

我想着那我找个别的国内下载链接,在路由器上直接使用 Curl 下载测速一下,看看能不能跑起来

curl -L "https://dlied4.myapp.com/myapp/1104466820/cos.release-40109/10040714_com.tencent.tmgp.sgame_a2480356_8.2.1.9_F0BvnI.apk" --output /dev/null

结果这个测速在路由器上能跑到 200Mbps 以上

出于好奇,我又打开了前面我跑的裸核mihomo-linux-arm64-v1.19.24 同样是直接使用 socks5

curl -L "https://dlied4.myapp.com/myapp/1104466820/cos.release-40109/10040714_com.tencent.tmgp.sgame_a2480356_8.2.1.9_F0BvnI.apk" --socks5 192.168.10.1:7890 --output NUL

这个连接同样是经过 mihomo 内核,Direct 直连发出去的,却能跑到 200Mbps 以上。我立刻又去测了我的测速连接,仍然卡在 50Mbps

这就很奇怪了,我想着是不是 SSL 的问题,我直接使用 http 进行测试也仍是 50Mbps ,排除了 SSL 问题

这次是真的没招了,有没有遇到同样情况的?