linuxer
linuxer
发布于 2025-12-28 / 6 阅读
1
0

OpenWrt 的 Web 管理界面(LuCI)无法访问,提示“连接被拒绝”,但 SSH 可以正常登录。

📌 问题现象

今天突然发现无法通过浏览器访问 OpenWrt 路由器的管理后台(http://192.168.9.9),页面提示:

ERR_CONNECTION_REFUSED(连接被拒绝)

但奇怪的是,SSH 依然可以正常登录

ssh root@192.168.9.9

说明路由器本身运行正常,网络也通,问题只出在 Web 管理界面上。


🔍 初步排查

登录 SSH 后,我首先检查 LuCI 相关进程是否在运行:

ps | grep luci

输出只有:

25225 root      1332 S    grep luci

这说明 根本没有 uhttpd 进程在运行 —— 而 uhttpd 正是 OpenWrt 中负责提供 Web 服务(包括 LuCI 界面)的轻量级 HTTP 服务器。

接着手动启动它:

/etc/init.d/uhttpd start

再检查状态:

/etc/init.d/uhttpd status
# 输出:running

同时确认端口监听情况:

netstat -tuln | grep :80

看到:

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

✅ 一切恢复正常!浏览器立刻就能打开管理界面了。


❓为什么会这样?

按理说,OpenWrt 默认安装后,uhttpd 是开机自启的,不应该出现“重启后 Web 打不开”的情况。

但现实中,以下原因可能导致该服务意外停止或未启动:

  1. 曾手动执行过 /etc/init.d/uhttpd disable
    即使你不记得,也可能在调试、使用优化脚本时无意禁用了它。

  2. 系统异常断电或强制重启
    导致 init 系统状态不一致,自启服务未能正确加载。

  3. 近期升级或安装插件引发配置重置
    某些 LuCI 插件安装过程可能干扰主服务配置。


✅ 解决方案 & 预防措施

1. 临时恢复(已验证有效)

/etc/init.d/uhttpd start

2. 永久修复:启用开机自启

这才是关键!执行:

/etc/init.d/uhttpd enable

这会在 /etc/rc.d/ 下创建启动链接(如 S50uhttpd),确保每次重启后自动运行。

💡 小技巧:可通过 ls /etc/rc.d/*uhttpd 验证是否已启用。

3. 终极懒人法:直接重启路由器

其实,如果只是服务卡住或状态异常,很多时候“重启路由器”就能自动恢复——因为标准 OpenWrt 固件默认是开启自启的。

所以,如果你遇到同样问题,先试试重启
如果重启后还是不行,再按上述步骤手动启动并启用自启。


📝 总结

现象

原因

推荐操作

SSH 能连,Web 打不开

uhttpd 服务未运行

1. 重启路由器(大概率解决)
2. 若无效,SSH 执行 uhttpd start && uhttpd enable

这次故障提醒我:即使是“默认开启”的服务,也可能因各种原因失效。做好关键服务的自启检查,能避免很多不必要的麻烦。


附:快速诊断命令清单

ps | grep uhttpd          # 检查进程
/etc/init.d/uhttpd status # 检查服务状态
netstat -tuln | grep :80  # 检查端口监听
/etc/init.d/uhttpd enable # 启用自启

希望这篇记录能帮到遇到同样问题的朋友!
如有疑问,欢迎留言交流 👇


本文基于真实故障记录整理,环境:OpenWrt 定制固件(AX6600-Home),2025 年 12 月


评论