luozu
V2EX  ›  路由器

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

  •  
  •   luozu · 12 days ago · 962 views

    路由器是 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 问题

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

    2 replies    2026-05-02 18:31:46 +08:00
    ztmzzz
        1
    ztmzzz  
       11 days ago via iPhone   ❤️ 1
    有用过 r2s r4s 这种软理由,也是 arm 的,遇到的情况类似。虽然 cpu 占用不高,但是速度就是上不去。解决方案是换个更好的 cpu ,限速就解决了。
    luozu
        2
    luozu  
    OP
       11 days ago
    @ztmzzz
    已解决,我到死都没想到,竟然是 Openwrt 默认的内核缓冲区太小导致的问题,我没想到这么低级。而电脑转发过来的流量是直接经过硬件转发的,所以没有这个问题。

    https://github.com/LiBwrt/openwrt-6.x/issues/333
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1185 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 204ms · UTC 17:46 · PVG 01:46 · LAX 10:46 · JFK 13:46
    ♥ Do have faith in what you're doing.