OpenWrt 网页端访问缓慢排查与解决教程

OpenWrt 网页端访问缓慢排查与解决教程

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 配置不完整引发的卡顿。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容