OpenWrt 网页端访问缓慢排查与解决教程
1. 问题现象
-
在局域网内访问 OpenWrt 管理页面(如
https://192.168.2.254/cgi-bin/luci/admin/status/realtime)时,页面加载极慢,甚至卡死。 -
重启路由器或更换浏览器后问题依旧。
2. 常见原因
-
浏览器缓存/兼容性问题:Chrome 等浏览器对旧版 LuCI 静态资源处理不当。
-
Web 服务或 RPC 服务阻塞:
uhttpd或rpcd进程异常。 -
IPv6 配置不完整:OpenWrt 启用了 IPv6,但上游网络未正确分配 IPv6 地址,导致连接外部资源超时(如插件更新、状态检查)。
-
路由器自身网络不通:WAN 口未获取到 IP 或无法访问外网。
-
虚拟化环境问题(如 PVE):宿主机网络未正确传递 IPv6 或防火墙阻挡。
3. 排查步骤
3.1 基础检查(最快验证)
-
更换浏览器:使用 Edge、Firefox 或 Safari 访问,若流畅则问题在浏览器兼容性。
-
清理浏览器缓存:清除 Chrome 等浏览器的缓存后重试。
3.2 重启核心服务
通过 SSH 登录 OpenWrt,执行:
/etc/init.d/rpcd restart /etc/init.d/uhttpd restart
3.3 检查路由器网络连通性
在 OpenWrt SSH 中执行:
ping -c 4 114.114.114.114 nslookup baidu.com
-
若 ping 不通 → WAN 口网络不通,检查物理连接、接口配置。
-
若 nslookup 失败但 ping IP 正常 → DNS 问题,检查
/etc/resolv.conf或 WAN 口 DNS 设置。
3.4 检查 IPv6 状态
-
查看 WAN6 接口是否获取到 IPv6 地址:
ifconfig | grep -A 5 wan6
-
若没有公网 IPv6 地址(以 2001: 或 240e: 开头),但 OpenWrt 启用了 IPv6,则可能造成超时。
3.4.1 临时关闭 IPv6 测试
编辑 /etc/config/network,找到 config interface 'wan',将 option ipv6 'auto' 改为 option ipv6 '0',保存后重启网络:
/etc/init.d/network restart
若页面恢复流畅,则确认为 IPv6 问题。
3.5 深入排查 IPv6 问题
3.5.1 在 OpenWrt 上彻底关闭 IPv6(无需 IPv6 时)
编辑 /etc/config/network,将 WAN 口 ipv6 设为 0,并可选在 /etc/sysctl.conf 中添加:
net.ipv6.conf.all.disable_ipv6=1
执行 sysctl -p 生效。
3.5.2 如需使用 IPv6,修复上游网络
如果 OpenWrt 运行在 PVE/ESXi 等虚拟化环境中,需检查宿主机的 IPv6 配置。
在 PVE 宿主机上:
-
查看 IPv6 地址:
ip -6 addr show vmbr0
-
若只有
fe80::链路本地地址,说明未获取公网 IPv6。 -
检查 IPv6 是否被禁用:
sysctl net.ipv6.conf.vmbr0.disable_ipv6返回
0表示启用。 -
检查是否接受路由通告(RA):
cat /proc/sys/net/ipv6/conf/vmbr0/accept_ra若为
1,需改为2(因为 PVE 开启了 IPv6 转发,accept_ra=1无效)。 -
永久设置
accept_ra=2:echo "net.ipv6.conf.vmbr0.accept_ra = 2" >> /etc/sysctl.d/99-ipv6.conf echo "net.ipv6.conf.all.accept_ra = 2" >> /etc/sysctl.d/99-ipv6.conf echo "net.ipv6.conf.default.accept_ra = 2" >> /etc/sysctl.d/99-ipv6.conf sysctl --system
-
重启网络或接口:
systemctl restart networking # 或 ifdown vmbr0 && ifup vmbr0 -
再次检查 IPv6 地址,应出现公网地址。
检查防火墙
在 PVE 上执行:
ip6tables -L -n -v
若规则阻挡,可临时放行测试:
ip6tables -P INPUT ACCEPT ip6tables -P FORWARD ACCEPT ip6tables -P OUTPUT ACCEPT ip6tables -F
安装诊断工具
apt install ndisc6 tcpdump
-
手动发送路由器请求:
rdisc6 vmbr0 -
抓包查看 RA:
tcpdump -i vmbr0 -v -c 10 'icmp6 and ip6[40] == 134'
3.6 上游路由器检查
-
确认物理路由器/光猫已开启 IPv6,并启用了路由通告(RA)。
-
可尝试将一台电脑直接连接到同一网络,看是否能自动获取 IPv6 地址。
4. 解决方案总结
4.1 不需要 IPv6
-
在 OpenWrt 中关闭 IPv6(修改
/etc/config/network中 WAN 口ipv6为0,并禁用系统 IPv6)。 -
管理页面立即恢复流畅。
4.2 需要 IPv6
-
确保从物理路由器到虚拟化宿主机(如 PVE)的 IPv6 网络通畅。
-
在宿主机上正确配置
accept_ra=2并重启网络。 -
在 OpenWrt 中重新启用 IPv6(
option ipv6 'auto'),页面卡顿问题应消失。
5. 注意事项
-
修改网络配置文件前建议备份。
-
在 PVE 上调整网络可能短暂断开 SSH,建议从本地控制台操作或使用
screen。 -
防火墙规则修改后记得恢复生产配置。
6. 附录:常用命令速查
| 目的 | 命令 |
|---|---|
| 重启 OpenWrt 网络 | /etc/init.d/network restart |
| 查看 IPv6 地址 | ip -6 addr show |
| 设置 sysctl 永久生效 | 写入 /etc/sysctl.d/99-ipv6.conf 后执行 sysctl --system |
| 测试 IPv6 连通性 | ping6 -c 4 2400:3200::1 |
| 抓取 RA 报文 | tcpdump -i vmbr0 -v -c 10 'icmp6 and ip6[40] == 134' |
通过以上步骤,你可以系统性地定位并解决 OpenWrt 网页端访问慢的问题,特别是由 IPv6 配置不完整引发的卡顿。




暂无评论内容