V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
coreJK
V2EX  ›  OpenWrt

记一次 OpenWrt 后台登录问题排查与修复

  •  
  •   coreJK · 2 天前 · 316 次点击

    前言

    回到家,突然发现路由器后台又无法登录,提示“无效的用户名/密码”

    用户名密码正确却无法登陆

    太频繁了,一周已经出现三次了…… 想起最近 Nginx 爆出的漏洞,而且自己的路由又开了 ipv6 用于远程访问,顿时心头一紧 于是赶紧尝试登录 SSH ,能正常连接 周一出现问题这个的时候,重启解决了,但总是重启也不是办法,于是开始着手解决这个问题

    故障排查

    环境如下,设备是作为主路由接入了光猫

    • 硬件型号:FriendlyElec NanoPi R2S
    • 运行内存:1GB
    • 设备环境:OpenWrt (Snapshot 24.10 分支),架构为 Nginx + uWSGI + LuCI ,使用 Argon 主题。
    • 关键组件:Docker, Lucky, Passwall, ddns-go, Homebox 。

    尝试了一下后台 ssh 登陆,登陆成功,排除了用户名和密码错误的情况,于是我做了如下排查:

    怀疑浏览器缓存:清理浏览器缓存、无痕模式登陆、清 Cookie 后登录 -> 无效

    怀疑存储空间满:df -h 检查 /overlay -> 空间充足

    df -h
    

    空间充足

    怀疑 luci 或者 Nginx 挂了:清理 luci 缓存、重启 Nginx -> 无效

    # 清除 LuCI 的模块缓存
    rm -rf /tmp/luci-modulecache/* 
    # 清除当前所有网页登录会话
    rm -rf /tmp/luci-sessions/* 
    # 重启 uwsgi 服务
    /etc/init.d/uwsgi restart 
    # 重启 Nginx 
    /etc/init.d/nginx restart
    

    关键线索:RPC 报错

    没招了,问了一下谷歌 Gemini Ai ,它建议我切换一下主题

    # 修改配置文件将主题改回 bootstrap 
    uci set luci.main.mediaurlbase='/luci-static/bootstrap'
    uci commit luci 
    /etc/init.d/uwsgi restart
    

    切换回 BootStrap 后,刷新进入后台,出现了一个关键报错信息

    RPC Error: RPC call to luci/getFeatures failed

    BootStrap 主题出现报错线索

    原来是 RPC 服务出问题了,于是先重启 rpcd 服务

    执行重启命令:

    # 重启 rpcd 服务
    /etc/init.d/rpcd restart
    # 重启 uwsgi
    /etc/init.d/uwsgi restart
    

    再次刷新后台,能够登录了!

    但是页面一直在加载,无法操作……过两分钟又让我强制登录,且提示密码无效

    登陆成功无法加载后台

    回到后台,输入 top 命令查看,想看看有哪些服务在运行 一看吓一跳,Homebox 怎么在疯狂吃内存啊,还有 ddns-go 和 netdata top 发现占用高的进程

    看来是 Homebox 这几个应用消耗了大量内存,导致系统的 rpcd 、uwsgi 这些服务被干掉了概率比较大

    于是先把 HomeboxNetdata 这些服务停止

    # 停止 Netdata
    /etc/init.d/netdata stop 
    # 停止 ddns-go (动态域名) 
    /etc/init.d/ddns-go stop
    # 停止 homebox (宽带测试)
    /etc/init.d/homebox stop
    

    然后清理缓存、重新启动 Rpcduwsgi 服务

    # 再次清理缓存
    rm -rf /tmp/luci-modulecache/*
    rm -rf /tmp/luci-indexcache
    
    # 重启核心服务
    /etc/init.d/rpcd restart
    /etc/init.d/uwsgi restart
    

    刷新浏览器……OK ,成功登录后台了~ 登陆后,把主题改回来测试了两天,关闭了 homebox 顺便修改了 ddns-go 的检测时间,从 5 分钟修改到 1 小时 然后给 ddns-golucky 大吉也升级到了最新版本(用新 bug 打败旧 bug 截止目前,暂时没有问题

    避坑总结

    一开始以为是浏览器缓存的问题 看来还是 R2s 的机器性能不够,跑个科学,再加上 ddns 、docker…… 日常运行内存占用得有 40 ~ 50%,docker 我也没启动 主题可能也会影响,所以性能不够的机器,还是用简单一些主题吧

    由于 OpenWrt 的 Argon 主题在登录后会一次性拉取所有信息(温度、流量、DHCP 列表),如果系统此时很忙,rpcd 就会响应不过来。

    最后根据 Gemini 的建议,调整了 tcp 一些网络参数(可选)

    # 再次执行网络优化 (防止两分钟后断连)
    sysctl -w net.ipv4.tcp_tw_reuse=1
    sysctl -w net.ipv4.tcp_fin_timeout=15
    

    希望能帮到遇到相同问题的软路由网友,有遇到过相同问题的朋友欢迎评论区交流~ 以后得上个运行内存大点的软路由,或者上 x86 了(

    5 条回复    2025-12-22 15:02:50 +08:00
    abolast
        1
    abolast  
       2 天前
    无法理解为什么要用 nginx ,自带的 uhttp 不好么,我用这个加了好几个静态站点了
    cyp0633
        2
    cyp0633  
       2 天前
    全程都在用手机连那可以说很赶了
    coreJK
        3
    coreJK  
    OP
       2 天前
    @abolast #1 自带的 uhttp 之前也试过,没成功,所以切换到自己熟悉一些的 nginx 上了
    coreJK
        4
    coreJK  
    OP
       2 天前
    @cyp0633 #2 哈哈哈被发现了
    coreJK
        5
    coreJK  
    OP
       2 天前
    @abolast #1 然后 nginx 配置证书啥的也方便一点(不过后面再折腾可能考虑用 candy 了)
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:18 · PVG 04:18 · LAX 12:18 · JFK 15:18
    ♥ Do have faith in what you're doing.